監督學習——集成方法

目錄

Bagging

AdaBoost

數據權重

集合模型

slearn中的Adaboost

超參數

相關學習資源


Bagging

自助聚集(bootstrap aggregation )。將數據分成很多的子集,然後隨機選取一些,用簡單的模型去訓練,再選擇一些數據用另外一個簡單的模型去訓練……最後將所有的簡單模型連接起來,連接的方式可以用投票的方式等,最後完成所有數據的訓練。

AdaBoost

自適應增強算法。第一次分類,分完之後懲罰那些錯誤的點,然後增加被懲罰點的大小,

 

數據權重

小例子:最開始左右點的權重是1,第一次分類,分類正確的點總權重是7,錯誤的是3,按照50:50的比例,將錯誤的點的權重變成7/3;第二次分類 ,正確的是11,錯誤的是3,錯誤的點的權重變成11/3。

權重公式:weight = ln\left ( \frac{accuracy}{ 1 - accuracy} \right ),這個公式可以變形,就是:正確的點 / 錯誤的點,然後再取對數。

如下圖這種極端模型,幾乎不可能發生,沒什麼可擔心的,但是爲了一致性檢查,仍然有必要,來分如下這種極端案例。

 

 

集合模型

下圖的做法,把右側的三張圖放到左側圖片中,對應的位置天上數字,圖與圖之間用加班做運算。

slearn中的Adaboost

>>> from sklearn.ensemble import AdaBoostClassifier
>>> model = AdaBoostClassifier()
>>> model.fit(x_train, y_train)
>>> model.predict(x_test)

超參數

當我們定義模型時,我們可以確定超參數。在實際操作中,最常見的超參數爲:

  • base_estimator: 弱學習器使用的模型(切勿忘記導入該模型)。
  • n_estimators: 使用的弱學習器的最大數量。

比如在下面的例子中,我們定義了一個模型,它使用 max_depth 爲 2 的決策樹作爲弱學習器,並且它允許的弱學習器的最大數量爲 4。

>>> from sklearn.tree import DecisionTreeClassifier
>>> model = AdaBoostClassifier(base_estimator = DecisionTreeClassifier(max_depth=2), n_estimators = 4)

相關學習資源

AdaBoost 的優秀資源:

  • 這是一篇由 Freund 和 Schapire 合著的原始論文
  • 由 Freund 和 Schapire 合著的關於Adaboost幾項實驗的後續論文
  • 來自 Schapire 很棒的教程
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章