天天看點

如何評估機器學習模型(How to Evaluate Machine Learning Models)

本博文是對How to Evaluate Machine Learning Models這一博文的一個簡單翻譯和總結,文章主要從Evaluation Metrics ,Testing Mechanisms,Hyperparameter Tuning和A/B testing四個角度對機器學習模型的評價做了一一分析和讨論,建議有能力的人直接看原PO文。

1.評價名額(Evaluation Metrics )

1.1 Classification metrics

假設有100個正樣本,200個負樣本,其中正樣本被誤分類為負樣本的個數為20,負樣本被誤分類為正樣本的個數為5。

A. 精度(Accuracy):

如何評估機器學習模型(How to Evaluate Machine Learning Models)

精度:(80 + 195) /(100 + 200) = 91 . 7%

B. 混淆矩陣(Confusion matrix):

當不同類别資料的樣本不平衡或者不同類别的誤分類代價不同時,考慮使用混淆矩陣。

如何評估機器學習模型(How to Evaluate Machine Learning Models)

正樣本誤分率:(20/(20+80)=20%)

負樣本誤分率:(5/(5+195)=2.5%).

C. 平均每類精度(Per-class accuracy):

資料不平衡時考慮:

平均每類精度:(80%+97.5%)/2=88.75%

如果某類樣本非常少時,結果會很不可靠,因為誤差太大。

D. 對數代價(Log-loss):

分類器的輸出為數值機率,應該考慮對數代價。對數代價是精度的一個軟度量,

如何評估機器學習模型(How to Evaluate Machine Learning Models)

對數代價是真實标簽和預測标簽分布間的交叉熵。類似于資訊理論中的相對熵。

最小化交叉熵可以最大化分類精度。

E. 曲線下面積(AUC,Area Under the Curve):

這裡的曲線是ROC曲線,如下圖:

如何評估機器學習模型(How to Evaluate Machine Learning Models)

ROC曲線通過畫出真陽性率和假陽性率來展示分類器的敏感程度。

(原文:The ROC curve shows the sensitivity of the classifier by plotting the rate of true positives to the rate of false positives. In other words, it shows you how many correct positive classifications can be gained as you allow for more and more false positives.)

AUC是對ROC曲線的一個數值量化,使得其便于比較。

1.2 Ranking and Regression Metrics

A. 精度和召回率(Precision-Recall)

如何評估機器學習模型(How to Evaluate Machine Learning Models)
如何評估機器學習模型(How to Evaluate Machine Learning Models)

B. Precision-Recall curve and F1 score

通過畫出precision vs. recall關于K (排序的頂級K個最優)值變化的曲線就是precision-recall曲線。

precision-recall曲線數值化:

Harmonic means:

如何評估機器學習模型(How to Evaluate Machine Learning Models)

C. NDCG

Cumulative Gain (CG):累計頂級K項的相關度。sums up the relevance of the top k items

Discounted Cumulative Gain(DCG)

Discounted的factor為:

如何評估機器學習模型(How to Evaluate Machine Learning Models)

Normalized Discounted Cumulative Gain (NDCG):

如何評估機器學習模型(How to Evaluate Machine Learning Models)

NDCG如何了解?對于搜尋引擎,本質是使用者搜一個query,引擎傳回一個結果清單,那麼如何衡量這個結果清單的好壞?我能夠想到的是:

1. 我們希望把最相關的結果放到排名最靠前的位置,因為大部分使用者都是從上往下閱讀的,那麼最相關的在前面可以最大程度減少使用者的閱讀時間;

2. 我們希望整個清單的結果盡可能的和query相關;

1.3 Regression metrics

A. RMSE (Root Mean Square Error)

如何評估機器學習模型(How to Evaluate Machine Learning Models)

B. Quantiles of errors

RMSE比較難解釋,是以使用絕對誤差百分比的分布來量化:

如何評估機器學習模型(How to Evaluate Machine Learning Models)

C.“Almost correct” predictions

百分比估計:

例如小于10%,

如何評估機器學習模型(How to Evaluate Machine Learning Models)

2. 測試機制(Testing Mechanisms)

三種情況:

Validation 發生在原型期,測試不同超參數的品質。

Offline Testing 發生在部署前的相對靜止期,測試資料來自過去收集好的有标簽資料。

Online Testing 發生在産品營運階段,涉及A/B測試。

2.1 Hold-out資料集(Hold-out datasets)

Hold-out測試或驗證 假設資料獨立同分布,随機選出部分資料集作為測試集,剩下的作為訓練集。

2.2 交叉驗證(Cross validation)

最常見的是 k-重交叉驗證,分成k類,其中每一個分别作為測試集,其他作為訓練集,最後去平均結果。

資料較小時使用,資料較大時很少使用。

Hold-out校驗比它更快更好。

2.3 Bootstrap and jackknife

如果要獲得驗證得分的方差,考慮使用交叉驗證或Bootstrap。

Jackknife再采樣基本上就是k-重交叉驗證,其中k等于訓練集中的資料點數量。

Bootstrap可重複采樣資料。重複N次後,Bootstrap集中單個樣例的期望率為1-1/e =63.2%。

2.4 小結

如何評估機器學習模型(How to Evaluate Machine Learning Models)

3. 超參調優(Hyperparameter Tuning)

超參調優(hyperparameter tuning)是一個優化過程,有點類似于模型訓練(model training)。但是它們是不同的,因為訓練模型時,模型參數的品質可以寫成一個數學形式,而超參調優時,超參的品質要依賴于模型訓練的輸出,是以不能寫成一個閉合的公式。

3.1 網格搜尋(Grid search)

  • 網格搜尋很簡單,也容易并行執行。
  • 但代價比較昂貴,并行可以考慮。

3.2 Random search

[8] 隻評價網格搜尋中的一部分随機點。Bergstra and Bengio實驗表明實驗60個點就OK了。

The moral of the story is: if the close-to-optimal region of hyperparameters occupies at least 5% of the grid surface, then random search with 60 trials will find that region with high probability

3.3 Smart hyperparameter tuning

選取更少的超參數來評價它們的品質,然後決定下一步的采樣位置。并行度低。

常用的三種:

- derivative-free optimization 使用啟發式方式确定下一次采樣位置

- Bayesian optimization 使用另一個函數響應面模型(response surface ),即響應函數,來确定下一次采樣位置

- random forest smart tuning 同上

[6] 使用高斯過程來模組化響應函數來确定下一個proposals。

SMAC [7] 通過訓練回歸森林來近似響應面。新的采樣點就是随機森林認為的最優區域。通常在分類hyperparameters時性能比高斯處理要好。

無偏導優化(Derivative-free optimization)應用于沒有明顯導數的環境。原理:試着用一堆随機點來近似梯度找到最可能的搜尋方向。常見方法有:genetic algorithm 和 Nelder-Mead。

3.4 常用超參調優軟體包

常用超參調優軟體包:

- Grid search and random search: ​​​GraphLab Create​​​, ​​scikit-learn​​​.

- Bayesian optimization using Gaussian processes: ​​​Spearmint​​​ (from Jasper et al.)

- Bayesian optimization using Tree-based Parzen Estimators: ​​​Hyperopt​​​ (from Bergstra et al.)

- Random forest tuning: ​​​SMAC​​​ (from Hutter et al.)

- Hyper gradient: ​​​hypergrad​​ (from Maclaurin et al.)

4. A/B測試(A/B testing)

Briefly, A/B testing involves the following steps:

1 . Split into randomized control/experimentation groups.

2. Observe behavior of both groups on the proposed methods.

3. Compute test statistics.

4. Compute p-value.

5. Output decision.

用作者的一段話來結尾吧

繼續閱讀