當(dāng)我們做監(jiān)督學(xué)習(xí)時(shí),有一系列的帶有標(biāo)簽的數(shù)據(jù),通常我們把它們分成三部分峻仇。Training Data,Cross Validation Data,Testing Data.占比通常是60%,20%,20%.確定好具體用哪個(gè)算法后,Training Data用來(lái)訓(xùn)練算法的參數(shù),Validation Data用來(lái)選擇具體的模型(比如the degree of polynomial,the parameter of regularization缺厉,防止underfitting(high bias) or overfitting(high variance)),模型和參數(shù)都確定并訓(xùn)練完之后,最后用Testing Data去驗(yàn)證算法的精度提针。
Training Data訓(xùn)練算法的參數(shù)命爬,通常用的是對(duì)Cost Function 使用梯度下降類的算法實(shí)現(xiàn),大部分?jǐn)?shù)據(jù)處理語(yǔ)言如MATLAB/Python等都會(huì)提供相應(yīng)的API辐脖,我們只需提供Cost Function和對(duì)應(yīng)的Gradient即可饲宛。
Validation Data選擇模型,簡(jiǎn)單來(lái)講嗜价,就是判斷模型是否underfitting(high bias) 或者 overfitting(high variance)艇抠,可以用Learning Curves來(lái)直觀的判斷。Learning Curves橫軸為樣本數(shù)久锥,縱軸位the Error of Training Data 和 the Error of Cross validation Data家淤。
如下圖,圖一顯然為欠擬合瑟由,圖二為圖一的Learning Curves絮重,觀察圖二,很直觀的可以看到歹苦,隨著樣本數(shù)m的增加青伤,the Error of Training Data在增加,the Error of Cross validation Data在下降殴瘦,兩個(gè)Error都趨于同一個(gè)值狠角,且該值較大◎揭福可以得出結(jié)論丰歌,如果模型是欠擬合,增加樣本數(shù)效果不大辣吃,此時(shí)可減小正則化參數(shù)动遭、增加樣本特征、多項(xiàng)式組合等方式讓模型不再欠擬合神得。
圖三顯然為過(guò)擬合厘惦,圖四為圖三的Learning Curves,觀察圖四哩簿,很直觀的可以看到宵蕉,隨著樣本數(shù)m的增加,the Error of Training Data幾乎不變节榜,the Error of Cross validation Data在下降羡玛。可以得出結(jié)論宗苍,如果模型是過(guò)擬合稼稿,增加樣本數(shù)是有效的薄榛,此外,還可增加正則化參數(shù)让歼、減少樣本特征等方式讓模型不再過(guò)擬合敞恋。
通過(guò)Training Data 和 Cross Validation Data獲得確定的學(xué)習(xí)算法后,最后需要用Testing Data 進(jìn)行Error Analysis谋右。
用訓(xùn)練得到的參數(shù)硬猫,對(duì)Testing Data 進(jìn)行標(biāo)簽預(yù)測(cè),得到一系列的Predict Class改执,再和Testing Data實(shí)際的標(biāo)簽Actual Class進(jìn)行對(duì)比啸蜜,計(jì)算精度。最簡(jiǎn)單的精度計(jì)算辈挂,比如實(shí)際中y=1的有100個(gè)衬横,而預(yù)測(cè)出來(lái)的y=1只有90個(gè),此時(shí)得精度是90%终蒂。但面對(duì)skewed class便不準(zhǔn)了冕香。比如Testing Data中,總共有100個(gè)樣本后豫,實(shí)際95個(gè)為y=1,5個(gè)為y=0突那,此時(shí)就算你什么都不干挫酿,直接預(yù)測(cè)100個(gè)樣本全為y=1,它的精度也高達(dá)95%.
于是需要用到Precision/Recall愕难,一般對(duì)樣本稀少的那一類進(jìn)行分析早龟,分為四部分,True Pos,False Pos,True Neg,False Neg猫缭,計(jì)算方式如下
但是葱弟,針對(duì)不同的算法模型,這樣得出來(lái)的有兩組數(shù)據(jù)猜丹,Precision和Recall芝加,不方便我們?nèi)ヅ袛噙@個(gè)算法好不好,需要把這兩個(gè)數(shù)據(jù)整合成一個(gè)射窒,如果這個(gè)大藏杖,就代表算法好,小脉顿,就代表算法不好蝌麸。于是定義F1Score=2*PR/(P+R)。F1Score大艾疟,算法好来吩,F(xiàn)1Score小敢辩,算法不好。
總結(jié):將樣本數(shù)據(jù)分為三部分:
Training Data用來(lái)訓(xùn)練算法的參數(shù)
Cross-Validation Data用來(lái)選擇算法的模型
Testing Data用來(lái)計(jì)算算法的精度