機(jī)器學(xué)習(xí)簡單流程:
- 使用大量和任務(wù)相關(guān)的數(shù)據(jù)集來訓(xùn)練模型责掏;
- 通過模型在數(shù)據(jù)集上的誤差不斷迭代訓(xùn)練模型柜砾,得到對數(shù)據(jù)集擬合合理的模型;
- 將訓(xùn)練好調(diào)整好的模型應(yīng)用到真實(shí)的場景中换衬;
我們最終的目的是將訓(xùn)練好的模型部署到真實(shí)的環(huán)境中痰驱,希望訓(xùn)練好的模型能夠在真實(shí)的數(shù)據(jù)上得到好的預(yù)測效果,換句話說就是希望模型在真實(shí)數(shù)據(jù)上預(yù)測的結(jié)果誤差越小越好瞳浦。我們把模型在真實(shí)環(huán)境中的誤差叫做泛化誤差担映,最終的目的是希望訓(xùn)練好的模型泛化誤差越低越好。
我們希望通過某個信號來了解模型的泛化誤差叫潦,這樣就可以指導(dǎo)我們得到泛化能力更強(qiáng)的模型:
- 使用泛化誤差本身蝇完。這是很自然的想法,我們訓(xùn)練模型的最終目的就是希望模型的泛化誤差最低矗蕊,當(dāng)然可以使用泛化誤差本身來作為檢測信號短蜕。如果泛化誤差小的話還可以接受,但是通常情況下沒有那么幸運(yùn)傻咖,泛化誤差可能很大朋魔,這個時候你肯定會將部署的模型撤回,重新訓(xùn)練没龙,你可能需要部署和訓(xùn)練之間往復(fù)很多次铺厨,這種方式雖然能夠更好的指導(dǎo)我們的模型,但是成本和效率非常的差硬纤;
- 使用模型在數(shù)據(jù)集上訓(xùn)練的擬合程度來作為評估模型的信號解滓。但是往往我們獲取的數(shù)據(jù)集并不是完全的干凈以及有代表性,通常我們獲取到的數(shù)據(jù)集可能很少筝家、數(shù)據(jù)的代表性不夠洼裤、包含太多的噪聲或者是被一些無關(guān)特征污染,我們獲取到的數(shù)據(jù)集或多或少都會有這些問題,那么模型對訓(xùn)練數(shù)據(jù)集的擬合程度不能指導(dǎo)泛化誤差敢靡,也就是說訓(xùn)練的時候擬合的好并不代表模型的泛化誤差就小截汪,你甚至可以將模型在數(shù)據(jù)集上的誤差減小到0癣疟,但是因?yàn)閷δP陀?xùn)練時候的數(shù)據(jù)集往往不干凈,所以這樣的模型并不代表泛化能力就強(qiáng)兆龙。
1.訓(xùn)練集與測試集
前面說到我們既不能通過直接將泛化誤差作為了解模型泛化能力的信號宛官,因?yàn)樵诓渴瓠h(huán)境和訓(xùn)練模型之間往復(fù)媒咳,代價很高迹缀,也不能使用模型對訓(xùn)練數(shù)據(jù)集的擬合程度來作為了解模型泛化能力的信號使碾,因?yàn)槲覀儷@得的數(shù)據(jù)往往不干凈。
更好的方式就是將數(shù)據(jù)分割成兩部分:訓(xùn)練集和測試集祝懂。我們可以使用訓(xùn)練集的數(shù)據(jù)來訓(xùn)練模型票摇,然后用測試集上的誤差作為最終模型在應(yīng)對現(xiàn)實(shí)場景中的泛化誤差。有了測試集砚蓬,我們想要驗(yàn)證模型的最終效果矢门,只需將訓(xùn)練好的模型在測試集上計(jì)算誤差,即可認(rèn)為此誤差即為泛化誤差的近似灰蛙,我們只需讓我們訓(xùn)練好的模型在測試集上的誤差最小即可祟剔。
這里有幾點(diǎn)需要注意:
- 通常將數(shù)據(jù)集的80%作為訓(xùn)練集,20%作為測試集缕允;
- 通常需要在開始構(gòu)建模型之前把數(shù)據(jù)集進(jìn)行劃分峡扩,防止數(shù)據(jù)窺探偏誤蹭越,也就是說我們避免了解太多關(guān)于測試集中的樣本特點(diǎn)障本,防止我們認(rèn)為的挑選有助于測試集數(shù)據(jù)的模型,這樣的結(jié)果會過于樂觀响鹃,但是實(shí)際上并沒有預(yù)期的那樣優(yōu)秀驾霜;
- 通常我們在構(gòu)建模型的時候需要將數(shù)據(jù)進(jìn)行處理,包括一些數(shù)據(jù)的清洗买置,數(shù)據(jù)的特征縮放(標(biāo)準(zhǔn)化或者歸一化)粪糙,此時我們只需要在訓(xùn)練集上進(jìn)行這些操作,然后將其在訓(xùn)練集上得到的參數(shù)應(yīng)用到測試集中忿项,也就是說蓉冈,在工作流程中,你不能使用在測試數(shù)據(jù)集上計(jì)算的得到的任何結(jié)果轩触。比如:我們得到的屬性中可能有缺失值寞酿,因?yàn)樵谶@些操作之前,我們已經(jīng)把數(shù)據(jù)集分成了訓(xùn)練集和測試集脱柱,通常的做法是通過計(jì)算屬性值的中位數(shù)來填充缺失值伐弹,注意此時計(jì)算屬性值的中位數(shù)是通過訓(xùn)練集上的數(shù)據(jù)進(jìn)行計(jì)算的,當(dāng)我們得到一個模型的時候榨为,如果想要測試模型的測試誤差來近似泛化誤差的時候惨好,可能此時的測試集也會有一些缺失值煌茴,此時對應(yīng)屬性的缺失值是通過訓(xùn)練集計(jì)算的中位數(shù)來進(jìn)行填充的;
- 由于測試集作為對泛化誤差的近似日川,所以訓(xùn)練好模型蔓腐,最后在測試集上近似估計(jì)模型的泛化能力。此時假設(shè)有兩個不同的機(jī)器學(xué)習(xí)模型龄句,猶豫不決的時候合住,可以通過訓(xùn)練兩個模型,然后對比他們在測試數(shù)據(jù)上的泛化誤差撒璧,選擇泛化能力強(qiáng)的模型透葛。