GBDT,梯度提升樹(shù)屬于一種有監(jiān)督的集成學(xué)習(xí)方法,與之前學(xué)習(xí)的監(jiān)督算法類(lèi)似,同樣可以用于分類(lèi)問(wèn)題的識(shí)別和預(yù)測(cè)問(wèn)題的解決。該集成算法體現(xiàn)了三個(gè)方面的又是,分別是提升Boosting、梯度Gradient、決策樹(shù)Decision Tree。“提升”是指將多個(gè)弱分類(lèi)器通過(guò)線(xiàn)下組合實(shí)現(xiàn)強(qiáng)分類(lèi)器的過(guò)程;“梯度”指的是在Boosting過(guò)程中求解損失函數(shù)時(shí)增加了靈活性和便捷性,“決策樹(shù)”是指算法所使用的弱分類(lèi)器為CART決策樹(shù),該決策樹(shù)具有簡(jiǎn)單直觀(guān)、通俗易懂的特性。
GBDT模型對(duì)數(shù)據(jù)類(lèi)型不做任何限制,既可以是連續(xù)的數(shù)值型,也可以是離散的字符型(但在Python的落地過(guò)程中需要將字符型變量做數(shù)值化處理或者啞變量處理)。相對(duì)于SVM模型來(lái)說(shuō),較少參數(shù)的GBDT具有更高的準(zhǔn)確率和更少的運(yùn)算時(shí)間,GBDT模型在面對(duì)異常數(shù)據(jù)時(shí)具有更強(qiáng)的穩(wěn)定性。由于上面種種優(yōu)點(diǎn),GBDT常常被廣大用戶(hù)所采用。
最具代表的提升樹(shù)算法為AdaBoost算法,即:
其中F(x)是由M棵基礎(chǔ)決策樹(shù)構(gòu)成的最終提升樹(shù),F(xiàn)_(m-1) (x)表示經(jīng)過(guò)m-1輪迭代后的提升樹(shù),α_m為第m棵基礎(chǔ)決策樹(shù)所對(duì)應(yīng)的權(quán)重,f_m (x)為第m棵基礎(chǔ)決策樹(shù)。
AdaBoost算法在解決分類(lèi)問(wèn)題時(shí),它的核心就是不停地改變樣本點(diǎn)的權(quán)重,并將每一輪的基礎(chǔ)決策樹(shù)通過(guò)權(quán)重的方式進(jìn)行線(xiàn)性組合。該算法在迭代過(guò)程中需要進(jìn)行如下四個(gè)步驟:
在這里舉一個(gè)簡(jiǎn)單的例子。如下表:
x |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
y |
1 |
1 |
1 |
-1 |
-1 |
-1 |
1 |
1 |
1 |
-1 |
故第一輪迭代結(jié)果為:
x |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
|
y實(shí)際 |
1 |
1 |
1 |
-1 |
-1 |
-1 |
1 |
1 |
1 |
-1 |
|
預(yù)測(cè)得分 |
0.424 |
0.424 |
0.424 |
-0.424 |
-0.424 |
-0.424 |
-0.424 |
-0.424 |
-0.424 |
-0.424 |
|
y預(yù)測(cè) |
1 |
1 |
1 |
-1 |
-1 |
-1 |
-1 |
-1 |
-1 |
-1 |
顯然6、7、8三個(gè)點(diǎn)的預(yù)測(cè)結(jié)果是錯(cuò)的,所以它們對(duì)應(yīng)的權(quán)重也是最大的,在進(jìn)入第二輪時(shí),模型會(huì)更加關(guān)注這三個(gè)點(diǎn)。
AdaBoost算法具體在Python上的實(shí)現(xiàn)方式為導(dǎo)入sklearn中的子模塊ensemble,從中調(diào)用AdaBoostClassifier類(lèi)。
在這里我再次使用Iris數(shù)據(jù)集進(jìn)行測(cè)試,原碼及效果為如下:
adaBoost = ensemble.AdaBoostClassifier() adaBoost.fit(x_train,y_train) predict = adaBoost.predict(x_test) print ( ' Accuracy: ' ,metrics.accuracy_score(y_test,predict)) print ( ' Report :\n ' ,metrics.classification_report(y_test,predict))
Accuracy: 0.7
Report :
precision recall f1-score support
0.0 1.00 0.92 0.96 12
1.0 0.62 0.67 0.64 12
2.0 0.33 0.33 0.33 6
micro avg 0.70 0.70 0.70 30
macro avg 0.65 0.64 0.64 30
weighted avg 0.71 0.70 0.71 30
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
