《美團機器學習實踐》第1章 問題建模

1.1 評估指標
評估指標用於反映模型效果。在預測問題中,要評估模型的效果,就需要將模型的預測結果f(X)f(X)和真實標註YY進行比較,評估指標定義爲f(X)f(X)YY的函數。

通常,線下使用的是機器學習評估指標,而線上使用的是業務指標(比如,在線支付的風控模型,線下使用的是風險交易筆數的準召率,而線上使用的業務指標卻是資損率,這就會導致線上、線下的不一致)。所以,在模型訓練的階段,要設法找到與線上業務指標相一致的線下指標,“一致”的意思是指標的變化趨勢一樣。

評估指標根據任務類型的不同,可以分爲分類指標、迴歸指標、聚類指標和排序指標等。

1.1.1 分類指標
1)精確率和召回率
精確率和召回率用於二分類問題,結合混淆矩陣
在這裏插入圖片描述
精確率和召回率的定義爲
在這裏插入圖片描述
精確率和召回率是此消彼長的(事實上,並不是嚴格的“此消彼長”。閾值越小,召回率越高,但是精確率卻未必越低,但是大多數時候精確率是越低的,因爲閾值越小,雖然TP和FP都會變大,但是對FP的影響往往要大於對TP的影響,即FP變大的更多,從而導致精確率下降。),計算精確率和召回率的前提是設定一個閾值,將預測概率大於閾值的樣本歸爲正樣本,預測概率小於閾值的樣本歸爲負樣本。實際中,精確率和召回率重要性不同,有時候精確率更重要,比如風控模型(誤殺太多會帶來糟糕的用戶體驗),有時候召回率更重要,比如推薦模型。
以召回率RR爲橫軸,以精確率PP爲縱軸可以畫P-R曲線。P-R曲線越靠近右上角越好。如果預測的結果,正樣本的預測概率均大於負樣本的預測概率,那麼P-R曲線將變成一條折線。
P-R曲線下的面積叫AP分數(Average Precision Score,平均精確率分數)。
在這裏插入圖片描述
AP分數能在一定程度上反映模型的精確率和召回率都高的比例。但計算起來並不方便,爲此人們提出了一些其他的綜合考慮精確率和召回率的指標。
F1F_{1}值是常用的指標,其是精確率和召回率的調和平均值
2F1=1P+1R\frac{2}{F_{1}}=\frac{1}{P}+\frac{1}{R}
FF值可以泛化爲精確率和召回率不同權重進行加權調和:
Fα=(1+α2)PRα2P+RF_{\alpha}=\frac{(1+\alpha^{2})\cdot P\cdot R}{\alpha^{2}\cdot P + R}
此外,準確率和錯誤率也是常用的評估指標
準確率(accuracy) = TP+TNTP+FP+FN+TN\frac{TP+TN}{TP+FP+FN+TN}
錯誤率(error rate) = FP+FNTP+FP+FN+TN\frac{FP+FN}{TP+FP+FN+TN}
精確率和準確率是有區別的,精確率是一個二分類指標,而準確率能應用於多分類。

2)ROC與AUC
用準確率、召回率對模型的效果進行評價時,需要對預測概率設置一個閾值,這樣就會額外引入一個超參數,並且這個超參數會影響模型的泛化能力。
ROC(Receiver Operating Characteristic)曲線不需要設定這樣的閾值。ROC曲線的縱座標是真正率,而橫座標是假正率。公式是
真正率(TPR) = TPTP+FN\frac{TP}{TP+FN}
假正率(FPR) = FPFP+TN\frac{FP}{FP+TN}
在這裏插入圖片描述
真正率與假正率變化趨勢是一致的。所以FPR-TPR是一條遞增的曲線。ROC曲線的繪製很簡單,只需要按模型的預測概率排序,然後以每一個樣本的預測概率爲閾值,計算該閾值下的TPR、FPR,就可以獲得大量離散的點(FPR,TPR),將這些離散的點連起來,就成了一條接近連續的曲線。
ROC越靠近左上角越好,最好的情況就是ROC曲線變成了一條與座標軸重合的折線,什麼時候ROC會是這樣的折線呢?就是當模型對正樣本的預測概率值都大於對負樣本的預測概率值
AUC即ROC曲線下的面積,取值越大說明模型越可能將正樣本排在負樣本之前。統計學意義上,AUC等於隨機挑選一個正樣本和一個負樣本時,分類器將正樣本排前面的概率。當ROC曲線爲折線時,AUC取得最大值1,此時模型將全部的正樣本排在了負樣本前面(按預測概率)。
AUC的計算方法有多種,物理意義上,AUC是ROC曲線下的面積,那麼利用微元法,曲線下的面積,就是衆多的小梯形面積之和。
在這裏插入圖片描述
概率意義上,AUC衡量的是排序質量,
在這裏插入圖片描述
這裏排序問題的AUC範圍是(0,1),它對排序敏感,而對具體的預測概率不很敏感(改變預測概率,但不改變排序結果,ROC曲線形狀不會變)

3)對數損失
對數損失,即對數似然損失(Log-likelihood Loss),也就是交叉熵損失(cross-entropy Loss)
log loss = logP(YX)-logP(Y|X)
對於二分類問題,對數損失爲
log loss = 1Ni=1N(yilogpi+(1yi)log(1pi))-\frac{1}{N}\sum_{i=1}^{N}{(y_{i}\cdot logp_{i}+(1-y_{i})\cdot log(1-p_{i}))}
其中,pip_{i}爲第ii個樣本預測爲1的概率。
多分類任務中的對數損失爲
log loss = 1Ni=1Nj=1Cyijlogpij-\frac{1}{N}\sum_{i=1}^{N}\sum_{j=1}^{C}{y_{ij}\cdot logp_{ij}}
其中,NN爲樣本數,CC爲類別數,yijy_{ij}是一個二值指標,yij=1y_{ij}=1表示第ii個樣本的類別爲jjpijp_{ij}爲第ii個樣本類別jj的概率。yij,j=1,2,3,...,Cy_{ij},j=1,2,3,...,C中只有一個yijy_{ij}取1,其餘全部取0,假設第ii個樣本屬於類別cc,那麼yic=1y_{ic}=1,預測概率picp_{ic}越接近1越好(loss越小)。
log loss衡量的是預測概率分佈與真實概率分佈的差異性,取值越小越好。與AUC不同,log loss對預測概率敏感。

1.1.2 迴歸指標
1)平均絕對誤差
平均絕對誤差(Mean Absolute Error, MAE),也叫L1範數損失
在這裏插入圖片描述
2)平均絕對百分誤差(MAPE)
在這裏插入圖片描述
如果MAPE=10,這表明預測平均偏離真實值10%。MAPE是一個無量綱的量,所以在特定場景下不同問題具有一定可比性。
3)均方根誤差
在這裏插入圖片描述
RMSE對離羣點敏感,健壯性不如MAE。模型使用RMSE作爲損失函數是對數據分佈的平均值進行擬合。

1.1.3 排序指標
1)平均準確率均值(Mean Average Precision,MAP)
(沒看懂)

2)NDCG
先引入一個概念,相關等級。如在網頁搜索場景中,輸入一個詞,搜索引擎會返回若干網頁,每一個返回的網頁和搜索關鍵詞的相關性是不一樣的,可以用一些數值來表示相關性大小,2表示非常相關,1表示相關,0表示無關,-1表示垃圾文件。
用rel來表示相關等級,我們可以計算前pp個位置累計得到的收益(可以理解爲對返回的前pp個網頁好壞的衡量結果)爲
CGp=i=1preliCG_{p}=\sum_{i=1}^{p}{rel_{i}}
DCG (Discounted Cumulative Gain)
在CG中的計算沒有考慮到位置信息,比如檢索到了三個文檔相關度一次爲(3,-1,1)和(-1,1,3),顯然前面的排序好一點,但是兩個排名的CG值是相同的,所以要在CG運算中中加入位置信息的計算。假設每個位置按照從小到大排序,它們的價值依次遞減,如假設第ii個位置的價值爲1log2(i+1)\frac{1}{log_{2}(i+1)},那麼DCG的公式即爲
DCGp=i=1prelilog2(i+1)DCG_{p} = \sum_{i=1}^{p}{\frac{rel_{i}}{log_{2}(i+1)}}
另一種比較常用的,用來增加相關度影響比重的DCG計算方式是:
DCGp=i=1p2reli1log2(i+1)DCG_{p} = \sum_{i=1}^{p}{\frac{2^{rel_{i}}-1}{log_{2}(i+1)}}
IDCG是理想狀態下的DCG,即DCG取得最大值的情況。公式爲:
IDCGp=i=1REL2reli1log2(i+1)IDCG_{p} = \sum_{i=1}^{|REL|}{\frac{2^{rel_{i}}-1}{log_{2}(i+1)}}
其中|REL|表示文檔按照相關性從大到小的順序排序,取前p個文檔組成的集合。
NDCG (Normalize DCG)
由於每個查詢語句所能檢索到的結果文檔集合長度不一,p值的不同會對DCG的計算有較大的影響。所以不能對不同查詢語句的DCG進行求平均,需要進行歸一化處理。NDCG就是用IDCG進行歸一化處理,表示當前DCG比IDCG還差多大的距離。公式如下:
NDCGp=DCGpIDCGpNDCG_{p} = \frac{DCG_{p}}{IDCG_{p}}
NDCG的值在(0,1)範圍內,不同查詢語句之間就可以做比較,就可以求多個查詢語句的平均NDCG。

1.2 樣本選擇
用較少量的訓練樣本,訓練效果不會變差。
做樣本選擇,有三個好處:
1)數據量過大時,需要花大量的計算資源以及計算時間,減少數據量,能夠縮減模型的運算時間。
2)相關度太低的數據對模型沒有幫助,可以去掉。
3)數據中難免有噪聲,去掉噪聲,可以提高訓練集的數據質量,改善模型效果。
樣本選擇的方法主要包括數據去噪、採樣、原型選擇、訓練集選擇。

1.2.1 數據去噪
噪聲數據的存在幾乎無法避免,噪聲的存在,會導致數據質量變低,影響到特徵提取,但通過在訓練集中引入噪聲數據也能起到提升模型健壯性的作用。可見,噪聲的存在,既可能帶來壞處,也可能帶來好處。如果選擇的模型對噪聲對噪聲敏感的時候,問題會更嚴重(例如,涉及距離度量的logistic regression就比樹模型對噪聲更敏感)。
噪聲數據在監督學習問題中影響比較明顯,會改變特徵和標註之間的關係,進而影響到特徵提取。爲了使得模型對噪聲不那麼敏感,在建模的時候,會權衡模型的健壯性與效果。
噪聲大致可以分爲兩類,一類是特徵值不對,比如特徵值缺失、超出特徵值域範圍等。另一類是標註不對,比如二分類正樣本標註成負樣本。實際中,兩種類型的噪聲對模型的影響是不一樣的,發現並去除標註帶噪聲的實例,通常對模型是有明顯的幫助的;而去除特徵帶噪聲的數據很多時候使得模型的效果變差。
針對錯誤標註帶來的噪聲,最常見的處理方案有集成過濾法、交叉驗證委員會過濾法、迭代分割過濾法
R裏有一個包NoiseFiltersR,可以用來做標籤噪聲數據的過濾。

1.2.2 採樣
採樣分爲對樣本採樣和對特徵採樣。採樣能夠客服高維特徵以及大量數據導致的問題,有助於降低成本,縮短時間甚至提升效果。在不平衡分類問題中還能幫助平衡樣本比例。採樣時需要確定採樣方法和採樣比例。
常見的採樣方法有
1)無放回簡單隨機抽樣
2)有放回簡單抽樣
隨機森林中對樣本的採樣就是採樣的有放回的採樣。
3)平衡採樣
常用於不平衡分類問題中。如果正樣本的數目遠少於負樣本,可以對正樣本進行 上採樣,也可以對負樣本進行下采樣。ADASYN和SMOTE是上採樣裏兩個比較常用的方法
4)整羣採樣
5)分層抽樣
在分類問題中,可以對每個類別,分別進行採樣。

參考資料:
https://blog.csdn.net/jiangyongy/article/details/78698096
https://en.wikipedia.org/wiki/Discounted_cumulative_gain
https://pdfs.semanticscholar.org/f4c8/58673231fb2e6d1eb53ad7e96a1bfbd58cfa.pdf
https://cran.r-project.org/web/packages/NoiseFiltersR/NoiseFiltersR.pdf

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章