學習模型的泛化能力須要進行評估,現將主要的評估方法和性能度量總結以下html
將數據集D劃分爲互斥的兩部分,一個做爲訓練集S,另外一個做爲測試集T,其中T的規模大約爲D的1/5到1/3。該法的優勢在於足夠明瞭,缺點在於若令S較大,T較小,則使用T進行測試的結果可能不夠準確;若是令T較大,S和D的規模會相差較大,用S訓練得出的模型可能和用D訓練得出的模型差異較大。通常的,每每不會單次使用留出法,而是屢次隨機劃分S和T,將屢次評估結果的平均值做爲最終的評估結果。另外,爲保證T和D的分佈一致,可能須要分層採樣。bootstrap
將數據集D劃分爲大小類似的k個互斥子集,而後進行k(一般取五、10,20)次評估,每次評估時,使用\(D_i\)子集做爲測試集,剩餘k-1個子集做爲訓練集,最終的評估結果爲k次評估的平均值。一般該驗證法會隨機劃分屢次子集,最終結果取其平均值。交叉驗證法相比留出法的優勢是:可以保證全部樣本都參與了訓練和測試。app
對具備m個樣本的數據集D進行有放回隨機抽取m次,獲得一個新的數據集\(D\prime\),將\(D\prime\)用做訓練集,D \(D\prime\)(D中沒有被抽到\(D\prime\)中的樣本組成的集合)用做測試集。該法的優勢在於避免留出法和交叉驗證法因爲訓練集S和樣本集D規模不一樣引起的誤差。顯然,\(D\prime\)和D的分佈狀況不一樣,會致使誤差,一般數據集較小時使該法有用,數據量足夠多時,留出法和交叉驗證法更爲經常使用。機器學習
用於迴歸問題的度量方法有:性能
用於分類問題的度量方法有:學習
用以下符號表示測試結果(課程中和書籍中的TNFP表示方式太繞,此處使用很好理解的「正負」的表示方式):測試
準確率爲:\(P=\frac{正正}{正正+負正}\),查全率爲:\(R=\frac{正正}{正正+正負}\),準確率表示的是預測爲正例中真正正例的比例,查全率表示的是全部正例中被預測爲正例的比例。準確率和查全率此消彼長,在實際應用中衡量取捨,如電商推薦相似產品看中準確率,找出誰是犯罪分子更看中查全率。一般用F1(準確率和查全率的調和平均數)度量綜合準確率和查全率:
\[F1=\frac{1}{2}(\frac{1}{P}+\frac{1}{R})=\frac{2PR}{P+R}= \frac{2*正正}{總樣本+正正-負負}\]
可加入參數\(\beta\)調整準確率和查全率的權重:
\[F_\beta=\frac{1}{1+\beta^2}(\frac{1}{P}+\frac{\beta^2}{R}) = \frac{(1+\beta)^2PR}{\beta^2P + R}\]
當\(\beta\)大於1時查全率有更大影響,當\(\beta\)小於1時,準確率有更大影響。spa
在二分類問題中,除了準確率和查全率,還可使用TPR(True Positive Rate)和FPR(False Positive Rate)度量。其中:
\[TPR=\frac{正正}{正正+正負}\]
\[FPR=\frac{負正}{負正+負負}\]
即:TPR表示全部正例被正確預測爲正例的比例(也就是查全率),FPR表示負例被錯誤的預測爲正例的比例。不一樣於精確率和查全率,精確率和查全率此消彼長,若是想把儘量多的甜西瓜挑出來(提升查全率),就難免會出現把更多的生瓜當甜瓜的狀況(精確率降低),而TPR和FPR並非此消彼長,而是同向變化。htm
該概念常應用於醫學檢測,假設某種疾病的判斷標準爲:若是檢查結果大於某閾值,則認爲患病,不然爲不患病,TPR表示確診率,FPR表示誤診率,當醫生下結論很是謹慎時,TRP較高,同時也把更多的非患病者診斷爲了患病者,即FPR也高了。將測試樣本排序,最多是正例的樣本放到首位,最不多是正例的樣本放到末位,初始閾值設爲最大,即全部的樣本均預測爲反例,此時TPR和FPR都是0,逐步下降閾值會獲得多組TPR和FPR,當閾值降到最低,即全部的樣本都被預測爲正例,此時TPR和FPR都是1,以TPR爲縱軸、FPR爲橫軸繪製的曲線叫作ROC(Receiver Operation Characteristic),大體以下圖(實際狀況中,因爲閾值個數有限,曲線不會以下圖這般平滑)所示:
可見,給定一組座標,TPR較高而FPR較低爲是更爲理想的結果,能夠用ROC曲線下方面積來度量,容易知道:面積越大,結果越是理想,該面積被稱爲AUC(Area Under ROC Curve)
\[AUC=\frac{1}{2}\sum_{i=1}^{m-1}(x_{i+1}-x_i)(y_{i+1} + y_i)\]blog
參考: