機器學習實操 第一部分 機器學習基礎 第7章 集成學習與隨機森林
內容概要
第7章深入探討了集成學習方法,這是一種結合多個預測模型(如分類器或回歸器)以提高預測性能的技術。這些方法通過利用群體的智慧,可以比單個模型獲得更好的結果。本章詳細介紹了多種集成方法,包括投票分類器、Bagging和Pasting集成、隨機森林、Boosting以及Stacking集成。通過這些方法,讀者將了解如何利用集成學習來提升模型的準確性和泛化能力。
主要內容
-
集成學習的概念
- 群體智慧:通過聚合多個預測器的預測,集成學習通常能獲得比單個預測器更好的結果。
- 應用場景:在機器學習項目中,集成方法常用于項目后期,結合多個優秀預測器以進一步提升性能。
-
投票分類器
- 硬投票:選擇獲得最多票數的類別作為最終預測。
- 軟投票:計算每個類別的平均預測概率,選擇概率最高的類別作為最終預測。軟投票通常比硬投票表現更好,因為它考慮了預測器的置信度。
-
Bagging和Pasting
- Bagging:通過有放回的采樣生成訓練子集,每個子集用于訓練一個預測器。
- Pasting:通過無放回的采樣生成訓練子集,每個子集用于訓練一個預測器。
- 優勢:降低模型方差,提高泛化能力。
-
隨機森林
- 定義:由多個決策樹組成的集成,通常通過Bagging方法訓練。
- 優化:通過限制每個節點分割時考慮的特征數量來增加樹的多樣性,減少相關性,從而降低方差。
-
特征重要性
- 測量方法:通過評估每個特征在樹節點中減少不純度的平均貢獻來衡量特征的重要性。
- 應用場景:幫助理解哪些特征對預測最為重要,便于特征選擇和工程。
-
Boosting
- AdaBoost:通過依次訓練預測器,每個新預測器專注于前一個預測器錯誤分類的實例。
- 梯度提升:通過依次訓練預測器,每個新預測器專注于前一個預測器的殘差。
- 優化技術:如學習率調整和早期停止,以防止過擬合。
-
Stacking
- 概念:訓練一個模型(稱為混合器或元學習器)來聚合多個預測器的預測。
- 實現:通過交叉驗證生成混合訓練集,使用這些預測作為輸入特征來訓練混合器。
關鍵代碼和算法
####7.1 隨機森林分類器
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split# 加載數據
iris = load_iris()
X = iris.data
y = iris.target# 分割數據集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 訓練隨機森林分類器
rnd_clf = RandomForestClassifier(n_estimators=100, random_state=42)
rnd_clf.fit(X_train, y_train)# 評估模型
print("Accuracy:", rnd_clf.score(X_test, y_test))
7.2 基于AdaBoost的集成分類器
from sklearn.ensemble import AdaBoostClassifier
from sklearn.tree import DecisionTreeClassifier# 定義基分類器
base_clf = DecisionTreeClassifier(max_depth=1)# 訓練AdaBoost分類器
ada_clf = AdaBoostClassifier(base_clf, n_estimators=30, learning_rate=0.5, random_state=42)
ada_clf.fit(X_train, y_train)# 評估模型
print("Accuracy:", ada_clf.score(X_test, y_test))
7.3 基于梯度提升的回歸模型
from sklearn.ensemble import GradientBoostingRegressor# 訓練梯度提升回歸器
gbrt = GradientBoostingRegressor(max_depth=2, n_estimators=100, learning_rate=0.1, random_state=42)
gbrt.fit(X_train, y_train)# 評估模型
print("R-squared:", gbrt.score(X_test, y_test))
精彩語錄
-
中文:集成方法的強大之處在于它們能夠將多個弱學習器組合成一個強學習器。
英文原文:Ensemble methods can combine several weak learners into a strong learner.
解釋:強調了集成學習的核心思想。 -
中文:隨機森林的一個重要特點是它能夠輕松地衡量每個特征的重要性。
英文原文:Another great quality of random forests is that they make it easy to measure the relative importance of each feature.
解釋:指出了隨機森林的一個優勢,即特征重要性評估。 -
中文:AdaBoost通過依次訓練預測器,每個新預測器專注于前一個預測器錯誤分類的實例。
英文原文:AdaBoost trains predictors sequentially, each trying to correct its predecessor.
解釋:介紹了AdaBoost的基本原理。 -
中文:梯度提升通過依次訓練預測器,每個新預測器專注于前一個預測器的殘差。
英文原文:Gradient boosting works by sequentially adding predictors to an ensemble, each one correcting its predecessor.
解釋:描述了梯度提升的核心思想。 -
中文:Stacking通過訓練一個模型來聚合多個預測器的預測,從而進一步提升性能。
英文原文:Stacking trains a model to perform the aggregation of multiple predictors’ predictions.
解釋:介紹了Stacking的基本概念。
總結
通過本章的學習,讀者將掌握集成學習的核心概念和應用方法。這些內容包括投票分類器、Bagging和Pasting集成、隨機森林、Boosting以及Stacking集成。這些方法能夠有效提升模型的性能,降低過擬合風險,提高泛化能力。集成學習方法的多樣性和靈活性使其成為許多機器學習任務中的首選方案。