簡介
Bagging是通過結合幾個模型降低泛化誤差的技術。主要想法是分別訓練幾個不同的模型,然後讓所有模型表決測試樣例的輸出。這是機器學習中常規策略的一個例子,被稱為模型平均(modelaveraging)。採用這種策略的技術被稱為集成方法。
模型平均(model averaging)奏效的原因是不同的模型通常不會在測試集上產生完全相同的誤差。模型平均是一個減少泛化誤差的非常強大可靠的方法。在作為
科學論文算法的基準時,它通常是
不鼓勵使用的,因為任何
機器學習算法都可以從模型平均中大幅獲益(以增加計算和存儲為代價)。
基本思想
1.給定一個弱學習算法,和一個訓練集;
2.單個弱學習算法準確率不高;
3.將該學習算法使用多次,得出預測函式序列,進行投票;
4.最後結果準確率將得到提高.
算法步驟
給定一個大小為n的
訓練集D,Bagging算法從中均勻、有放回地(即使用自助抽樣法)選出m個大小為n'的
子集Di,作為新的訓練集。在這m個訓練集上使用分類、回歸等算法,則可得到m個模型,再通過取
平均值、取多數票等方法,即可得到Bagging的結果。
實例分析
實例環境sklearn + anaconda + jupyter
實例步驟
數據:可以採用 datasets 的數據,在此作者使用的是自己整理的股票行情
訓練、測試數據歸一化
參數尋優可以使用GridSearch,在此不作贅
代碼實現
import time
import pandas as pd
from pandas import Series,DataFrame
from sklearn.ensemble import BaggingClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import AdaBoostClassifier
from sklearn.model_selection import cross_val_score
from sklearn import preprocessing
from sklearn import datasets
iris=datasets.load_iris()
X,y=iris.data[:,1:3],iris.target
Bagging算法特性
1.Bagging通過降低基分類器的方差,改善了泛化誤差。
2.其性能依賴於基分類器的穩定性;如果基分類器不穩定,bagging有助於降低訓練數據的隨機波動導致的誤差;如果穩定,則集成分類器的誤差主要由基分類器的偏倚引起。
3.由於每個樣本被選中的機率相同,因此bagging並不側重於訓練數據集中的任何特定實例。