與轉(zhuǎn)1搭配理解
當(dāng)數(shù)據(jù)好了之后,你所需的只是調(diào)下開源包硫眯,然后一個模型就出來了蕴侧,但是,好與不好两入?誰來界定净宵?
這篇文章,主要針對模型的評估裹纳,系統(tǒng)介紹下各種不同的模型的各種評測標(biāo)準(zhǔn)择葡,主要參考Alice Zhang的這篇文章http://www.oreilly.com/data/free/evaluating-machine-learning-models.csp。
1-基礎(chǔ)理解
Figure1-1是一個比較合理的產(chǎn)生機器學(xué)習(xí)模型的workflow剃氧,首先敏储,我們拿到Historical data 然后應(yīng)用到我們選擇的model,然后對數(shù)據(jù)進行離線評測朋鞍,離線評測一般我們會從Historical data中已添,通過一些策略選擇出一些數(shù)據(jù)作為Validation,用來離線評測我們的模型滥酥,進行model selection和model params selection更舞;也會引入一些live data來離線評價模型,待選擇出合理的model和對應(yīng)的params后坎吻,會對線上數(shù)據(jù)來一些相關(guān)的線上測試缆蝉,例如本人所在公司會按流量對新舊model來進行A/B testing,利用最終的kpi指標(biāo)來作為model的評判標(biāo)準(zhǔn)
2-模型評估標(biāo)準(zhǔn)
ML中,有多重不同考量的model刊头,不同的目標(biāo)有不同的評估標(biāo)準(zhǔn)黍瞧,本節(jié)主要介紹Classification Metrics、Regression Metrics原杂、Ranking Metrics
2.1-Classification Metrics
Accuracy
分類Accuracy就是指在分類方法中印颤,被正確分類的樣本數(shù)據(jù)占所有樣本數(shù)量的比例。
Confusion Matrix
Accuracy的計算十分簡便污尉,但是類別之間是等價的膀哲,很多時候,由于判斷為某類的代價不一致被碗,我們不能簡單地利用Accuracy來說明某個分類器的好壞某宪。比如一個醫(yī)生將患病病人評價為沒有患病的情況比將未患病用戶判定為患病用戶的代價要大得多,后者可以通過其他檢測來繼續(xù)驗證锐朴,而前者則很難兴喂;另外當(dāng)本身訓(xùn)練數(shù)據(jù)中各樣本數(shù)量分布極度不均衡的時候,比如#0/#1=9:1焚志,即使是一個分類器將所有樣本全部判斷為0時衣迷,這個分類的accuracy也達到了90%,很顯然這里是有問題的酱酬。
假定某樣本有100個正樣本與200個負樣本壶谒,confusion table如下:
從這張圖表中,我們可以很明顯的看出在正分類中膳沽,我們的分類器有較低的準(zhǔn)確率:(80/(20+80)=80%)汗菜,負分類中準(zhǔn)確率為(195/(195+5)=97.5%),如果僅僅考慮全局的accuracy挑社,(80+195)/(100+200)=91.7%陨界,丟失了很多信息。
Per-Class Accuracy
在上面例子中痛阻,對每類的accuracy做一個平均:(80%+97.5%)/2=88.75%菌瘪,和之前的準(zhǔn)確率相差較大,尤其是在分布極度不均的正負樣本數(shù)量時阱当,9+1-判斷為10+,accuracy為90%俏扩,(100%+0)/2=50%
Log-Loss
在Logisitic Regression分類器中,最終的分類是指定閾值弊添,然后對predict的值來進行判斷進行分類动猬,假定指定閾值0.5,model計算得到屬于class 1的概率為0.51表箭,這里有一個錯誤,但是這里有余概率與分類閾值相差很少,Log-Loss就是一個將此類因素考慮的標(biāo)準(zhǔn):
pi是屬于ith class的概率免钻,yi是第ith的真實label彼水,如果數(shù)據(jù)功底較強的人可能一眼就可以看出,這里其實就是y和p分布的Cross-Entropy极舔,即真實label與預(yù)測的y的分布之間的差異凤覆。最小化Log-Loss即為最大化分類器的性能。
AUC
AUC即Area Under the Curve拆魏,這里的Curve就是ROC曲線盯桦,ROC的橫坐標(biāo)為Flase positive rate,縱坐標(biāo)為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的概率刊懈,以此為標(biāo)準(zhǔn)來進行相關(guān)性的判定这弧。當(dāng)然Ranking Metrics很多時候也使用Regression的Metrics,例如在個性化推薦系統(tǒng)中俏讹,會通過各種數(shù)據(jù)的feature來進行一個score的計算当宴,并以此為標(biāo)準(zhǔn)對推薦結(jié)果進行排序。
這里泽疆,我們首先介紹下Precision-Recall户矢,也就是在分類中經(jīng)常使用的來作為Ranking Metrics
Precision Recall
通常,我們在ranking中只對top K來進行計算殉疼,就是所謂的precision@k,recall@k梯浪,precision和recall之間的關(guān)系有點類似于True Postive 和False Postive之間的關(guān)系,單獨談其中一樣是沒有意義的瓢娜,通常我們使用F1 score來表明其好壞:
NDCG
NDCG是另一種很有效地排序標(biāo)準(zhǔn)挂洛,這里不對其做詳細概念說明,只舉一個例子就明白了眠砾,如想詳細了解虏劲,請閱讀https://en.wikipedia.org/wiki/Discounted_cumulative_gain
假定某一個排序方法,給出的結(jié)果為D1,D2,D3,D4,D5,D6,而用戶的相關(guān)得分(比如通過用戶對其點擊率來計算)為3,2,3,0,1,2。
則這個搜索的累積的熵為:
明顯可知柒巫,CG對排序間item的相對位置不敏感励堡,改變item彼此間的位置不影響CG的值,這是不合理的堡掏,這里我們添加一個Discounted信息:
這個ranking的DCG計算如下:
同理应结,我們做一個最佳的排序的計算,這里最佳的排序是按照用戶相關(guān)得分的排序:
3,3,2,2,1,0
此時泉唁,最佳的DCG = 8.69
最終的Normalize DCG=8.10/8.69=0.932
2.3-Regression Metrics
在回歸任務(wù)中鹅龄,我們一般需要去預(yù)測數(shù)值型的得分,例如我們會預(yù)測未來一段時間股票的價格亭畜,另外個性化系統(tǒng)預(yù)測用戶對某個item的得分扮休,類似的這些任務(wù)我們都會用到回歸方法。
RMSE
在回歸任務(wù)中贱案,最普通的評估標(biāo)準(zhǔn)是RMSE(root-mean-square error):
Quantiles of Errors
RMSE有個比較嚴(yán)重的問題肛炮,它對large outliers比較敏感,通常一個比較大的離群值會很大地影響最終的RMSE值宝踪。Quantiles在某一方面來說侨糟,相對于RMSE來說魯棒性比較高。
Median Absolute Percentage一般能夠有效地減少離群值的影響:
當(dāng)然瘩燥,我們也可以使用第>90%的數(shù)據(jù)來找到數(shù)據(jù)當(dāng)中的worst case秕重,或者用<0.1來表示數(shù)據(jù)當(dāng)中的best case。
2.4-Cautions
Training Metrics 和Evaluation Metrics的差異
很多時候厉膀,Evaluation Metrics 和Training Metrics可以通用溶耘,我們可以直接選定Evaluation Metrics為目標(biāo)函數(shù)來對其優(yōu)化,例如RMSE服鹅,但是也有很多Evaluation Metrics 不能直接作為目標(biāo)函數(shù)來優(yōu)化凳兵。
Skewed Datasets:Imbalanced classes,outliers企软, and Rare Data
如果在datasets中庐扫,正負樣本數(shù)相差很大,比如99/1仗哨,這樣我們的分類器很容易全1形庭,來達到accuracy達到99%,ROC也很好看厌漂,但此時其實算法的泛化能力很差萨醒,應(yīng)該是無效的。
3-線下評估機制
一般苇倡,我們將歷史數(shù)據(jù)按某種策略分為訓(xùn)練數(shù)據(jù)和驗證數(shù)據(jù)富纸,以此我們做Model Training囤踩,根據(jù)相關(guān)評估標(biāo)準(zhǔn)來做Model Selection,選定好model方法之后晓褪,利用Validation data去做Hyperparameter tuner高职,選擇出在驗證集數(shù)據(jù)中性能最好的Hyperparameter sets。
很多時候辞州,獲取一個有效地歷史訓(xùn)練數(shù)據(jù)集代價很大,我們通常只能獲取到相對于真實數(shù)據(jù)很小的一部分數(shù)據(jù)寥粹,為了保證model的泛化能力变过,我們通常會采用很多其他的方法來充分驗證,例如Hold-Out Validation,Cross-Validation,Bootstrap and Jackknife涝涤,這三種基本思想都相同媚狰,其中Hold-Out實現(xiàn)最簡單,只是簡單地將整個訓(xùn)練集分為訓(xùn)練集和驗證集阔拳,然后用驗證集的數(shù)據(jù)對訓(xùn)練集生成的model驗證model有效性崭孤,Cross-Validation是將整個訓(xùn)練數(shù)據(jù)集劃分為k-fold,多次取其中某一個fold做驗證數(shù)據(jù)集糊肠,相對于Hold-Out Validation來說辨宠,相當(dāng)于多次操作;前面兩種可能大部分人都聽說過货裹,而Bootstrap很少有人了解嗤形,相對于Cross-Validation,其實質(zhì)我們可以理解為,每次取K-fold里面的某部分做驗證集弧圆,這其實是一種不放回的采樣赋兵,而Bootstrap則恰好相反,它實質(zhì)是一種由放回的采樣原理:每次取其中某些數(shù)據(jù)做驗證數(shù)據(jù)搔预,然后放回重新選取霹期,為什么要選擇放回呢?統(tǒng)計學(xué)家們認為訓(xùn)練數(shù)據(jù)本身就有一種潛在的分布信息拯田,我們稱為”經(jīng)驗分布”历造,每次隨機選取,然后不放回能夠保證每次的經(jīng)驗分布都為原始的訓(xùn)練數(shù)據(jù)本身的分布信息勿锅,那么如此一來帕膜,bootstrap set中有很多數(shù)據(jù)是重復(fù)的(即為我們的經(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)系:
x是特征向量荒典,y為對應(yīng)的score值酪劫,而w則是我們通過訓(xùn)練得到的參數(shù)模型,我們所說的訓(xùn)練model其實就是最是采取優(yōu)化策略來得到w產(chǎn)生最fit數(shù)據(jù)的預(yù)測數(shù)據(jù)寺董。這里的w使我們常說的Model Parameter而Hyperparameter通常在原始的linear regression中不需要覆糟,但是在lasso、ridge 這些里面會增加一些正則化的考慮來懲罰復(fù)雜度較高的模型遮咖,而這里的懲罰系數(shù)就是我們這里提到的Hyperparameter滩字。
在很多復(fù)雜的模型,例如Dt御吞,SVM麦箍,GBDT中有很多復(fù)雜的Hyperparameter對最終的預(yù)測有很重要的影響。
4.2-Hyperparameter Tuning Mechanism
如何去選擇Hyperparameter陶珠,我們提供四種方法:Grid Search挟裂,Random Search,Smart Hyperparameter Tuning揍诽,Nested Cross-Validation
Grid Search就是把所有Hyperparameter做組合诀蓉,然后貪婪去訓(xùn)練模型,選擇效果最好的模型和對應(yīng)的Hyperparameter
Random Search就是采用隨機的策略暑脆,和grid search的關(guān)系有點類似于隨機梯度下降和批梯度下降的關(guān)系
Smart Hyperparameter Tuning:計算下次參數(shù)選擇渠啤,來更快速地收斂到最優(yōu)參數(shù)