【轉(zhuǎn)】機器學習模型評價2

與轉(zhuǎn)1搭配理解
當數(shù)據(jù)好了之后,你所需的只是調(diào)下開源包,然后一個模型就出來了,但是,好與不好?誰來界定?
這篇文章,主要針對模型的評估,系統(tǒng)介紹下各種不同的模型的各種評測標準,主要參考Alice Zhang的這篇文章http://www.oreilly.com/data/free/evaluating-machine-learning-models.csp

1-基礎(chǔ)理解


NewImage

Figure1-1是一個比較合理的產(chǎn)生機器學習模型的workflow,首先,我們拿到Historical data 然后應用到我們選擇的model,然后對數(shù)據(jù)進行離線評測,離線評測一般我們會從Historical data中,通過一些策略選擇出一些數(shù)據(jù)作為Validation,用來離線評測我們的模型,進行model selection和model params selection;也會引入一些live data來離線評價模型,待選擇出合理的model和對應的params后,會對線上數(shù)據(jù)來一些相關(guān)的線上測試,例如本人所在公司會按流量對新舊model來進行A/B testing,利用最終的kpi指標來作為model的評判標準
2-模型評估標準
ML中,有多重不同考量的model,不同的目標有不同的評估標準,本節(jié)主要介紹Classification Metrics、Regression Metrics、Ranking Metrics
2.1-Classification Metrics
Accuracy
分類Accuracy就是指在分類方法中,被正確分類的樣本數(shù)據(jù)占所有樣本數(shù)量的比例。


NewImage

Confusion Matrix
Accuracy的計算十分簡便,但是類別之間是等價的,很多時候,由于判斷為某類的代價不一致,我們不能簡單地利用Accuracy來說明某個分類器的好壞。比如一個醫(yī)生將患病病人評價為沒有患病的情況比將未患病用戶判定為患病用戶的代價要大得多,后者可以通過其他檢測來繼續(xù)驗證,而前者則很難;另外當本身訓練數(shù)據(jù)中各樣本數(shù)量分布極度不均衡的時候,比如#0/#1=9:1,即使是一個分類器將所有樣本全部判斷為0時,這個分類的accuracy也達到了90%,很顯然這里是有問題的。

假定某樣本有100個正樣本與200個負樣本,confusion table如下:


NewImage

從這張圖表中,我們可以很明顯的看出在正分類中,我們的分類器有較低的準確率:(80/(20+80)=80%),負分類中準確率為(195/(195+5)=97.5%),如果僅僅考慮全局的accuracy,(80+195)/(100+200)=91.7%,丟失了很多信息。
Per-Class Accuracy
在上面例子中,對每類的accuracy做一個平均:(80%+97.5%)/2=88.75%,和之前的準確率相差較大,尤其是在分布極度不均的正負樣本數(shù)量時,9+1-判斷為10+,accuracy為90%,(100%+0)/2=50%
Log-Loss
在Logisitic Regression分類器中,最終的分類是指定閾值,然后對predict的值來進行判斷進行分類,假定指定閾值0.5,model計算得到屬于class 1的概率為0.51,這里有一個錯誤,但是這里有余概率與分類閾值相差很少,Log-Loss就是一個將此類因素考慮的標準:
NewImage

pi是屬于ith class的概率,yi是第ith的真實label,如果數(shù)據(jù)功底較強的人可能一眼就可以看出,這里其實就是y和p分布的Cross-Entropy,即真實label與預測的y的分布之間的差異。最小化Log-Loss即為最大化分類器的性能。
AUC
AUC即Area Under the Curve,這里的Curve就是ROC曲線,ROC的橫坐標為Flase positive rate,縱坐標為Ture Positive Rate,用分類器的FP和TP來衡量分類器的性能好壞。而這里ROC是一個曲線而非一個值,AUC就是將該ROC用一個數(shù)值表示,這個數(shù)值就是曲線之下的面積。

2.2-Ranking Metrics
Ranking Metrics和前面的分類的merics,有很多相似的地方,例如,用戶給定一個query,然后搜索引擎會反饋一個item list, 這個item list會按照與用戶query的相關(guān)性來進行排序,其本質(zhì)就是一個0/1的二元分類器,其中score是分類為1的概率,以此為標準來進行相關(guān)性的判定。當然Ranking Metrics很多時候也使用Regression的Metrics,例如在個性化推薦系統(tǒng)中,會通過各種數(shù)據(jù)的feature來進行一個score的計算,并以此為標準對推薦結(jié)果進行排序。
這里,我們首先介紹下Precision-Recall,也就是在分類中經(jīng)常使用的來作為Ranking Metrics

Precision Recall

NewImage

NewImage

通常,我們在ranking中只對top K來進行計算,就是所謂的precision@k,recall@k,precision和recall之間的關(guān)系有點類似于True Postive 和False Postive之間的關(guān)系,單獨談其中一樣是沒有意義的,通常我們使用F1 score來表明其好壞:
NewImage

NDCG
NDCG是另一種很有效地排序標準,這里不對其做詳細概念說明,只舉一個例子就明白了,如想詳細了解,請閱讀https://en.wikipedia.org/wiki/Discounted_cumulative_gain
假定某一個排序方法,給出的結(jié)果為D1,D2,D3,D4,D5,D6,而用戶的相關(guān)得分(比如通過用戶對其點擊率來計算)為3,2,3,0,1,2。
則這個搜索的累積的熵為:
NewImage

明顯可知,CG對排序間item的相對位置不敏感,改變item彼此間的位置不影響CG的值,這是不合理的,這里我們添加一個Discounted信息:
NewImage

這個ranking的DCG計算如下:
NewImage

同理,我們做一個最佳的排序的計算,這里最佳的排序是按照用戶相關(guān)得分的排序:
3,3,2,2,1,0
此時,最佳的DCG = 8.69
最終的Normalize DCG=8.10/8.69=0.932
2.3-Regression Metrics
在回歸任務中,我們一般需要去預測數(shù)值型的得分,例如我們會預測未來一段時間股票的價格,另外個性化系統(tǒng)預測用戶對某個item的得分,類似的這些任務我們都會用到回歸方法。
RMSE
在回歸任務中,最普通的評估標準是RMSE(root-mean-square error):

NewImage

Quantiles of Errors
RMSE有個比較嚴重的問題,它對large outliers比較敏感,通常一個比較大的離群值會很大地影響最終的RMSE值。Quantiles在某一方面來說,相對于RMSE來說魯棒性比較高。
Median Absolute Percentage一般能夠有效地減少離群值的影響:


NewImage

當然,我們也可以使用第>90%的數(shù)據(jù)來找到數(shù)據(jù)當中的worst case,或者用<0.1來表示數(shù)據(jù)當中的best case。

2.4-Cautions
Training Metrics 和Evaluation Metrics的差異
很多時候,Evaluation Metrics 和Training Metrics可以通用,我們可以直接選定Evaluation Metrics為目標函數(shù)來對其優(yōu)化,例如RMSE,但是也有很多Evaluation Metrics 不能直接作為目標函數(shù)來優(yōu)化。
Skewed Datasets:Imbalanced classes,outliers, and Rare Data

NewImage

如果在datasets中,正負樣本數(shù)相差很大,比如99/1,這樣我們的分類器很容易全1,來達到accuracy達到99%,ROC也很好看,但此時其實算法的泛化能力很差,應該是無效的。
3-線下評估機制
NewImage

一般,我們將歷史數(shù)據(jù)按某種策略分為訓練數(shù)據(jù)和驗證數(shù)據(jù),以此我們做Model Training,根據(jù)相關(guān)評估標準來做Model Selection,選定好model方法之后,利用Validation data去做Hyperparameter tuner,選擇出在驗證集數(shù)據(jù)中性能最好的Hyperparameter sets。
很多時候,獲取一個有效地歷史訓練數(shù)據(jù)集代價很大,我們通常只能獲取到相對于真實數(shù)據(jù)很小的一部分數(shù)據(jù),為了保證model的泛化能力,我們通常會采用很多其他的方法來充分驗證,例如Hold-Out Validation,Cross-Validation,Bootstrap and Jackknife,這三種基本思想都相同,其中Hold-Out實現(xiàn)最簡單,只是簡單地將整個訓練集分為訓練集和驗證集,然后用驗證集的數(shù)據(jù)對訓練集生成的model驗證model有效性,Cross-Validation是將整個訓練數(shù)據(jù)集劃分為k-fold,多次取其中某一個fold做驗證數(shù)據(jù)集,相對于Hold-Out Validation來說,相當于多次操作;前面兩種可能大部分人都聽說過,而Bootstrap很少有人了解,相對于Cross-Validation,其實質(zhì)我們可以理解為,每次取K-fold里面的某部分做驗證集,這其實是一種不放回的采樣,而Bootstrap則恰好相反,它實質(zhì)是一種由放回的采樣原理:每次取其中某些數(shù)據(jù)做驗證數(shù)據(jù),然后放回重新選取,為什么要選擇放回呢?統(tǒng)計學家們認為訓練數(shù)據(jù)本身就有一種潛在的分布信息,我們稱為”經(jīng)驗分布”,每次隨機選取,然后不放回能夠保證每次的經(jīng)驗分布都為原始的訓練數(shù)據(jù)本身的分布信息,那么如此一來,bootstrap set中有很多數(shù)據(jù)是重復的(即為我們的經(jīng)驗分布),有個文檔https://lagunita.stanford.edu/c4x/HumanitiesScience/StatLearning/asset/cv_boot.pdf http://www.americanscientist.org/issues/pub/2010/3/the-bootstrap/1里面有詳細的說明。如果想試試具體效果,可以去sklearn里面嘗試下:http://scikit-learn.org/stable/modules/grid_search.html#out-of-bag-estimates
4-Hyperparameter Tuning
首先,明白下Hyperparameter是個啥,和模型參數(shù)有啥區(qū)別
4.1-Model Parameter vs Hyperparameter
這里舉個例子:我們有一個線性回歸的模型來表示features和target之間關(guān)系:
NewImage

x是特征向量,y為對應的score值,而w則是我們通過訓練得到的參數(shù)模型,我們所說的訓練model其實就是最是采取優(yōu)化策略來得到w產(chǎn)生最fit數(shù)據(jù)的預測數(shù)據(jù)。這里的w使我們常說的Model Parameter而Hyperparameter通常在原始的linear regression中不需要,但是在lasso、ridge 這些里面會增加一些正則化的考慮來懲罰復雜度較高的模型,而這里的懲罰系數(shù)就是我們這里提到的Hyperparameter。
在很多復雜的模型,例如Dt,SVM,GBDT中有很多復雜的Hyperparameter對最終的預測有很重要的影響。
4.2-Hyperparameter Tuning Mechanism
NewImage

如何去選擇Hyperparameter,我們提供四種方法:Grid Search,Random Search,Smart Hyperparameter Tuning,Nested Cross-Validation
Grid Search就是把所有Hyperparameter做組合,然后貪婪去訓練模型,選擇效果最好的模型和對應的Hyperparameter
Random Search就是采用隨機的策略,和grid search的關(guān)系有點類似于隨機梯度下降和批梯度下降的關(guān)系
Smart Hyperparameter Tuning:計算下次參數(shù)選擇,來更快速地收斂到最優(yōu)參數(shù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容