GBDT,梯度提升樹屬于一種有監督的集成學習方法,與之前學習的監督算法類似,同樣可以用于分類問題的識別和預測問題的解決。該集成算法體現了三個方面的又是,分別是提升Boosting、梯度Gradient、決策樹Decision Tree。“提升”是指將多個弱分類器通過線下組合實現強分類器的過程;“梯度”指的是在Boosting過程中求解損失函數時增加了靈活性和便捷性,“決策樹”是指算法所使用的弱分類器為CART決策樹,該決策樹具有簡單直觀、通俗易懂的特性。
GBDT模型對數據類型不做任何限制,既可以是連續的數值型,也可以是離散的字符型(但在Python的落地過程中需要將字符型變量做數值化處理或者啞變量處理)。相對于SVM模型來說,較少參數的GBDT具有更高的準確率和更少的運算時間,GBDT模型在面對異常數據時具有更強的穩定性。由于上面種種優點,GBDT常常被廣大用戶所采用。
最具代表的提升樹算法為AdaBoost算法,即:
其中F(x)是由M棵基礎決策樹構成的最終提升樹,F_(m-1) (x)表示經過m-1輪迭代后的提升樹,α_m為第m棵基礎決策樹所對應的權重,f_m (x)為第m棵基礎決策樹。
AdaBoost算法在解決分類問題時,它的核心就是不停地改變樣本點的權重,并將每一輪的基礎決策樹通過權重的方式進行線性組合。該算法在迭代過程中需要進行如下四個步驟:
在這里舉一個簡單的例子。如下表:
x |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
y |
1 |
1 |
1 |
-1 |
-1 |
-1 |
1 |
1 |
1 |
-1 |
故第一輪迭代結果為:
x |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
|
y實際 |
1 |
1 |
1 |
-1 |
-1 |
-1 |
1 |
1 |
1 |
-1 |
|
預測得分 |
0.424 |
0.424 |
0.424 |
-0.424 |
-0.424 |
-0.424 |
-0.424 |
-0.424 |
-0.424 |
-0.424 |
|
y預測 |
1 |
1 |
1 |
-1 |
-1 |
-1 |
-1 |
-1 |
-1 |
-1 |
顯然6、7、8三個點的預測結果是錯的,所以它們對應的權重也是最大的,在進入第二輪時,模型會更加關注這三個點。
AdaBoost算法具體在Python上的實現方式為導入sklearn中的子模塊ensemble,從中調用AdaBoostClassifier類。
在這里我再次使用Iris數據集進行測試,原碼及效果為如下:
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
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

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