第六课 多算法组合与模型调优
本系列是七月算法機(jī)器學(xué)習(xí)課程筆記
文章目錄
- 1 前序工作流程
- 1.1 數(shù)據(jù)處理
- 1.2 特征工程
- 1.3 模型選擇
- 1.4 交叉驗(yàn)證
- 1.5 尋找最佳超參數(shù)
- 2 模型優(yōu)化
- 2.1 模型狀態(tài)
- 2.2 模型優(yōu)化1
- 2.3 模型優(yōu)化2
- 2.4 模型優(yōu)化3
- 2.5 模型優(yōu)化4:模型融合
- 2.5.1 bagging
- 2.5.2 staking
- 2.5.3 adaboost
- 2.5.4 Gradient Boosting Tree
1 前序工作流程
1.1 數(shù)據(jù)處理
1.2 特征工程
這兩部分在第五課已經(jīng)說(shuō)明了。
1.3 模型選擇
在sklearn中有關(guān)于算法選擇的路徑圖。但也不是絕對(duì)的。
模型選擇有兩種含義。
第一種是:選擇不同算法。
當(dāng)拿到一個(gè)問(wèn)題先看屬于這4種類型中的哪一種:分類?回歸?聚類?降維?例如搜索結(jié)果排序,看上去不是上面的任何一種。繼續(xù)想為什么要排序,排序就是把用戶想點(diǎn)的數(shù)據(jù)放在前面,那就可以將問(wèn)題看做是分類問(wèn)題:用戶會(huì)點(diǎn)的數(shù)據(jù)和用戶不會(huì)點(diǎn)的數(shù)據(jù)。當(dāng)然也可以看做是回歸問(wèn)題:用戶點(diǎn)擊數(shù)據(jù)的概率。
此外還要看數(shù)據(jù)類型:是文本型數(shù)據(jù)還是數(shù)值型數(shù)據(jù)。例如分類問(wèn)題中文本型數(shù)據(jù)推薦使用樸素貝葉斯算法。數(shù)值型可以使用K近鄰或者SVM。
第二種是:選擇超參數(shù)
這就類似于師哥師姐給你介紹了很多學(xué)習(xí)方法,當(dāng)用在你自己的具體情況下,究竟該學(xué)習(xí)多少小時(shí)的英語(yǔ),該用多少小時(shí)學(xué)習(xí)數(shù)學(xué)。這是需要考慮的。
1.4 交叉驗(yàn)證
交叉驗(yàn)證是用于評(píng)估模型超參數(shù)的一種方法。
我們將數(shù)據(jù)集分為訓(xùn)練集和測(cè)試集。測(cè)試集用于評(píng)估模型,只能使用一次,類比于三年只能參加一次高考。
交叉驗(yàn)證最常采用的方法是K折交叉驗(yàn)證。是將訓(xùn)練集分為k份。每次隨機(jī)選擇一份數(shù)據(jù)用于驗(yàn)證,其余數(shù)據(jù)用于訓(xùn)練。
例如下圖,在給定一組超參數(shù)條件下,使用其中1份數(shù)據(jù)用于評(píng)估,4份數(shù)據(jù)用于訓(xùn)練。做5次訓(xùn)練,得到5個(gè)模型的評(píng)估結(jié)果,求其平均值作為該組參數(shù)的驗(yàn)證結(jié)果。
1.5 尋找最佳超參數(shù)
尋找最佳超參數(shù)有幾種方法,常用的是網(wǎng)格搜索交叉驗(yàn)證GridSearchCV。
網(wǎng)格交叉驗(yàn)證就是任意參數(shù)要做兩兩組合。例如C=[1,10,100],gamma=[0.001,0.0001]。那網(wǎng)格交叉驗(yàn)證就可以得到6組超參數(shù)。每一組超參數(shù)交給交叉驗(yàn)證算法,評(píng)估模型效果。
最后選擇模型效果最好的那一組參數(shù)作為最終模型的超參數(shù)。在訓(xùn)練集上訓(xùn)練得到模型作為最終的模型。
此外還有隨機(jī)搜索交叉驗(yàn)證方法。他們只是組合超參數(shù)的方式不同。
2 模型優(yōu)化
2.1 模型狀態(tài)
模型的狀態(tài)分為:過(guò)擬合、欠擬合、合適。
欠擬合是指模型學(xué)習(xí)能力弱,不能很好的表達(dá)數(shù)據(jù)。表現(xiàn)特征是在訓(xùn)練集準(zhǔn)確率低,在測(cè)試集準(zhǔn)確率低。
過(guò)擬合是指模型學(xué)習(xí)能力強(qiáng),學(xué)習(xí)了噪音數(shù)據(jù)。表現(xiàn)特征是在訓(xùn)練集準(zhǔn)確率高,在測(cè)試集準(zhǔn)確率低。
訓(xùn)練集準(zhǔn)確率隨著樣本量的增加而減小。原因是當(dāng)樣本量小的時(shí)候,模型不是學(xué)習(xí)而是記憶結(jié)果。所以隨著樣本量增加,訓(xùn)練集準(zhǔn)確率降低。
測(cè)試集準(zhǔn)確率隨著樣本量的增加而增加。原因是見(jiàn)到的樣本多了,自然訓(xùn)練集數(shù)據(jù)越接近真實(shí)世界的數(shù)據(jù),能夠正確處理的數(shù)據(jù)也越來(lái)越多。
下圖中的紅線是一條標(biāo)準(zhǔn)線,是理想中想要找到的線。
在實(shí)際工作中,不會(huì)畫(huà)這么麻煩的曲線,時(shí)間也不允許。會(huì)直接拿數(shù)據(jù),看準(zhǔn)確率。準(zhǔn)確率都低,那基本就是欠擬合。訓(xùn)練集準(zhǔn)確率高,測(cè)試集準(zhǔn)確率低,過(guò)擬合。
2.2 模型優(yōu)化1
如果發(fā)生過(guò)擬合:
1 采集更多的數(shù)據(jù):增加數(shù)據(jù)會(huì)降低噪音數(shù)據(jù)的影響
2 增大正則化系數(shù)
如果發(fā)生欠擬合:
1 找更多的特征
2 減小正則化系數(shù)
2.3 模型優(yōu)化2
如果是線性模型(線性回歸、邏輯回歸、線性SVM),可以分析特征系數(shù)。查看絕對(duì)值高的特征,看是不是可以做進(jìn)一步細(xì)化,甚至可以做特征組合。
2.4 模型優(yōu)化3
bad case分析
分析分錯(cuò)了的樣本,歸類錯(cuò)誤原因。
分類問(wèn)題:看是哪個(gè)特征的影響大,有沒(méi)有共性
回歸問(wèn)題:哪些樣本預(yù)測(cè)結(jié)果差距大,為什么?
2.5 模型優(yōu)化4:模型融合
模型融合(model ensemble)
模型融合是一組獨(dú)立的模型的組合。如果所有的模型都是同一種算法,稱為base leaner。如果模型算法不同,就稱為component leaner。
為什么這樣是有效的呢?
從統(tǒng)計(jì)角度來(lái)講,機(jī)器學(xué)習(xí)就是要找到一種從X到y(tǒng)的映射。這個(gè)真實(shí)的映射是什么誰(shuí)都不知道。那如果有多個(gè)模型來(lái)預(yù)測(cè)學(xué)習(xí)的話,可能會(huì)更接近真實(shí)。
從計(jì)算角度來(lái)講,很多優(yōu)化函數(shù)是沒(méi)有全局最優(yōu)解,找到的是局部最優(yōu)解。但是初始化參數(shù)不同,可能會(huì)落到不同的局部。有多個(gè)模型求平均,會(huì)接近最終想要的優(yōu)化局部。
模型融合的方式有三種
1 bagging :群眾的力量是偉大的,集體智慧是驚人的。
2 stacking:站在巨人的肩膀上能看得更遠(yuǎn)。
3 adboost:一萬(wàn)小時(shí)定律。
2.5.1 bagging
思路:很多時(shí)候模型效果不好是因?yàn)檫^(guò)擬合了。怎么解決?如果每次只給部分?jǐn)?shù)據(jù),多找?guī)讉€(gè)模型來(lái)做一下,綜合一下他們的答案。
過(guò)程:如果用同一個(gè)算法,每次取一個(gè)子集訓(xùn)練一個(gè)模型。如果是分類問(wèn)題,將多個(gè)模型的結(jié)果做vote,如果是回歸問(wèn)題,將多個(gè)模型的結(jié)果做平均。如果用不同的算法,用全部數(shù)據(jù)集訓(xùn)練模型。如果是分類問(wèn)題,將多個(gè)模型的結(jié)果做vote,如果是回歸問(wèn)題,將多個(gè)模型的結(jié)果做平均。
2.5.2 staking
stacking學(xué)習(xí)步驟分2步。將訓(xùn)練集分為兩部分?jǐn)?shù)據(jù)集D1和D2。D1和D2是沒(méi)有交集的。
第一步,也就是level0,使用數(shù)據(jù)集D1,學(xué)習(xí)到多個(gè)模型。例如學(xué)習(xí)到LR、SVM、DT三種模型。
第二步,也就是level1,使用數(shù)據(jù)集D2和使用上一步的模型,學(xué)習(xí)到新的模型,作為最終的模型。這個(gè)模型如果是線性模型,那可以理解為是前面模型的線性組合。這個(gè)模型也可能是其他模型。
通常情況下stacking這個(gè)模型能力會(huì)非常強(qiáng),所以第二層的模型一般使用線性模型,例如LR。
2.5.3 adaboost
思路:模型效果不好是因?yàn)椴粔蚺?#xff0c;要重復(fù)迭代和訓(xùn)練。要多做之前的錯(cuò)題,每次分配給分錯(cuò)的樣本更高的權(quán)重。用最簡(jiǎn)單的分類器疊加。
2.5.4 Gradient Boosting Tree
思路:從殘差中學(xué)習(xí)
總結(jié):模型融合有三種思路:bagging stacking boosting。
bagging的具體例子是:RandomForest
boosting的具體例子是:Adaboost,GDBT
bagging方式:VotingClassifier、BaggingClassifier、RandomForestClassifier
boosting方式:AdaBoostClassifier
總結(jié)
以上是生活随笔為你收集整理的第六课 多算法组合与模型调优的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: WordPress博客系统的安全
- 下一篇: (最通俗易懂的)目标跟踪MOSSE、KC