模型評估和參數調優
本博客根據 百面機器學習,算法工程師帶你去面試 一書總結歸納,公式圖片均出自該書.
本博客僅為個人總結學習,非商業用途,侵刪.
網址 http://www.ptpress.com.cn
1. 准確率
准確率是指分類正確的樣本占總樣本個數的比例, 即
其中\(n_{correct}\)為被正確分類的樣本個數, \(n_{total}\)為總樣本的個數。
准確率存在明顯的缺陷,當不同類別的樣本比例非常不均衡時,占比大的類別往往成為影響准確率的最主要因素。
2. 精確率與召回率的權衡
精確率是指分類正確的正樣本個數占分類器判定為正樣本的樣本個數的比例。
召回率是指分類正確的正樣本個數占真正的正樣本個數的比例。
Precision值和Recall值是既矛盾又統一的兩個指標, 為了提高Precision值, 分類器需要盡量在“更有把握”時才把樣本預測為正樣本, 但此時往往會因為過於保守而漏掉很多“沒有把握”的正樣本, 導致Recall值降低。
對於一個排序模型來說, 其P-R曲線上的一個點代表着, 在某一閾值下, 模型大於該閾值的結果判定為正樣本,小於該閾值的結果判定為負樣本, 此時返回結果對應的召回率和精確率。
如下圖:整條P-R曲線是通過將閾值從高到低移動而生成的。
F1_score是精准率和召回率的調和平均值, 它定義為:
G-Mean:G-mean 是正例准確率與負例准確率的綜合指標。
與 F1 的比較:在數據平衡度不是很大的情況下,F1 和 G-mean 可以作為較好的評測指標,但是當訓練樣本很不平衡時,F1 更好。
G-mean 評估一個學習算法的綜合性能。 根據之前的研究,為了能夠獲得盡可能多的關於每個類別對最終性能的貢獻大小信息,並且考慮到數據的不平衡率,很多研究者試圖在不平衡領域提出新的度量指標。 如調整 G-mean, 提出了 Adjusted G-mean。
上述的評價標准對於類分布的改變較敏感。
3. 平方根誤差的意外
當構建回歸模型時,無論使用哪個模型,得到的RMSE指標都非常高,但是事實的預測誤差都小於1%,預測結果相當不錯,造成這種RMSE指標居高不下的可能原因是什么?
RMSE經常被用來衡量回歸模型的好壞。下面是RMSR的計算公式:
其中, \(y_i\)是第i個樣本點的真實值, 是第i個樣本點的預測值, n是樣本點的個數 。
一般情況下, RMSE能夠很好地反映回歸模型預測值與真實值的偏離程度。 但在實際問題中, 如果存在個別偏離程度非常大的離群點( Outlier) 時, 即使離群點數量非常少, 也會讓RMSE指標變得很差。
針對這個問題, 有什么解決方案呢 ?
- 第一,如果離群點是噪聲點的話可以在數據預處理時過濾掉。
- 第二,如果不是噪聲的,需要提高模型的預測能力,將離群點產生的機制建模進去。
- 第三,可以找一個更合適的指標來評估模型。比如 平均絕對百分比誤差(Mean Absolute Percent Error, MAPE),它定義為:
相比RMSE, MAPE相當於把每個點的誤差進行了歸一化, 降低了個別離群點帶來的絕對誤差的影響 。
4. 什么是ROC曲線,如何計算AUC
ROC曲線的橫坐標為假陽性率(False Positive Rate, FPR) ; 縱坐標為真陽性率(True Positive Rate, TPR)。FPR和TPR的計算方法分別為
上式中, P是真實的正樣本的數量, N是真實的負樣本的數量,TP是P個正樣本中被分類器預測為正樣本的個數,FP是N個負樣本中被分類器預測為正樣本的個數。
事實上, ROC曲線是通過不斷移動分類器的“截斷點”來生成曲線上的一組關鍵點的,截斷點就是指區分正負預測結果的閾值。
通過動態地調整截斷點,從最高的得分開始(實際上是從正無窮開始對應着ROC曲線的零點),逐漸調整到最低得分,每一個截斷點都會對應一個FPR和TPR, 在ROC圖上繪制出每個截斷點對應的位置, 再連接所有點就得到最終的ROC曲線。
如何計算AUC?
AUC是指ROC曲線下的面積大小,該值能夠量化地反映基於ROC曲線衡量出模型的性能。
計算AUC值只需要沿着ROC橫軸做積分就可以了。由於ROC曲線一般都處於y=x這條直線的上方(如果不是的話, 只要把模型預測的概率反轉成1-p就可以得到一個更好的分類器,所以AUC的取值一般在0.5~1之間。AUC越大, 說明分類器越可能把真正的正樣本排在前面, 分類性能越好 。
ROC曲線和P-R曲線有什么特點?
相比P-R曲線, ROC曲線有一個特點, 當正負樣本的分布發生變化時, ROC曲線的形狀能夠基本保持不變, 而P-R曲線的形狀一般會發生較劇烈的變化。
MCC 馬修斯相關系數
MCC(Matthews correlation coefficient):是應用在機器學習中,用以測量二分類的分類性能的指標 [83]。該指標考慮了真陽性、真陰性和假陽性和假陰性,通常認為該指標是一個比較均衡的指標,即使是在兩類別的樣本含量差別很大時,也可以應用它。MCC 本質上是一個描述實際分類與預測分類之間的相關系數,它的取值范圍為 [-1,1],取值為 1 時表示對受試對象的完美預測,取值為 0 時表示預測的結果還不如隨機預測的結果,-1 是指預測分類和實際分類完全不一致。
對數據不平衡的模型效果衡量效果較好。
5. 余弦距離
在分析兩個特征向量之間的相似性時, 常使用余弦相似度來表示。 余弦相似度的取值范圍是[-1,1],相同的兩個向量之間的相似度為1。 如果希望得到類似於距離的表示, 將1減去余弦相似度即為余弦距離。 因此,余弦距離的取值范圍為[0,2], 相同的兩個向量余弦距離為0。
歐氏距離體現數值上的絕對差異, 而余弦距離體現方向上的相對差異。
例如, 統計兩部劇的用戶觀看行為, 用戶A的觀看向量為(0,1), 用戶B為(1,0); 此時二者的余弦距離很大, 而歐氏距離很小; 我們分析兩個用戶對於不同視頻的偏好, 更關注相對差異, 顯然應當使用余弦距離。 而當我們分析用戶活躍度, 以登陸次數(單位: 次)和平均觀看時長(單位: 分鍾)作為特征時, 余弦距離會認為(1,10)、 (10,100)兩個用戶距離很近; 但顯然這兩個用戶活躍度是有着極大差異的, 此時我們更關注數值絕對差異, 應當使用歐氏距離 。
6. A/B測試和實驗組對比組
為什么需要進行在線A/B測試?
-
離線評估無法完全消除模型過擬合的影響, 因此, 得出的離線評估結果無法完全替代線上評估結果。
-
離線評估無法完全還原線上的工程環境。 一般來講, 離線評估往往不會考慮線上環境的延遲、 數據丟失、 標簽數據缺失等情況。 因此, 離線評估的結果是理想工程環境下的結果。
-
線上系統的某些商業指標在離線評估中無法計算,如用戶點擊率、 留存時長、 PV訪問量等
如何進行A/B測試和划分實驗組和對比組?
進行A/B測試的主要手段是進行用戶分桶, 即將用戶分成實驗組和對照組, 對實驗組的用戶施以新模型, 對對照組的用戶施以舊模型。 在分桶的過程中, 要注意樣本的獨立性和采樣方式的無偏性, 確保同一個用戶每次只能分到同一個桶中, 在分桶過程中所選取的user_id需要是一個隨機數, 這樣才能保證桶中的樣本是無偏的。
7. 模型評估方法
Holdout檢驗:
Holdout 檢驗是最簡單也是最直接的驗證方法, 它將原始的樣本集合隨機划分成訓練集和驗證集兩部分。
交叉檢驗:
-
k-fold交叉驗證: 首先將全部樣本划分成k個大小相等的樣本子集; 依次遍歷這k個子集, 每次把當前子集作為驗證集, 其余所有子集作為訓練集, 進行模型的訓練和評估; 最后把k次評估指標的平均值作為最終的評估指標。 在實際實驗中, k經常取10
-
留一驗證:每次留下1個樣本作為驗證集, 其余所有樣本作為測試集。 在樣本總數較多的情況下, 留一驗證法的時間開銷極大。 留一驗證是留p驗證的特例。 留p驗證是每次留下p個樣本作為驗證集, 而從n個元素中選擇p個元素有 種可能, 因此它的時間開銷更是遠遠高於留一驗證。
自助法:
自助法是基於自助采樣法的檢驗方法。 對於總數為n的樣本集合, 進行n次有放回的隨機抽樣, 得到大小為n的訓練集。 n次采樣過程中, 有的樣本會被重復采樣, 有的樣本沒有被抽出過, 將這些沒有被抽出的樣本作為驗證集, 進行模型驗證, 這就是自助法的驗證過程 。
在自助法的采樣過程中, 對n個樣本進行n次自助抽樣, 當n趨於無窮大時,最終有多少數據從未被選擇過?
一個樣本在一次抽樣過程中未被抽中的概率為, n次抽樣均未抽中的概率為
。 當n趨於無窮大時, 概率為
。
根據重要極限,,所以有

8. 超參數調優方法
網格搜索:
通過查找搜索范圍內的所有的點來確定最優值 。
網格搜索法一般會先使用較廣的搜索范圍和較大的步長, 來尋找全局最優值可能的位置; 然后會逐漸縮小搜索范圍和步長, 來尋找更精確的最優值。 這種操作方案可以降低所需的時間和計算量, 但由於目標函數一般是非凸的, 所以很可能會錯過全局最優值。
隨機搜索:
不再測試上界和下界之間的所有值, 而是在搜索范圍中隨機選取樣本點。 它的理論依據是, 如果樣本點集足夠大, 那么通過隨機采樣也能大概率地找到全局最優值, 或其近似值。
貝葉斯優化算法 :
網格搜索和隨機搜索在測試一個新點時, 會忽略前一個點的信息;而貝葉斯優化算法則充分利用了之前的信息 。貝葉斯優化算法通過對目標函數形狀進行學習, 找到使目標函數向全局最優值提升的參數。
具體來說, 它學習目標函數形狀的方法是, 首先根據先驗分布, 假設一個搜集函數; 然后, 每一次使用新的采樣點來測試目標函數時, 利用這個信息來更新目標函數的先驗分布; 最后, 算法測試由后驗分布給出的全局最值最可能出現的位置的點。
需要注意的地方, 一旦找到了一個局部最優值, 它會在該區域不斷采樣, 所以很容易陷入局部最優值。 為了彌補這個缺陷, 貝葉斯優化算法會在探索和利用之間找到一個平衡點, “探索”就是在還未取樣的區域獲取采樣點;而“利用”則是根據后驗分布在最可能出現全局最值的區域進行采樣。
9. 過擬合與欠擬合
過擬合是指模型對於訓練數據擬合呈過當的情況 ,模型在訓練集上的表現很好, 但在測試集和新數據上的表現較差。
欠擬合指的是模型在訓練和預測時表現都不好的情況。
降低“過擬合”風險的方法 ?
-
從數據入手, 獲得更多的訓練數據,更多的樣本可以讓模型學習到更多的有效特征,減少噪聲的影響。直接增加實驗數據比較困難,可以通過數據增強的方式擴充。
-
降低模型復雜度。 在數據較少時, 模型過於復雜是產生過擬合的主要因素, 適當降低模型復雜度可以避免模型擬合過多的采樣噪聲。 例如, 在神經網絡模型中減少網絡層數、 神經元個數等; 在決策樹模型中降低樹的深度、 進行剪枝等 。
-
正則化方法。 給模型的參數加上一定的正則約束, 比如將權值的大小加入到損失函數中。 以L2正則化為例:
-
集成學習方法。 集成學習是把多個模型集成在一起, 來降低單一模型的過擬合風險, 如Bagging方法 。
降低“欠擬合”風險的方法 ?
- 添加新特征。 當特征不足或者現有特征與樣本標簽的相關性不強時, 模型容易出現欠擬合。 通過挖掘“上下文特征”“ID類特征”“組合特征”等新的特征, 往往能夠取得更好的效果。 在深度學習潮流中, 有很多模型可以幫助完成特征工程, 如因子分解機、 梯度提升決策樹、 Deep-crossing等都可以成為豐富特征的方法。
- 增加模型復雜度。 簡單模型的學習能力較差, 通過增加模型的復雜度可以使模型擁有更強的擬合能力。 例如, 在線性模型中添加高次項, 在神經網絡模型中增加網絡層數或神經元個數等。
- 減小正則化系數。