當看過一些簡單的機器學習算法或者模型后,對於具體問題該如何評估不同模型對具體問題的效果選擇最優模型呢。
機器學習分類
1. 經驗誤差、泛化誤差
假如m個樣本中有a個樣本分類錯誤
錯誤率:E = a / m;
精度: 1 - E
訓練誤差: 又叫經驗誤差,是指算法/模型在訓練樣本上的誤差
泛化誤差:算法/模型在新樣本上的誤差
顯然我們希望得到泛化誤差小的機器學習算法。
2.欠擬合、 過擬合
欠擬合:欠擬合是指訊息能力低下,本來一些有的特征沒有學習到。
解決方法:欠擬合一般比較容易克服,例如在決策樹學習中擴展分支在神經網絡學習中增加學習輪數就可以。
過擬合:模型把訓練樣本學的“太好”,很可能把訓練樣本自身的一些特點當做了所有潛在樣本都會具有的一般性質,這樣就會導致泛化能力下降。
解決方法: 很難克服或者徹底避免。
下面這張圖對欠擬合/過擬合解析的十分到位:
3. 樣本采集
3. 1 留出法
直接將數據集D划分成兩個互斥的集合,其中一個作為訓練集S,另一個作為測試集T 即: D = S ∪ T , S ∩ T = ∅ . 在S上訓練出模型后用T來評估其測試誤差,作為泛化誤差的評估。
需要注意的訓練/測試集的划分要盡可能的保持數據分布的一致性,避免因數據划分過程引入額外的偏差而對最終結果產生影響。 如果從采樣的角度看數據集划分過程,則保留類別比例的采樣方式通常稱為分層采樣。
單層留出法得到的評估結果往往不夠穩定可靠,在使用留出法時,一般采用若干次隨機划分、重復進行試驗評估后取平均值為留出法結果。
缺點: 若訓練集S包含絕大多數樣本則訓練出的模型可能更接近與用D訓練處的模型,但由於T比較小,評估結果可能不夠穩定准確。 若令測試機包含多一些樣本,則訓練集S與D差別更大,被評估的模型與用D訓練出的模型相比可能有較大差別,從而降低了評估結果的保真性。 常見的做法是將 2/3 ~ 4/5 的樣本用於訓練,剩余樣本用於測試。
3.2 交叉驗證法
3.3 自助法
留出法和交叉驗證法都有一個缺點: 需要保留一部分樣本用於測試,因此實際評估的模型所使用的訓練集比D小,這必然會引入一些因訓練樣本規模不同而導致的估計偏差。
自助法: 給定包含m個樣的數據集D,我們對它進行采樣產生數據集D_:每次隨機從D中挑選一個樣本,將其拷貝到D_中,然后將該樣本放回到D中,下次采樣時同樣可以被采到。
明顯D中有一部分樣本會多次出現,而另一部分樣本不出現。於是估計樣本在m次采樣中始終不被采到的概率:
即通過自助采樣,初始數據集D中約有0.368的樣本沒有出現在D_中。 我們可以將D\D_用作測試集,這樣實際評估的模型與期望評估的模型都是用m個訓練樣本。
4 . 性能度量——查准率、查全率
對於二分類問題進行如下統計:
查准率:
P = TP / (TP + FP)
查全率:
R = TP / (TP + FN)
以預測癌症為例,正例為癌症,反例不是癌症。 查准率表示預測為癌症實際發生癌症的概率,而查全率是指預測為癌症的覆蓋率(部分預測為反例但實際情況確實正例)。
其它機器學習算法:
監督學習——隨機梯度下降算法(sgd)和批梯度下降算法(bgd)
參考:
周志華 《機器學習》
《推薦系統實戰》