第二章 模型評估

[toc] 面試

1. 評價指標的侷限性

  • 準確率(Accuracy)
  • 精確率(Precision)
  • 召回率(Recall)
  • 均方根偏差(Root Mean Square Error, RMSE)

1.1 準確率

準確率: 指分類正確的樣本佔總樣本個數的比例算法

Accuracy = \frac{n_{correct}}{n_{total}}

準確度的問題: 當不一樣類別的樣本比例很是不均衡時,佔比大的類別每每成爲影響準確率的最主要因素。 例如:當負樣本佔99%,分類器把全部樣本都預測爲負樣本也能夠得到99%的準確率。函數

1.2 精確率與召回率

精確度: 分類正確的正樣本個數佔分類器斷定爲正樣本的樣本個數的比例。 召回率: 分類正確的正樣本個數佔真正的正樣本個數的比例。性能

在排序問題中,一般沒有一個肯定的閥值把獲得的結果直接斷定爲正樣本或負樣本,而是採用TopN返回結果的Precision值和Recall值來衡量排序模型的性能,即認爲模型返回的Top N的結果就是模型斷定的正樣本,而後計算前N個位置上的準確率Precision@N和前N個位置上的召回率Recall@N。學習

Precision值和Recall值是既矛盾又統一的兩個指標,爲了提升Precision值,分類器須要儘可能在「更有把握」時才把樣本預測爲正樣本,但此時每每會由於過於保守而漏掉不少「沒有把握」的正樣本,致使Recall值下降。

爲了綜合評價一個排序模型的好壞,不只要看precision和recall,並且最好繪製模型P-R(precision-recall)曲線測試

由圖可見,當召回率接近於0時,模型A的精確率爲0.9,模型B的精確率是1,這說明模型B得分前幾位的樣本所有是真正的正樣本,而模型A即便得分最高的幾個樣本也存在預測錯誤的狀況。而且,隨着召回率的增長,精確率總體呈降低趨勢。可是,當召回率爲1時,模型A的精確率反而超過了模型B。這充分說明,只用某個點對應的精確率和召回率是不能全面地衡量模型的性能,只有經過P-R曲線的總體表現,纔可以對模型進行更爲全面的評估。優化

F1 scorespa

F1 = \frac{2 \times precision \times recall} {precision + recall}

1.3 均方根偏差RMSE

RMSE的計算公式:code

RMSE = \sqrt{ {\frac {{\sum_{i=1}^n} {(y_i - \overline{y}_{i} )}^2}  {n}}}

$y_i$是第i個樣本點的真實值,$\overline{y}_{i}$ 是第i個樣本預測值, n是樣本點個數。視頻

RMSE可以很好地反映迴歸模型預測值與真實值的偏離程度。

比RMSE的魯棒性更好的指標,平均絕對百分比偏差(Mean Absolute Percent Error, MAPE),定義以下:

物理含義:相比RMSE,MAPE至關於把每一個點的偏差進行了歸一化,下降了個別離羣點帶來的絕對偏差的影響。


2. ROC曲線

ROC曲線是Receiver Operating Characteristic Curve的簡稱,中文名爲「受試者工做特徵曲線」。ROC曲線源於軍事領域,然後在醫學領域應用甚廣,「受試者工做特徵曲線」這一名稱也正是來自於醫學領域。

ROC曲線的橫座標爲假陽性率(False Positive Rate,FPR);縱座標爲真陽性率(True Positive Rate,TPR) 。FPR和TPR的計算方法分別爲:

上式中,P是真實的正樣本的數量,N是真實的負樣本的數量,TP是P個正樣本中被分類器預測爲正樣本的個數FP是N個負樣本中被分類器預測爲正樣本的個數

下面例子有助於學習: 只看定義確實有點繞,爲了更直觀地說明這個問題,咱們舉一個醫院診斷病人的例子。假設有10位疑似癌症患者,其中有3位很不幸確實患了癌症(P=3),另外7位不是癌症患者(N=7)。醫院對這10位疑似患者作了診斷,診斷出3位癌症患者,其中有2位確實是真正的患者(TP=2)。那麼真陽性率TPR=TP/P=2/3。對於7位非癌症患者來講,有一位很不幸被誤診爲癌症患者(FP=1),那麼假陽性率FPR=FP/N=1/7。對於「該醫院」這個分類器來講,這組分類結果就對應ROC曲線上的一個點(1/7,2/3)。

2.1 如何畫出ROC曲線?

**ROC曲線是經過不選移動分類器的<u>截斷點</u>來生成曲線上的一組關鍵點。

截斷點:區分正負預測結果的閾值。

經過動態地調整截斷點,從最高的得分開始(其實是從正無窮開始,對應着ROC曲線的零點),逐漸調整到最低得分,每個截斷點都會對應一個FPR和TPR,在ROC圖上繪製出每一個截斷點對應的位置,再鏈接全部點就獲得最終的ROC曲線。

其實,還有一種更直觀地繪製ROC曲線的方法。首先,根據樣本標籤統計出正負樣本的數量,假設正樣本數量爲P,負樣本數量爲N;接下來,把橫軸的刻度間隔設置爲1/N,縱軸的刻度間隔設置爲1/P;再根據模型輸出的預測機率對樣本進行排序(從高到低);依次遍歷樣本,同時從零點開始繪製ROC曲線,每遇到一個正樣本就沿縱軸方向繪製一個刻度間隔的曲線,每遇到一個負樣本就沿橫軸方向繪製一個刻度間隔的曲線,直到遍歷完全部樣本,曲線最終停在(1,1)這個點,整個ROC曲線繪製完成。

2.2 如何計算AUC?

AUC,就是ROC曲線下的面積。可以量化地反映基於ROC曲線衡量出的模型性能。AUC越大,說明分類器越可能把真正的正樣本排在前面,分類性能越好。

計算AUC值只須要沿着ROC橫軸作積分就能夠了。

2.3 比較ROC曲線和P-R曲線有什麼特色?

相比P-R曲線,ROC曲線有一個特色,當正負樣本的分佈發生變化時,ROC曲線的形狀可以基本保持不變,而P-R曲線的形狀通常會發生較劇烈的變化。(從二者曲線的定義、物理含義就能很好地理解)

能夠看出,P-R曲線發生了明顯的變化,而ROC曲線形狀基本不變。這個特色讓ROC曲線可以儘可能下降不一樣測試集帶來的干擾,更加客觀地衡量模型自己的性能。這有什麼實際意義呢?在不少實際問題中,正負樣本數量每每很不均衡。好比,計算廣告領域常常涉及轉化率模型,正樣本的數量每每是負樣本數量的1/1000甚至1/10000。若選擇不一樣的測試集,P-R曲線的變化就會很是大,而ROC曲線則可以更加穩定地反映模型自己的好壞。因此,ROC曲線的適用場景更多,被普遍用於排序、推薦、廣告等領域。但須要注意的是,選擇P-R曲線仍是ROC曲線是因實際問題而異的,若是研究者但願更多地看到模型在特定數據集上的表現,P-R曲線則可以更直觀地反映其性能。


3. 餘弦距離的應用

對於兩個向量A和B,其他弦類似度定義爲 即兩個向量夾角的餘弦,關注的是向量之間的角度關係,並不關心它們的絕對大小,其取值範圍是[-1,1]。當一對文本類似度的長度差距很大、但內容相近時,若是使用詞頻或詞向量做爲特徵,它們在特徵空間中的的歐氏距離一般很大;而若是使用餘弦類似度的話,它們之間的夾角可能很小,於是類似度高。此外,在文本、圖像、視頻等領域,研究的對象的特徵維度每每很高,餘弦類似度在高維狀況下依然保持「相同時爲1,正交時爲0,相反時爲-1」的性質,而歐氏距離的數值則受維度的影響,範圍不固定,而且含義也比較模糊。

在一些場景,例如Word2Vec中,其向量的模長是通過歸一化的,此時歐氏距離與餘弦距離有着單調的關係,即

結論: 整體來講,歐氏距離體現數值上的絕對差別,而餘弦距離體現方向上的相對差別。例如,統計兩部劇的用戶觀看行爲,用戶A的觀看向量爲(0,1),用戶B爲(1,0);此時兩者的餘弦距離很大,而歐氏距離很小;咱們分析兩個用戶對於不一樣視頻的偏好,更關注相對差別,顯然應當使用餘弦距離。而當咱們分析用戶活躍度,以登錄次數(單位:次)和平均觀看時長(單位:分鐘)做爲特徵時,餘弦距離會認爲(1,10)、(10,100)兩個用戶距離很近:但顯然這兩個用戶活躍度是有着極大差別的,此時咱們更關注數值絕對差別,應當使用歐氏距離。 特定的度量方法適用於什麼樣的問題,須要在學習和研究中多總結和思考,這樣不只僅對面試有幫助,在遇到新的問題時也能夠活學活用。

3.1 餘弦距離是否是一個嚴格定義的距離?

距離定義:在一個集合中,若是每一對元素都可惟一肯定一個實數,使得三條距離公理(正定性,對稱性,三角不等式)成立,則該實數可稱爲這對元素之間的距離。


4. A/B測試的陷阱

4.1 在對模型進行過充分的離線評估以後,爲何還要進行在線A/B測試?

  1. 離線評估沒法徹底消除模型過擬合的影響。
  2. 離線評估沒法徹底還原線上工程環境。
  3. 某些商業指標在離線評估中沒法計算。

4.2 如何進行線上A/B測試?

進行A/B測試的主要手段是進行用戶分桶,即將用戶分紅實驗組和對照組,對實驗組的用戶施以新模型,對對照組的用戶施以舊模型。在分桶的過程當中,要注意樣本的獨立性和採樣方式的無偏性,確保同一個用戶每次只能分到同一個桶中,在分桶過程當中所選取的user_id須要是一個隨機數,這樣才能保證桶中的樣本是無偏的。


5. 模型評估的方法

5.1 模型評估過程當中,有哪些主要的驗證方法,優缺點是什麼?

1. Holdout檢驗 Holdout 檢驗是最簡單也是最直接的驗證方法,它將原始的樣本集合隨機劃分紅訓練集和驗證集兩部分。比方說,對於一個點擊率預測模型,咱們把樣本按照70%~30%的比例分紅兩部分,70%的樣本用於模型訓練;30%的樣本用於模型驗證,包括繪製ROC曲線、計算精確率和召回率等指標來評估模型性能。

Holdout 檢驗的缺點很明顯,即在驗證集上計算出來的最後評估指標與原始分組有很大關係。爲了消除隨機性,研究者們引入了「交叉檢驗」的思想。

2. 交叉檢驗 k-fold交叉驗證:首先將所有樣本劃分紅k個大小相等的樣本子集;依次遍歷這k個子集,每次把當前子集做爲驗證集,其他全部子集做爲訓練集,進行模型的訓練和評估;最後把k次評估指標的平均值做爲最終的評估指標。在實際實驗中,k常常取10。

留一驗證:每次留下1個樣本做爲驗證集,其他全部樣本做爲測試集。樣本總58數爲n,依次對n個樣本進行遍歷,進行n次驗證,再將評估指標求平均值獲得最終的評估指標。在樣本總數較多的狀況下,留一驗證法的時間開銷極大。事實上,留一驗證是留p驗證的特例。留p驗證是每次留下p個樣本做爲驗證集,而從n個元素中選擇p個元素有C%種可能,所以它的時間開銷更是遠遠高於留一驗證,故而不多在實際工程中被應用。

自助法:自助法是基於自助採樣法的檢驗方法。對於總數爲n的樣本集合,進行n次有放回的隨機抽樣,獲得大小爲n的訓練集。n次採樣過程當中,有的樣本會被重複採樣,有的樣本沒有被抽出過,將這些沒有被抽出的樣本做爲驗證集,進行模型驗證,這就是自助法的驗證過程。

5.2 自助法,對n個樣本進行採樣,當n趨於無窮大時,有多少樣本從未被選擇過?


6. 超參數調優

  • 網格搜索:經過查找搜索範圍內的全部的點來肯定最優值
  • 隨機搜索:在搜索範圍內隨機選取樣本點
  • 貝葉斯優化算法:貝葉斯優化算法在尋找最優最值參數時,採用了與網格搜索、隨機搜索徹底不一樣的方法。網格搜索和隨機搜索在測試一個新點時,會忽略前一個點的信息;而貝葉斯優化算法則充分利用了以前的信息。貝葉斯優化算法經過對目標函數形狀進行學習,找到使目標函數向全局最優值提高的參數。具體來講,它學習目標函數形狀的方法是,首先根據先驗分佈,假設一個蒐集函數;而後,每一次使用新的採樣點來測試目標函數時,利用這個信息來更新目標函數的先驗分佈;最後,算法測試由後驗分佈給出的全局最值最可能出現的位置的點。對於貝葉斯優化算法,有一個須要注意的地方,一旦找到了一個局部最優值,它會在該區域不斷採樣,因此很容易陷入局部最優值。爲了彌補這個缺陷,貝葉斯優化算法會在探索和利用之間找到一個平衡點,「探索」就是在還未取樣的區域獲取採樣點;而「利用」則是根據後驗分佈在最可能出現全局最值的區域進行採樣。

7. 過擬合與欠擬合

7.1 過擬合和欠擬合具體指的是什麼現象?

過擬合:在訓練集上表現很好,在測試集和新數據上表現不好。 欠擬合:訓練和測試都表現很差。

7.2 下降過擬合和欠擬合風險的方法?

下降過擬合的方法

  1. 得到更多的數據
  2. 下降模型複雜度。
  3. 正則化方法。(給模型參數加上必定的正則約束)
  4. 集成學習。集成學習是把多個模型集成在一塊兒,來下降單一模型的過擬合風險,如Bagging方法。

下降欠擬合風險的方法

  1. 添加新特徵
  2. 增長模型複雜度
  3. 減少正則化係數
相關文章
相關標籤/搜索