iT邦幫忙

2023 iThome 鐵人賽

DAY 12
0
AI & Data

紮實的ML機器學習原理~打造你對資料使用sklearn的靈敏度系列 第 12

DAY 12 「集成學習(Ensemble Learning)Boosting 和 AdaBoost」AI專案落地必有的觀念啦~

  • 分享至 

  • xImage
  •  

集成學習是真正落地專案必須要有的觀念~

/images/emoticon/emoticon08.gif白話來說集成也就是組合多個弱學習器(弱分類器)以構建一個強學習器從而提升模型的性能~~~重要重要重要

  • Boosting:
    Boosting 是一種叠代的集成學習方法,其基本思想是通過反覆調整數據的權重和訓練集的分布,來訓練多個弱學習器,最終將它們組合成一個強學習器。

初始化:給每個樣本分配相等的權重,初始分布為均勻分布。
叠代訓練:在每一輪叠代中,構建一個弱學習器,它嘗試最小化當前分布下的誤差。
更新樣本權重:根據上一輪的弱學習器對樣本進行預測,對分類錯誤的樣本增加權重,對分類正確的樣本減小權重。
組合弱學習器:將多個弱學習器的預測結果進行加權組合,得到最終的強學習器。

  • AdaBoost:
    AdaBoost 是 Boosting 方法的一個具體實現,它是 Adaptive Boosting 的縮寫在每一輪叠代中都會調整樣本的權重,使得前一輪分類錯誤的樣本在下一輪中得到更多的關注

初始化:給每個樣本分配相等的權重,初始分布為均勻分布。
叠代訓練:在每一輪叠代中,構建一個弱學習器,它嘗試最小化當前分布下的誤差。
更新樣本權重:根據上一輪的弱學習器對樣本進行預測,對分類錯誤的樣本增加權重,對分類正確的樣本減小權重。
計算學習器權重:根據弱學習器的分類準確率計算其權重,準確率高的學習器會獲得更高的權重。
組合弱學習器:將多個弱學習器的預測結果進行加權組合,得到最終的強學習器。
AdaBoost 的一個關鍵特點是它在每一輪叠代中會調整樣本的權重,使得之前分類錯誤的樣本在下一輪中更受關注,從而提高模型對錯誤樣本的分類能力。

from sklearn.ensemble import AdaBoostClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 載入鳶尾花數據集
iris = load_iris()
X, y = iris.data, iris.target

# 將數據集劃分為訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 初始化AdaBoost分類器
adaboost_model = AdaBoostClassifier(n_estimators=50, random_state=42)

# 在訓練集上訓練模型
adaboost_model.fit(X_train, y_train)

# 在測試集上進行預測
y_pred = adaboost_model.predict(X_test)

# 計算準確度
accuracy = accuracy_score(y_test, y_pred)
print(f'準確度:{accuracy}')

上一篇
DAY 11 「XGBoost(eXtreme Gradient Boosting)」來做乳腺癌分類啦~
下一篇
DAY 13 「隨機搜索(Random Search)& Halving 網格搜索(Halving Grid Search)」最佳超參數組合來做鳶尾花分類啦~
系列文
紮實的ML機器學習原理~打造你對資料使用sklearn的靈敏度30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言