今天起把西瓜書上重要的,經(jīng)常用的內(nèi)容簡單記錄一下眼溶,以防自己遺忘悠砚。
今天整理西瓜書2.1-2.4
概念問題
學(xué)習(xí)器在訓(xùn)練集上表現(xiàn)出來的誤差叫做訓(xùn)練誤差,而在測試集上表現(xiàn)出來的叫做“泛化誤差”
當(dāng)學(xué)習(xí)器把訓(xùn)練樣本學(xué)的太好了的時(shí)候堂飞,很可能已經(jīng)把訓(xùn)練樣本上的一些獨(dú)特的特點(diǎn)當(dāng)作了所有對象都會有的特性灌旧,這種叫做“過擬合”,與之相對的是”欠擬合“绰筛,這兩種問題在機(jī)器學(xué)習(xí)中對策大不相同枢泰。
在現(xiàn)實(shí)生活中,我們一般對一個(gè)問題會有多種算法可供選擇铝噩,甚至對同一個(gè)學(xué)習(xí)算法選擇不同的參數(shù)配置也會產(chǎn)生不同的模型衡蚂,那么我們應(yīng)該怎么對模型進(jìn)行評估呢,這就是機(jī)器學(xué)習(xí)中的模型選擇問題。
模型評估方法
如何進(jìn)行測試集與驗(yàn)證集劃分
①留出法
留出法是直接將數(shù)據(jù)集D劃分為兩個(gè)互斥的集合毛甲,其中一個(gè)集合作為訓(xùn)練集年叮,另一個(gè)作為測試集。需要注意的是劃分時(shí)候要盡量保持分布的一致性丽啡,避免因?yàn)閿?shù)據(jù)劃分而出現(xiàn)的偏差谋右。
例如在分類問題中至少要保證樣本類別的比例相同,訓(xùn)練集中存在著500個(gè)正例补箍,500個(gè)反例改执,那么測試集中應(yīng)該保持與之相同如300個(gè)正例,300個(gè)反例坑雅。但是即使給出了訓(xùn)練/測試集樣本之后仍存在著許多種劃分方式辈挂,如選正例中的前500個(gè)還是后500個(gè)做為訓(xùn)練數(shù)據(jù)中的正例,一般使用留出法時(shí)采取的方法是多次隨機(jī)劃分并且最終取絕對值裹粤。
留出法還有一個(gè)問題就是如果訓(xùn)練集占據(jù)了大多數(shù)终蒂,那么測試數(shù)據(jù)就不夠穩(wěn)定準(zhǔn)確,如果測試集占據(jù)了大多數(shù)遥诉,那么訓(xùn)練出來的模型可能在測試集上表現(xiàn)不是很好拇泣,目前一般采用2/3~4/5用作訓(xùn)練集,其余用作測試集矮锈。
②交叉驗(yàn)證法
交叉驗(yàn)證法是先將數(shù)據(jù)集D劃分為k個(gè)大小的互斥子集霉翔,每個(gè)子集要盡量保證數(shù)據(jù)的分布一致性,也就是采取的是分層采樣得到的苞笨,然后選取其中的k-1個(gè)子集做并集當(dāng)作訓(xùn)練集债朵,余下的一個(gè)子集當(dāng)作測試集,這樣可以進(jìn)行k組測試以及訓(xùn)練瀑凝,通常將這種稱為k折(Kfold)驗(yàn)證序芦,k一般取5,10,20,在sklearn(機(jī)器學(xué)習(xí)包)中有專門的方法來實(shí)現(xiàn)關(guān)于交叉驗(yàn)證。
和留出法存在一樣的問題,k折交叉驗(yàn)證劃分時(shí)會有不同的劃分方法,為了減少因?yàn)闃颖静煌瑢?dǎo)致出現(xiàn)差別牲览,k折交叉驗(yàn)證通常要隨即使用不同的劃分重復(fù)p次,所以最終我們應(yīng)該訓(xùn)練的模型數(shù)目應(yīng)該是p*k宪塔,加入是10折且重復(fù)劃分10次那么我們應(yīng)該訓(xùn)練100個(gè)模型,k折交叉驗(yàn)證有一個(gè)特例是當(dāng)k等于1的時(shí)候叫做留一法(Leave_One_Out)脉顿,顯而易見留一法不受樣本劃分方式的影響蝌麸,但是缺點(diǎn)也很明顯点寥。當(dāng)數(shù)據(jù)集很大的時(shí)候我們需要訓(xùn)練數(shù)量巨大的模型艾疟,甚至還不包括后期的參數(shù)調(diào)整。
③自助法
不管是留出法還是k折交叉驗(yàn)證,我們模型得到的訓(xùn)練數(shù)據(jù)都要比實(shí)際所有的數(shù)據(jù)要少一些蔽莱,比如k折交叉驗(yàn)證中我們的模型訓(xùn)練數(shù)據(jù)是k-1個(gè)集合的并集弟疆,有什么方法可以克服呢?就是我們接下來講到的自助法盗冷。
我們的數(shù)據(jù)集D怠苔,我們要對他進(jìn)行采樣產(chǎn)生一個(gè)大小相同的D1數(shù)據(jù)集合,如果我們進(jìn)行放回抽取操作仪糖,每次取出來一個(gè)然后放回柑司,直到兩個(gè)集合數(shù)據(jù)總量相等時(shí)停止,這樣的話我們就會有一些數(shù)據(jù)被重復(fù)抽取锅劝,有一些從來沒有被抽取攒驰,那么他們的概率是多少呢?
有大概36.8%的數(shù)據(jù)從來沒有被抽取過故爵,我們將用沒在訓(xùn)練集中出現(xiàn)的樣本用于測試玻粪,這樣的測試結(jié)果我們也稱作”包外估計(jì)“。
自助法在數(shù)據(jù)集較小诬垂,比較難劃分訓(xùn)練/測試集的時(shí)候很有用劲室,而且自助法能從初始數(shù)據(jù)集中產(chǎn)生多個(gè)不同的訓(xùn)練集,這在以后我們將會學(xué)到的集成學(xué)習(xí)中很有用结窘。我們應(yīng)該知道很洋,我們在進(jìn)行采樣也就是抽取值的時(shí)候沒有進(jìn)行分層等操作,也就是說數(shù)據(jù)會出現(xiàn)偏差晦鞋,所以在數(shù)據(jù)量足夠的時(shí)候我們還是應(yīng)該用前面兩種方法蹲缠。
調(diào)參與最終模型
很多初學(xué)者認(rèn)為模型訓(xùn)練完成之后就萬事大吉了,但是我們還有很多需要做的內(nèi)容悠垛,比如我們需要對模型進(jìn)行調(diào)參线定,在進(jìn)行調(diào)參操作中我們會在一個(gè)范圍比如[0,0.2]之間,以0.05為步長直接進(jìn)行暴力搜索确买,看看在參數(shù)為多少的時(shí)候loss是最小的斤讥。如果有兩組這樣的參數(shù)我們就需要進(jìn)行4*4=16組訓(xùn)練,工程量還是非常大的湾趾。
這里有個(gè)要注意的地方芭商,也是我們剛開始很容易混淆的內(nèi)容,就是關(guān)于數(shù)據(jù)的種類搀缠,實(shí)際上整個(gè)數(shù)據(jù)可以分為三種:測試集铛楣,驗(yàn)證集,訓(xùn)練集艺普。測試集是我們模型在測試時(shí)候接觸到的數(shù)據(jù)簸州,這些數(shù)據(jù)都是模型第一次接觸鉴竭,所以對于這些數(shù)據(jù)的預(yù)測可以反映一個(gè)模型的泛化能力,而驗(yàn)證集以及訓(xùn)練集是模型在訓(xùn)練中遇到的岸浑,訓(xùn)練集就不用說了是模型拿來訓(xùn)練的搏存,而驗(yàn)證集則是模型用來進(jìn)行調(diào)參的,模型用這些數(shù)據(jù)來進(jìn)行調(diào)整參數(shù)矢洲,通過這些數(shù)據(jù)的預(yù)測結(jié)果反饋給模型璧眠,模型記錄下來不同參數(shù)下的預(yù)測結(jié)果好壞,最終選擇最好的模型读虏。
性能度量
對于學(xué)習(xí)器而言,不僅要有各種實(shí)驗(yàn)估計(jì)方法泰演,還需要有衡量模型泛化能力的評價(jià)標(biāo)準(zhǔn),這就是性能度量。
回歸任務(wù)采用的是一般是均方誤差:
查準(zhǔn)率以及查全率
我們在面對實(shí)際問題時(shí)候經(jīng)常會關(guān)心如下問題偎窘,比如在信息檢索中“檢索出來的信息有多少是用戶感興趣的”他托,“用戶感興趣的信息有多少被檢索出來了”赏参,用這些來判斷一個(gè)模型的好與不好腰涧,對于二分類問題郎楼,只存在正例以及反例敌买,我們先給出混淆矩陣聋庵。
其中定義查準(zhǔn)率以及查全率分別為
需要注意的是律姨,查準(zhǔn)率以及查全率是成反比的扣孟,查準(zhǔn)率高了那查全率要相對下降一些,查全率高了那查準(zhǔn)率要下降一些利诺。我們根據(jù)學(xué)習(xí)器的預(yù)測結(jié)果對樣例進(jìn)行排序躏吊,排在最前面的是最有可能的樣本胜卤,然后把一個(gè)一個(gè)樣本都當(dāng)作是正例進(jìn)行預(yù)測這樣我們可以得到當(dāng)前的混淆矩陣,然后以查全率作為橫軸,查準(zhǔn)率作為縱軸可以得到“P-R圖”
如果一個(gè)學(xué)習(xí)器把另外一個(gè)學(xué)習(xí)器的P-R圖完全包住那么證明前者要優(yōu)于后者鹦聪,如果發(fā)生了交叉姻僧,則要具體看在哪種情況下哪種學(xué)習(xí)器更優(yōu)规丽。
查準(zhǔn)率與查全率相等的點(diǎn)叫做平衡點(diǎn)簡稱BEP,誰的BEP更大則可能誰更優(yōu)秀撇贺,但是只看BEP事非常簡單的操作嘁捷,更常用的是F1度量:
F1 是對查準(zhǔn)率以及查全率進(jìn)行調(diào)和平均,其次還有更加普通的度量函數(shù)
這個(gè)調(diào)和函數(shù)是對查準(zhǔn)率以及查全率的加權(quán)平均調(diào)和显熏。其中的參數(shù)
度量了查準(zhǔn)率對查全率的相對重要性等于1時(shí)候退化為標(biāo)準(zhǔn)的F1度量雄嚣,當(dāng)他大于1時(shí)候查全率更加重要,當(dāng)他小于1時(shí)候查準(zhǔn)率更加重要
ROC 與 AUC
如果想了解ROC曲線那么應(yīng)該先了解兩個(gè)函數(shù)喘蟆,一個(gè)是TPR(真正例率)一個(gè)是FPR(假正例率)兩者分別定義如下:
畫圖原理和P-R圖是類似的缓升,畫出如下:
但是在實(shí)際情況中我們通常只有有限個(gè)測試樣例來繪制ROC圖,所以僅能獲得有限個(gè)坐標(biāo)對蕴轨,繪圖原理如下:給定m1個(gè)正例和m2個(gè)反例將分類閾值設(shè)置為最大則會預(yù)測所有樣例均為反例港谊,這是分別將閾值設(shè)置為點(diǎn)的預(yù)測值,然后連接相鄰點(diǎn)即可橙弱。
同樣的如果一個(gè)學(xué)習(xí)器的ROC曲線完全包住了另一個(gè)學(xué)習(xí)器的ROC曲線那么前者是更好的歧寺,但是如果有交叉的話這時(shí)候可以看曲線下的面積AUC,AUC計(jì)算公式為
如果用AUC來評判模型的好壞那么決定AUC的主要是前面排序的好壞棘脐,也就是前面根據(jù)模型對樣例預(yù)測值進(jìn)行排序的好壞斜筐,他的排序損失函數(shù)如下圖所示,其中Ⅱ()函數(shù)表示如果其中的條件為真的話返回1蛀缝,如果為假的話返回0顷链。