基本介紹
- 中文名:套袋
- 外文名:bagging
- 領域:統計學
- 功能:提高分類法的準確率
簡介,基本思想,算法步驟,實例分析,Bagging算法特性,
簡介
Bagging是通過結合幾個模型降低泛化誤差的技術。主要想法是分別訓練幾個不同的模型,然後讓所有模型表決測試樣例的輸出。這是機器學習中常規策略的一個例子,被稱為模型平均(modelaveraging)。採用這種策略的技術被稱為集成方法。
模型平均(model averaging)奏效的原因是不同的模型通常不會在測試集上產生完全相同的誤差。模型平均是一個減少泛化誤差的非常強大可靠的方法。在作為科學論文算法的基準時,它通常是不鼓勵使用的,因為任何機器學習算法都可以從模型平均中大幅獲益(以增加計算和存儲為代價)。
基本思想
1.給定一個弱學習算法,和一個訓練集;
2.單個弱學習算法準確率不高;
3.將該學習算法使用多次,得出預測函式序列,進行投票;
4.最後結果準確率將得到提高.
算法步驟
給定一個大小為n的訓練集D,Bagging算法從中均勻、有放回地(即使用自助抽樣法)選出m個大小為n'的子集Di,作為新的訓練集。在這m個訓練集上使用分類、回歸等算法,則可得到m個模型,再通過取平均值、取多數票等方法,即可得到Bagging的結果。
實例分析
- 實例環境
sklearn + anconda + jupyter - 實例步驟
- 數據:可以採用 datasets 的數據,在此作者使用的是自己整理的股票行情
- 訓練、測試數據歸一化
- 參數尋優可以使用GridSearch,在此不作贅
- 代碼實現
importtimeimportpandasaspdfrompandasimportSeries,DataFramefromsklearn.ensembleimportBaggingClassifierfromsklearn.treeimportDecisionTreeClassifierfromsklearn.ensembleimportAdaBoostClassifierfromsklearn.model_selectionimportcross_val_scorefromsklearnimportpreprocessingfromsklearnimportdatasetsiris=datasets.load_iris()X,y=iris.data[:,1:3],iris.target