[模型評(píng)估]Evaluation、Vaildation

sklearn evaluation(評(píng)估)

sklearn Estimator(model)通常類(lèi)中有一個(gè)score方法來(lái)作為默認(rèn)評(píng)分標(biāo)準(zhǔn),而呼叫evaluation(例如:cross_val_score)有一個(gè)參數(shù)scoring可以另外指定評(píng)分標(biāo)準(zhǔn),輸入為下圖的scoring字符串,傳入evaluation的Estimator還必須實(shí)現(xiàn)fitpredict方法(其實(shí)就是訓(xùn)練(參數(shù)為x,y)跟預(yù)測(cè)(參數(shù)為x))。
可以自定義建立Estimator跟method搭配tensorflow或pytorch使用。

  • Scoring轉(zhuǎn)scorer
    有時(shí)候Scoring是loss(損失函數(shù))越高表示模型表現(xiàn)越差,我們將損失轉(zhuǎn)成得分,越高分表示模型表現(xiàn)越好。
    sklearn.metrics.make_scorer

Scoring

非平衡數(shù)據(jù)正確性

  • 分類(lèi)器
    一個(gè)常見(jiàn)的例子,我們預(yù)測(cè)一個(gè)人是否會(huì)得腦癌,而我們有個(gè)模型正確率為98%,我們的判斷方式是名子叫魯夫的人就會(huì)得腦癌。我們可以在精確率(預(yù)測(cè)為陽(yáng)性且正確的比例)與召回率(實(shí)際為陽(yáng)性預(yù)測(cè)正確的比例)之間做取捨。


sklearn指標(biāo)
sklearn.metrics.recall_score召回


sklearn.metrics.precision_score精確

sklearn.metrics.balanced_accuracy_score平衡準(zhǔn)確率

sklearn.metrics.accuracy_score準(zhǔn)確率

  • 物件偵測(cè)計(jì)算同上
    通常物件偵測(cè)會(huì)計(jì)算IOU大於0.5為T(mén)P,小於0.5為FP。
    [class1]
    precision: 2/3=66% (判對(duì)class1 數(shù)量/被框?yàn)閏lass1的數(shù)量),越低過(guò)檢越高。
    recall: 2/4=50% (判對(duì)class1 數(shù)量/所有class1樣本數(shù)),越低漏檢越高。
    [class2]
    precision: 1/1=100% (判對(duì)class2 數(shù)量 / 被框?yàn)閏lass2 的數(shù)量),越低過(guò)檢越高。
    recall: 1/1=100% (判對(duì)class2 數(shù)量 / 所有class2 樣本數(shù)),越低漏檢越高。



    AP計(jì)算:
    計(jì)算類(lèi)別曲線(xiàn)下面積(area under curve, AUC)



    mAP計(jì)算:
    計(jì)算所有類(lèi)別AP的平均。

validation(驗(yàn)證)

通常我們會(huì)將Data分成train set(訓(xùn)練集)以及test set(測(cè)試集)來(lái)檢驗(yàn)我們訓(xùn)練的模型一般化能力,然而我們?cè)谟?xùn)練模型時(shí),時(shí)常需要調(diào)整許多hyperparameter(超參數(shù)),所以我們會(huì)拿一部分資料來(lái)做validation(驗(yàn)證)稱(chēng)為validation set,來(lái)檢驗(yàn)超參數(shù)的好壞,但是validation是不能拿test set來(lái)使用的,因?yàn)檫@等同於讓訓(xùn)練模型去適應(yīng)test set的資料,就失去測(cè)試一般化能力(適應(yīng)訓(xùn)練資料以外資料的能力)的意義了,最後t(yī)est set測(cè)試的資料我們可以稱(chēng)它為holdout set。

這是最簡(jiǎn)單的validation方式,將資料直接分成train、holdout 或train、validation、holdout。

Cross validation(交叉驗(yàn)證)

sklearn.model_selection

  • K-fold CV
    K-fold是常用的交叉驗(yàn)證方法,做法是將資料隨機(jī)平均分成k個(gè)集合,然後輪流使用k-1個(gè)不同集合來(lái)作validation,共做k-1次訓(xùn)練,最後再使用沒(méi)作訓(xùn)練的那一個(gè)holdout set測(cè)試訓(xùn)練成果。
    k越大,每次投入的訓(xùn)練集的數(shù)據(jù)越多,模型的bias越小。但是k越大,variance可能越高導(dǎo)致overfitting,同時(shí)k越大運(yùn)算量越大。


    sklearn.model_selection.cross_val_score

  • Leave-one-out cross-validation(LOOCV)
    LOOCV是指我們一樣保留一部分資料作為holdout,但將剩餘的每一筆數(shù)據(jù)都作為一個(gè)集合,每作一次train就做一次validation。


    sklearn.model_selection.LeaveOneOut

    sklearn.model_selection.cross_val_score

hyperparameter最佳化

步驟1:給定超參數(shù)一個(gè)範(fàn)圍,從設(shè)定超參數(shù)中隨機(jī)取樣。
步驟2:進(jìn)行訓(xùn)練,從驗(yàn)證資料辨識(shí)準(zhǔn)確度。
步驟3:重複前兩步驟多次,從結(jié)果慢慢縮小範(fàn)圍。

sklearn.model_selection.fit_grid_point
sklearn.model_selection.GridSearchCV



underfitting、overfitting

hypothesis set(假設(shè)集)是我們假設(shè)的一個(gè)function set,例如: wx+b,我們選定參數(shù)(w、b)後的那個(gè)function稱(chēng)predict(預(yù)測(cè)函數(shù)),例如: 2x+3。
y 是我們真實(shí)產(chǎn)生數(shù)據(jù)的一個(gè)function,我們的數(shù)據(jù)是y |_x + noise(噪音) + error(誤差),noise通常有規(guī)律性(例如常態(tài)分怖),error為現(xiàn)實(shí)生活中數(shù)據(jù)可能因?yàn)槿藶?、機(jī)器、測(cè)量等等產(chǎn)生誤差。

  1. high Bias即所謂的Underfitting,訓(xùn)練與驗(yàn)證loss很高(表示數(shù)據(jù)y與predic差異很大),可能是參數(shù)過(guò)少導(dǎo)致無(wú)法擬合訓(xùn)練集(模型過(guò)於簡(jiǎn)單),也可能是數(shù)據(jù)noise或error太大(數(shù)據(jù)質(zhì)量太差),或是gradient descent無(wú)法到達(dá)最低點(diǎn)等等(超參數(shù)及模型需調(diào)整)。

    參數(shù)過(guò)少

    數(shù)據(jù)noise、error太大

  2. low Bias high Variance即所謂的Overfitting,訓(xùn)練loss很低,但驗(yàn)證loss卻很高。
    可能是參數(shù)過(guò)多導(dǎo)致過(guò)度擬合訓(xùn)練集(模型太過(guò)複雜,需要降低複雜度、regularization或Dropout等),也可能是數(shù)據(jù)過(guò)少(沒(méi)有足夠的信息來(lái)判斷規(guī)則)等等。

    hypothesis set參數(shù)過(guò)多

    數(shù)據(jù)過(guò)少

underfitting與gradient descent關(guān)係

  • loss作圖
    這邊假設(shè)我們的hypothesis = wx+b,那麼 loss = (y-wx+b)^2,這邊2個(gè)變量(w、b)跟一個(gè)應(yīng)變量(loss),其他x、y為常數(shù)(已知),我們可以用loss對(duì)y作圖(3維)。z軸是loss,另外兩軸是我們的hypothesis set參數(shù)(w、b)。
    但我們有多筆數(shù)據(jù),例如250筆所以我們Loss改寫(xiě)成:
    \frac{\Sigma_{i}^{250} (y_i - w x_i + b)}{250},換成n表示樣本數(shù)\frac{\Sigma_{i}^{n} (y_i - w x_i + b)}{n}
    所以我們求的是250筆資料疊加後的圖形,且一樣是三維圖形,可能是凸函數(shù)或非凸函數(shù),當(dāng)hypothesis越複雜(NN越深、或有許多非線(xiàn)性繳活函數(shù))越會(huì)造成非凸函數(shù)。

    凸函數(shù)

    非凸函數(shù)

  • 函數(shù)疊加
    這邊再簡(jiǎn)化hypothesis = wx來(lái)解釋疊加的圖形,假設(shè)有2筆數(shù)據(jù),第一筆{x=2,y=0},第二筆{x=1,y=0},那麼\frac{\Sigma_{i}^{2} (y_i - w x_i)}{2}與他們的圖形如下圖:
    *由此可以得知sgd可能會(huì)更新不到實(shí)際的全局最小值。

  • 關(guān)係
    gradient descent就是從圖型中隨機(jī)選擇一個(gè)參數(shù)點(diǎn)(固定W、B),然後計(jì)算梯度,更新參數(shù)點(diǎn)作移動(dòng),停止條件是gtad=0(梯度、坡度等於零),如下圖:

underfitting,訓(xùn)練與驗(yàn)證loss高,1.有可能是圖型的全局最小值本身就很高,參數(shù)太少或數(shù)據(jù)noise或error太大導(dǎo)致,2.也有可能全局最小值很低但我們的權(quán)重更新不到全局最小值,可能是卡在鞍點(diǎn)、某個(gè)最高點(diǎn)、局部小值。

非凸函數(shù)

鞍點(diǎn)

Model evaluation

  • 調(diào)參小trick
    train前先使用一部分非常少的數(shù)據(jù),先訓(xùn)練看看是否能過(guò)擬合,如果不行可以檢查看看是不是有什麼地方寫(xiě)錯(cuò)了。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 今天要給大家分享的書(shū)是托馬斯戈登博士寫(xiě)的「PET父母效能訓(xùn)練手冊(cè)」,這本書(shū)的作者托馬斯戈登博士曾於1997、199...
    zoewyc閱讀 364評(píng)論 0 0
  • YOLO 參考:http://www.studyai.com/article/65802b17149342a0ht...
    RJ阿杰閱讀 1,203評(píng)論 0 0
  • 隨筆1-24(2015.6-10) 1、作者 才華不是財(cái)富,痛苦不是財(cái)富,用才華對(duì)痛苦進(jìn)行思考和表達(dá)才是。於是有了...
    四葉閱讀 1,661評(píng)論 3 14
  • 人生第一次坐飛機(jī),去一個(gè)完全陌生的城市——成都,其實(shí)聽(tīng)到自己要出差心里沒(méi)多大反應(yīng),該來(lái)的總是要來(lái)的,安靜的接受就好...
    馬錢(qián)子馬baby閱讀 391評(píng)論 0 0
  • 媽媽沒(méi)文化,她不知道大她幾歲的舒婷寫(xiě)過(guò)《致橡樹(shù)》,但她親身演繹了詩(shī)里的愛(ài)情,“你有你的銅枝鐵干,像刀,像劍,也像戟...
    蘇夏閱讀 2,289評(píng)論 10 34

友情鏈接更多精彩內(nèi)容