一、集成算法簡介
1. 核心思想
類比“多個專家綜合判斷優于單個專家”,通過構建并結合多個個體學習器,提升模型的泛化能力(降低過擬合風險、提高預測準確性),完成復雜的學習任務。
2. 個體學習器與結合模塊
?? ?? ? 個體學習器:多個基礎模型(如決策樹、KNN、SVM等),是集成算法的核心組成單元。
?? ?? ? 結合模塊:將所有個體學習器的預測結果匯總,輸出最終結論,常見結合策略包括3類:
?? ?? ? 簡單平均法:對回歸任務,直接取所有個體學習器預測結果的平均值作為最終輸出。
?? ?? ? 加權平均法:對回歸任務,給不同個體學習器分配不同權重(通常精度高的權重更大),加權求和得到最終結果(公式:H(x) = \sum_{i=1}^{n} \omega_i h_i(x),其中\omega_i為第i個學習器的權重,且\omega_i \geq 0、\sum_{i=1}^{n} \omega_i = 1)。
? ? 投票法:對分類任務,采用“少數服從多數”原則,統計所有個體學習器的預測類別,得票最多的類別為最終結果。
?? ?? ? 若多數個體學習器預測正確,集成結果會提升性能(如測試例1中集成正確,單個學習器有錯誤);
?? ?? ? 若個體學習器錯誤趨勢一致,集成可能不起作用(如測試例2)或起負作用(如測試例3)。
二、集成算法分類(按個體學習器生成方式)
根據個體學習器間的依賴關系,分為3類核心算法:
?? ?? ? 并行化方法(Bagging):個體學習器無強依賴,可同時生成,代表為隨機森林。
?? ?? ? 序列化方法(Boosting):個體學習器有強依賴,需串行生成(后一個學習器依賴前一個的結果),代表為AdaBoost。
?? ?? ? 堆疊方法(Stacking):聚合多種類型分類器/回歸器,分階段訓練,綜合多模型結果。
三、Bagging算法與隨機森林
1. Bagging算法
?? ?? ? 全稱:Bootstrap Aggregation(自助聚合)。
?? ?? ? 核心邏輯:
?? ?1.?? ?并行訓練:通過“有放回采樣(Bootstrap)”從原始訓練集中生成多個不同的子數據集,每個子數據集對應訓練一個個體學習器(如決策樹)。
?? ?2.?? ?結果結合:分類任務用簡單投票法,回歸任務用簡單平均法,匯總所有個體學習器結果。
2. 隨機森林(Bagging的典型代表)
?? ?? ? 定義:以“決策樹”為個體學習器的Bagging算法,核心在于“雙重隨機性”。
?? ?? ? 隨機1:數據采樣隨機:通過有放回采樣生成不同子數據集,訓練不同決策樹。
?? ?? ? 隨機2:特征選擇隨機:每個決策樹在劃分節點時,僅從所有特征中隨機選擇部分特征,再從中選最優切分特征。
?? ?? ? 優勢:
?? ?1.?? ?能處理高維度數據(特征多),無需手動做特征選擇。
?? ?2.?? ?訓練后可輸出特征重要性,輔助分析。
?? ?3.?? ?個體學習器可并行訓練,速度快。
?? ?4.?? ?支持可視化(如決策樹結構),便于理解模型邏輯。
3. 隨機森林代碼實現(Python sklearn)
(1)核心類
?? ?? ? RandomForestClassifier():用于分類任務的隨機森林模型。
?? ?? ? RandomForestRegressor():用于回歸任務的隨機森林模型。
(2)關鍵參數
參數 含義與取值?
n_estimators 個體學習器(決策樹)的數量,默認100,通常需根據數據調整(數量過少易欠擬合,過多增加計算成本)。?
oob_score 是否用“袋外樣本(Out of Bag,未被采樣到的樣本)”評估模型,默認False;設為True時,等同于簡易交叉驗證,無需額外劃分驗證集。?
bootstrap 是否采用有放回采樣,默認True(Bagging的核心特性,保證子數據集多樣性)。?
max_samples 每個決策樹訓練時使用的最大樣本量,默認None(即使用全部子數據集樣本)。?
4. 課堂練習:葡萄酒分類
基于sklearn.datasets.load_wine數據集(含13個特征,如酒精含量、蘋果酸、灰分等,目標是將葡萄酒分為3類),用RandomForestClassifier()實現分類,步驟包括數據加載、劃分訓練/測試集、模型訓練、精度評估。
四、Boosting算法與AdaBoost
1. Boosting核心思想
從“弱學習器”(精度略高于隨機猜測的模型)開始,通過動態調整樣本權重和學習器權重,逐步加強模型能力,最終將多個弱學習器串聯成“強學習器”。核心特點是個體學習器串行生成(后一個學習器依賴前一個的結果)。
2. AdaBoost(Boosting的典型代表)
(1)核心邏輯
?? ?1.?? ?初始化樣本權重:首次訓練時,所有樣本分配相同的權重(如總樣本數為N,每個樣本權重為1/N)。
?? ?2.?? ?訓練弱學習器并調整樣本權重:
?? ?? ? 用當前權重的樣本集訓練一個弱學習器(如簡單決策樹)。
?? ?? ? 計算該學習器的分類誤差率,對分類錯誤的樣本提高權重(下次訓練更關注這些難分樣本),對分類正確的樣本降低權重。
?? ?3.?? ?迭代訓練多個弱學習器:重復步驟2,生成多個弱學習器。
?? ?4.?? ?組合弱學習器為強學習器:
?? ?? ? 給誤差率低的弱學習器分配更大權重(其預測結果更可信),給誤差率高的分配更小權重。
?? ?? ? 最終預測時,加權匯總所有弱學習器的結果(分類任務為加權投票,回歸任務為加權平均)。
(2)核心優勢
通過“關注難分樣本+加權組合學習器”,能有效提升弱學習器的整體性能,泛化能力強,對簡單數據集效果顯著。
五、Stacking算法
1. 核心思想
“暴力聚合多種模型”,不限制個體學習器類型(可同時使用KNN、SVM、隨機森林、邏輯回歸等),分兩個階段訓練:
?? ?1.?? ?第一階段(基礎模型訓練):用原始訓練集訓練所有選定的基礎模型,得到每個模型對訓練集和測試集的預測結果。
?? ?2.?? ?第二階段(元模型訓練):將第一階段的預測結果作為“新特征”,訓練一個“元模型”(如邏輯回歸、簡單決策樹),最終由元模型輸出集成結果。
2. 特點
?? ?? ? 靈活性高:可融合多種類型模型的優勢,適合復雜數據集。
?? ?? ? 計算成本高:需訓練多類基礎模型和元模型,步驟較繁瑣。