摘要:線下評估策略通常在數據競賽中,參賽者是不能將全部數據都用于訓練模型的,因為這會導致沒有數據集對該模型的效果進行線下驗證。當時,也就是折交叉驗證,被稱作留一驗證。率也叫真正例率,率也叫假正例率,注意區(qū)別于準確率和召回率。
通常在數據競賽中,參賽者是不能將全部數據都用于訓練模型的,因為這會導致沒有數據集對該模型的效果進行線下驗證。為了解決這一問題,就要考慮如何對數據進行劃分,構建合適的線下驗證集。針對不同類型的問題,需要不同的線下驗證方式,在此分為強時序性和弱時序性。
對于含有明顯時間序列因素的賽題,可將其看作強時間序行問題,即線上數據的時間都在離線數據集之后,這種情況下就可以采用時間上最接近測試集的數據做驗證集
例如,天池平臺上的“乘用車零售量預測”競賽,初賽提供 2012 年 1 月至 2017 年 10 月車型銷售數據,需要參賽者預測 2017 年 11 月的車型銷售數據。這是一個很明顯的含時間序列因素的問題,那么我們可以選擇數據集的最后一個月作為驗證集。
這類問題的驗證方式主要為 K 折交叉驗證,根據 K 的取值不同,會衍生出不同的交叉驗證方式,具體如下。
下面給出通用的交叉驗證代碼,具體代碼如下:
from sklearn.model_selection import KFoldNFOLDS = 5folds = KFold(n_splits=NFOLDS, shuffle=True, random_state=2021)for trn_idx, val_idx in folds.split(X_train, y): train_df, train_label = X_train.iloc[trn_idx, :], y[trn_idx] valid_df, valid_label = X_train.iloc[val_idx, :], y[val_idx]
在分類問題中,錯誤率是分類結果錯誤的樣本數占樣本總數的比例,精度則是分類結果中正確的樣本總數的比例。
假設一個腫瘤患病問題,患腫瘤的概率為0.5%,概率很小,對于這樣一個一邊概率遠大于另一邊的我們稱為傾斜分類skewed class.
如果我們仍然采用accuracy來衡量這樣的問題,那么對于一個始終預測y=0的模型,它預測上面的腫瘤問題的錯誤率也僅僅是0.5%.
Accuracy = (true positives + true negatives) / (total examples)
為此,我們引入Precision和Recall 如下所示:
此時,如果我們用Precision和Recall去評判剛剛y=0的模型,那么結果都是0
一般而言,Precision和Recall的圖像不固定,不過都呈現上圖中的趨勢。
當我們設高閾值時,我們得到的預測結果中得到腫瘤的概率也就越大因而Precision越高,不過可能漏掉一部分腫瘤的可能也越大從而Recall越高。
F1-score是權衡Precision和Recall后給出的一個評判模型的式子
F 1 = P R P + R F_1 = /frac{PR}{P+R} F1?=P+RPR?
ROC 曲線用于繪制采用不同分類閾值時的 TP 率(TPR)與 FP 率(FPR)。我們根據學習器的預測結果,把閾值從0變到最大,即剛開始是把每個樣本作為正例進行預測,隨著閾值的增大,學習器預測正樣例數越來越少,直到最后沒有一個樣本是正樣例。
TP率也叫真正例率,FP率也叫假正例率,注意區(qū)別于準確率和召回率。
T P R = T P T P + F N TPR = /frac{TP}{TP+FN} TPR=TP+FNTP?
F P R = F P F P + T N FPR = /frac{FP}{FP+TN} FPR=FP+TNFP?
AUC是一個極常用的評價指標,它定義為 ROC 曲線下的面積。之所以使用 AUC 作為評價指標,是因為ROC 曲線在很多時候并不嗯呢該清晰地說明哪個分類器的效果更好,而 AUC 作為一個數值,其值越大就代表分類器的效果越好。
? ln ? L ( w , b ) = ∑ i n ∑ k m ? y ^ k i ln ? f w , b ( x k i ) -/ln{L(w,b)} = /sum_{i}^{n}/sum_{k}^{m}-/hat{y}_k^i/ln{f_{w,b}(x^i_k)} ?lnL(w,b)=i∑n?k∑m??y^?ki?lnfw,b?(xki?)
其在二分類問題上的表現形式為:
? ln ? ( w , b ) = ∑ i n ? [ y ^ i ln ? f w , b ( x i ) + ( 1 ? y ^ i ) ln ? ( 1 ? f w , b ( x i ) ) ] -/ln{(w,b)} = /sum_{i}^{n}-[/hat{y}^{i}/ln{f_{w,b}(x^i)}+ (1-/hat{y}^{i})/ln{(1-f_{w,b}(x^i))}] ?ln(w,b)=i∑n??[y^?ilnfw,b?(xi)+(1?y^?i)ln(1?fw,b?(xi))]
舉個栗子,假設我們的一個sample經過softmax后得到的 y = f w , b ( x ) = [ 0.9 0.1 ] y=f_{w,b}(x)=/begin{bmatrix} 0.9 // 0.1// /end{bmatrix}/quad y=fw,b?(x)=[0.90.1?],其label為 y ^ = [ 1 0 ] /hat{y}=/begin{bmatrix} 1 // 0// /end{bmatrix}/quad y^?=[10?],那么在第一個式子里計算出的值為 ? ( 1 ln ? 0.9 + 0 ln ? 0.1 ) = ? ln ? 0.9 -(1 /ln0.9+0/ln{0.1})=-/ln0.9 ?(1ln0.9+0ln0.1)=?ln0.9,第二計算結果即為 ? ln ? 0.9 ? 0 ln ? 0.1 -/ln0.9-0/ln0.1 ?ln0.9?0ln0.1。再比方說,我們的另一個sample經過softmax后得到的 y = f w , b ( x ) = [ 0.1 0.8 0.1 ] y=f_{w,b}(x)=/begin{bmatrix} 0.1 // 0.8 // 0.1// /end{bmatrix}/quad y=fw,b?(x)=???0.10.80.1????,其label為 y ^ = [ 0 1 0 ] /hat{y}=/begin{bmatrix} 0 // 1 // 0// /end{bmatrix}/quad y^?=???010????,此時我們有 ? ln ? L ( w , b ) = ? 0 ln ? 0.1 ? 1 ln ? 0.8 ? 0 ln ? 0.1 = ? ln ? 0.8 -/ln{L(w,b)}=-0/ln0.1-1/ln{0.8}-0/ln0.1=-/ln0.8 ?lnL(w,b)=?0ln0.1?1ln0.8?0ln0.1=?ln0.8
像上面這樣我們如果有兩個distribution的點 y ^ /hat{y} y^?和 y y y,我們記他們的交叉熵即為 H ( y ^ , y ) = ? ∑ k y ^ k ln ? y k H(/hat{y},y)=-/sum/limits_{k}/hat{y}_k/ln{y_k} H(y^?,y)=?k∑?y^?k?lnyk?.
cross entropy交叉熵的含義是表達著兩個distribution有多接近,如果這兩個點的distribution一模一樣的話,那它們計算出來的cross entropy就是0,用在我們這里的分類問題中,我們就是希望 y ^ /hat{y} y^?與 y y y越接近越好。
回歸指標 | 計算公式 |
---|---|
MSE | 1 m ∑ i = 1 n ( y ? y ^ ) 2 /frac{1}{m}/sum/limits_{i=1}^{n}(y - /hat{y})^2
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯系管理員刪除。 轉載請注明本文地址:http://systransis.cn/yun/124103.html 相關文章
發(fā)表評論0條評論EddieChan男|高級講師TA的文章閱讀更多
閱讀需要支付1元查看
|