新網(wǎng)站前期如何做seo怎么在百度免費(fèi)推廣
集成學(xué)習(xí)在數(shù)學(xué)建模中的應(yīng)用
- 一、集成學(xué)習(xí)概述
- (一)基知
- (二)相關(guān)術(shù)語(yǔ)
- (三)集成學(xué)習(xí)為何能提高性能?
- (四)集成學(xué)習(xí)方法
- 二、Bagging方法
- (一)裝袋(Bagging)方法
- (二)特點(diǎn)
- (三)數(shù)據(jù)集劃分的其他方法
- (四)參數(shù)設(shè)置
- 三、Boost方法
- (一)基知
- (二)Boosting如何獲得多個(gè)弱分類器?
- 四、AdaBoost算法
- (一)基知
- (二)弱分類器的權(quán)重
- (三)樣本集的權(quán)重
- (四)弱分類器的組合
- (五)AdaBoost算法
- (六)實(shí)例
- (六)特點(diǎn)
- (七)參數(shù)設(shè)置
- 五、Bagging和Boost的區(qū)別
- 六、模型的組合方法
- (一)怎樣組合多個(gè)弱分類器?
- (二)Averaging方法
- (七)Stacking方法
- (1)原理
- (2)基礎(chǔ)訓(xùn)練過程
- (3)交叉訓(xùn)練
- (4)代碼示例
一、集成學(xué)習(xí)概述
(一)基知
分類器對(duì)數(shù)據(jù)集依賴強(qiáng),數(shù)據(jù)集紛雜,很難找到適用所有情況的分類器。比如,訓(xùn)練任務(wù)和目標(biāo)任務(wù)的數(shù)據(jù)分布不一致,數(shù)據(jù)過少等。
集成學(xué)習(xí)(Ensemble Learning) 是通過某種策略將多個(gè)模型
集成起來,通過群體決策
來提高決策準(zhǔn)確率
。
集成學(xué)習(xí)中的兩個(gè)核心問題是:
(1) 如何獲得多個(gè)模型?(2) 如何集成多個(gè)模型?
(二)相關(guān)術(shù)語(yǔ)
(三)集成學(xué)習(xí)為何能提高性能?
(1)從模型的期望誤差分析
- 設(shè)X是樣本集,yx 是樣本的真實(shí)的目標(biāo)值,對(duì)于T個(gè)不同的模型,第 t 個(gè)模型的期望平方誤差是:
e ( f t ) = E x [ ( f t ( X ) ? y x ) 2 ] = E x [ ε t ( X ) 2 ] e(f_t)=E_x[(f_t(X)-y_x)^2]=E_x[\varepsilon_t(X)^2] e(ft?)=Ex?[(ft?(X)?yx?)2]=Ex?[εt?(X)2] - 集成模型 f 的期望平方誤差 e(f) 滿足:
1 T ∑ t = 1 r E x [ ε t ( X ) 2 ] ≤ e ( f ) ≤ ∑ t = 1 r E x [ ε t ( X ) 2 ] \frac{1}{T}\sum_{t=1}^{r}E_{x}[\varepsilon_{t}(X)^{2}]\leq e(f)\leq\sum_{t=1}^{r}E_{x}[\varepsilon_{t}(X)^{2}] T1?t=1∑r?Ex?[εt?(X)2]≤e(f)≤t=1∑r?Ex?[εt?(X)2] - 投票規(guī)則的集成模型的期望錯(cuò)誤大等于所有模型的平均期望錯(cuò)誤的1/M,小于等于所有模型的平均期望錯(cuò)誤
(2)從模型的泛化誤差分析
分類問題
: f i ( X ) > 0.5 f_i(\mathbf{X}){>}0.5 fi?(X)>0.5,大部分樣本錯(cuò)誤分類,投票后,集成學(xué)習(xí)器的錯(cuò)誤率更高。
回歸問題
: E [ ( f i ( X ) ? y ) 2 ] > E [ ( y  ̄ ? y ) 2 ] \mathbb{E}[(f_i(\mathbb{X})-y)^2]>\mathbb{E}[(\overline{y}-y)^2] E[(fi?(X)?y)2]>E[(y??y)2],預(yù)測(cè)效果弱于均值預(yù)測(cè),組合預(yù)測(cè)結(jié)果后,集成學(xué)習(xí)器的預(yù)測(cè)誤差更大
集成好于單個(gè)分類器的條件:
- 弱分類器獨(dú)立(難滿足)
- 弱分類器應(yīng)好于隨機(jī)猜測(cè)分類器,即 誤差<0.5(容易滿足)
(3)直觀理解集成方法對(duì)預(yù)測(cè)能力的提升
提升的優(yōu)勢(shì):
假設(shè)有25個(gè)弱分類器,且每個(gè)弱分類器的錯(cuò)誤率均為0.35,采用少數(shù)服從多數(shù)的提升方式,只有當(dāng)超過13個(gè)弱分類器都對(duì)樣本x錯(cuò)誤分類,才會(huì)導(dǎo)致x被誤分類。
e e n s e m b l e = ∑ i = 13 25 C 25 i ( 0.35 ) i ( 1 ? 0.35 ) 25 ? i = 0.06 e_{ ens em ble} = \sum_{i=13}^{25}C_{ 25}^{ i}(0.35)^{i}(1-0.35)^{25-i}=0.06 eensemble?=i=13∑25?C25i?(0.35)i(1?0.35)25?i=0.06
誤分類率降低!
(四)集成學(xué)習(xí)方法
待解決的問題:
- 怎樣獲得不同的弱分類器?
Bagging 和 Boosting 方法 - 如何將多個(gè)弱分類器組合成一個(gè)強(qiáng)分類器?
投票法、加權(quán)平均、Stacking
二、Bagging方法
(一)裝袋(Bagging)方法
(1)Bagging方法是基于訓(xùn)練集的劃分:
(又被稱為自舉匯聚法Bootstrap aggregating),對(duì)原始數(shù)據(jù)進(jìn)行自助采樣
(bootstrap samples),形成T個(gè)數(shù)據(jù)集;訓(xùn)練每個(gè)數(shù)據(jù)集,獲得T個(gè)弱模型;用投票法或加權(quán)平均生成集成學(xué)習(xí)模型。
自助采樣:有放回采樣,是重采樣的一種。
(2)實(shí)例
已知原數(shù)據(jù)集有10個(gè)樣本,利用裝袋法,產(chǎn)生預(yù)測(cè)模型。
分別計(jì)算每個(gè)劃分點(diǎn),根據(jù)信息熵或Gini系數(shù)
,發(fā)現(xiàn)分裂點(diǎn)0.35或0.75能產(chǎn)生最好的分類結(jié)果,故,采用0.35作為分類標(biāo)準(zhǔn)。決策樹單個(gè)分類器準(zhǔn)確率最高是70%。
信息熵:
E n t r o p y = ? ∑ i = 1 c p ( i ) log ? p ( i ) Entropy = -\sum_{\mathrm{i}=1}^{c} p(\mathrm{i}) \log p(i) Entropy=?i=1∑c?p(i)logp(i)
Gini系數(shù):
G i n i ( D ) = 1 ? ∑ i = 1 c p ( i ) 2 Gini(D) = 1 - \sum_{i=1}^{c} p(i)^{2} Gini(D)=1?i=1∑c?p(i)2
G i n i ( D , a ) = ∑ v = 1 V ∣ D v ∣ ∣ D ∣ G i n i ( D v ) Gini(D,a)=\sum_{v=1}^V\frac{|D_v|}{|D|}\mathrm{~Gini}\left(D_v\right) Gini(D,a)=v=1∑V?∣D∣∣Dv?∣??Gini(Dv?)
假設(shè)有c個(gè)類,樣本點(diǎn)屬于第 i 類的概率為 p ( i ) p(i) p(i)。信息熵和Gini系數(shù)都是用于衡量不確定性和多樣性的重要指標(biāo),它們的系數(shù)越小越好
。
計(jì)算步驟:
Step1:
- 以 x = 0.35 作為劃分點(diǎn),產(chǎn)生子集 {0.1, 0.2, 0.3} 和 {0.4 ~ 1}
Gini(x=0.35)= (3/10) * [1-02-12] + (7/10) * [1-(4/7)2-(3/7)2] = 24/49- 類似地
Gini(x=0.75)=(7/10) * [1-(4/7)2-(3/7)2] + (3/10) * [1-02-12] = 24/49Step2:
重復(fù)采樣,10輪,每輪獲得分類器,準(zhǔn)確率在70%
Step3:
多數(shù)表決 決定樣本的最終類別,10個(gè)樣本均正確分類。
裝袋通過降低弱分類器方差改變了泛化誤差。
(二)特點(diǎn)
- 結(jié)構(gòu)簡(jiǎn)單,表現(xiàn)不錯(cuò)。
- 通過隨機(jī)改變訓(xùn)練集的分布,產(chǎn)生新的訓(xùn)練子集。某些數(shù)據(jù)對(duì)象被多次采樣,對(duì)于特定的子空間,弱學(xué)習(xí)器會(huì)具有很高的分類精度。
- 弱學(xué)習(xí)器預(yù)測(cè)能力越強(qiáng)且它們之間的差異越大,集成模型效果越好。
- Bagging方法不偏好任何基學(xué)習(xí)器,可以降低模型的方差,對(duì)不穩(wěn)定學(xué)習(xí)算法非常有效。
- 適合小算例集,在大規(guī)模訓(xùn)練集上效果會(huì)下降(參見改進(jìn)模型)。
(三)數(shù)據(jù)集劃分的其他方法
(1)依據(jù)數(shù)據(jù)或特征
對(duì)原始訓(xùn)練數(shù)據(jù)劃分,形成多個(gè)數(shù)據(jù)集。如隨機(jī)森林(Random Forest) 方法。
(2)依據(jù)數(shù)據(jù)的類標(biāo)號(hào)
對(duì)原始訓(xùn)練數(shù)據(jù)劃分,形成迭代的二分類問題。如錯(cuò)誤-糾正輸出編碼方法。
(3)依據(jù)算法模型
的變化,獲得不同的弱學(xué)習(xí)模型。如改變神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)或算法添加隨機(jī)性。
(四)參數(shù)設(shè)置
- n_estimators:基學(xué)習(xí)器個(gè)數(shù)。
- criterion:分裂標(biāo)準(zhǔn),squared_error均方差;均方差等價(jià)于特征的方差減少和最小化L2正則項(xiàng)。friedman_mse費(fèi)爾德曼均方誤差。
- max_depth:樹的最大深度,防止過擬合。
- min_samples_split:內(nèi)部節(jié)點(diǎn)再劃分所需要的最少樣本數(shù),限制是否繼續(xù)分裂。
- min_samples_leaf:葉子節(jié)點(diǎn)的最少樣本數(shù),用于剪枝。
- min_weight_fraction_leaf:葉子節(jié)點(diǎn)所有樣本權(quán)重的最小值。如果小于這個(gè)權(quán)重,那么和它的兄弟節(jié)點(diǎn)一起被剪枝。
- max_features: None,auto考慮所有特征;log2最多考慮 log2N 個(gè)特征;sqrt最多考慮平方根個(gè)特征;整數(shù)表示特征的絕對(duì)數(shù);浮點(diǎn)數(shù)表示考慮的特征個(gè)數(shù)的百分比。節(jié)省建樹代價(jià)。
- max_leaf_nodes:樹的最大葉子結(jié)點(diǎn)數(shù),防止過擬合。
- min_impurity_decrease:結(jié)點(diǎn)分裂的純度減少的最小值,限制是否繼續(xù)分裂。
- min_samples_leaf:葉子節(jié)點(diǎn)的最少樣本數(shù),用于剪枝。
- bootstrap:布爾值,是否使用bootstrap采樣。false,全部數(shù)據(jù)參與訓(xùn)練每個(gè)棵樹。
- oob_score:布爾值,是否采用袋外樣本(out-of-bag sample)來評(píng)估模型的好壞。與交叉驗(yàn)證類似,可以理解為驗(yàn)證集。當(dāng)bootstrap為真時(shí),使用。oob_score是單顆決策樹返回的在驗(yàn)證集上的R2值。
- n_jobs:并行計(jì)算作業(yè)數(shù)量。
三、Boost方法
(一)基知
提升(Boosting)方法是一種常用的統(tǒng)計(jì)學(xué)習(xí)方法,是一種將弱學(xué)習(xí)器轉(zhuǎn)換為強(qiáng)學(xué)習(xí)器的迭代方法。在分類問題中, AdaBoost通過改變訓(xùn)練樣本的權(quán)重,學(xué)習(xí)多個(gè)分類器,并將這些分類器進(jìn)行線性組合,提升分類的性能。
代表性算法AdaBoost,是1995年由Freund和Schapire提出的。
(二)Boosting如何獲得多個(gè)弱分類器?
- 從原數(shù)據(jù)集中,抽樣樣本組成訓(xùn)練集;
- 產(chǎn)生弱學(xué)習(xí)器,
去除已正確分類的樣本,保留誤分類樣本
; - 從原數(shù)據(jù)集中,再抽取樣本,與上一輪的誤分類樣本構(gòu)成新的訓(xùn)練集;
- 重復(fù)(2)-(3)步驟,直至獲得T個(gè)分類器;
- 組合弱學(xué)習(xí)器,形成強(qiáng)學(xué)習(xí)器。
四、AdaBoost算法
(一)基知
- 問題1 怎樣獲得多個(gè)弱分類器?
AdaBoost算法提高那些在前一輪弱分類器錯(cuò)誤分類的樣本的權(quán)值,降低那些被正確分類樣本的權(quán)值。 - 問題2 如何將多個(gè)弱分類器組合成一個(gè)強(qiáng)分類器?
AdaBoost算法采用加權(quán)表決的方法。具體地,加大分類誤差率小的弱分類器的權(quán)值,使其在表決中起到較大的作用。
f ( x ) = α 1 f 1 ( x ) + α 2 f 2 ( x ) + . . . . . . + α T f T ( x ) f(x){=}\alpha_{1}f_{1}(x){+}\alpha_{2}f_{2}(x){+}......+\alpha_{\mathrm{T}}f_{\mathrm{T}}(x) f(x)=α1?f1?(x)+α2?f2?(x)+......+αT?fT?(x)
(二)弱分類器的權(quán)重
設(shè)訓(xùn)練集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } , y i ∈ { ? 1 , + 1 } D=\{(x_{1},y_{1}),(x_{2},y_{2}),...,(x_{N},y_{N})\}, y_{i}\in\{-1,+1\} D={(x1?,y1?),(x2?,y2?),...,(xN?,yN?)},yi?∈{?1,+1},產(chǎn)生T個(gè)弱分類器,其中
- 第 j 個(gè)分類器 fj 的
錯(cuò)誤率
定義為:
ε j = 1 N [ ∑ i = 1 N w i I ( f j ( x i ) ≠ y i ) ] , j = 1 , 2 , . . . , T \varepsilon_{j}=\frac{1}{N}[\sum_{i=1}^{N}w_{i}I(f_{j}(x_{i})\neq y_{i})], j=1,2,...,T εj?=N1?[i=1∑N?wi?I(fj?(xi?)=yi?)],j=1,2,...,T
弱分類器的誤分類率 εj 是錯(cuò)誤分類樣本的加權(quán)平均,N是樣本數(shù),wi是第 i 個(gè)樣本權(quán)重,指示函數(shù) I(?) 等于0或1。wi是歸一化后的值。
- 弱分類器 fj 的
重要性(權(quán)重)
定義為:
α j = 1 2 l n ( 1 ? ε j ε j ) , j = 1 , 2 , . . . , T \alpha_{ j}=\frac{1}{2}\mathbf{ln} (\frac{1-\varepsilon_{ j}}{\varepsilon_{ j}}), j=1,2,...,T αj?=21?ln(εj?1?εj??),j=1,2,...,T
若 α j \alpha_{j} αj?= 0.5,αj = 0;
若 α j \alpha_{j} αj? < 0.5 且 α j \alpha_{j} αj?→ 0, α j \alpha_{j} αj?是一個(gè)很大的正值;
若 α j \alpha_{j} αj? > 0.5 且 α j \alpha_{j} αj?→ 1, α j \alpha_{j} αj?是一個(gè)很大的負(fù)值;
結(jié)論:誤差大的分類器,在預(yù)測(cè)結(jié)果表決時(shí),權(quán)重小。
(三)樣本集的權(quán)重
- 初始樣本權(quán)重設(shè)為:
w 1 i = 1 N , i = 1... N w_{_{1i}}=\frac{1}{N},i=1...N w1i??=N1?,i=1...N - 樣本權(quán)重更新操作:
Z j = ∑ i = 1 N w j i exp ? ( ? α j y i f j ( x i ) ) Z_{ j}=\sum_{i=1}^{N}w_{ ji}\exp{(-\alpha_{ j}y_{i}f_{ j}(x_{ i}))} Zj?=∑i=1N?wji?exp(?αj?yi?fj?(xi?))
w j + 1 , i = w j i Z j exp ? ( ? α j y i f j ( x i ) ) , i = 1... N , j = 1 , . . . , T ? w j + 1 , i = { exp ? ( ? α j ) Z j w j i , y i = f j ( x i ) exp ? ( α j ) Z j w j i , y i ≠ f j ( x i ) , α j = 1 2 ln ? 1 ? ε j ε j w_{j+1, i}=\frac{w_{ji}}{Z_{j}}\exp(-\alpha_{j}y_{i}f_{j}(x_{i})),i=1...N ,j=1,...,T\\\Rightarrow w_{j+1, i}=\begin{cases}\frac{\exp(-\alpha_{j})}{Z_{j}}w_{ji}, y_{i}=f_{j}(x_{i})\\\frac{\exp(\alpha_{j})}{Z_{j}}w_{ji}, y_{i}\neq f_{j}(x_{i})\end{cases}, \alpha_{j}=\frac{1}{2}\ln\frac{1-\varepsilon_{j}}{\varepsilon_{j}} wj+1,i?=Zj?wji??exp(?αj?yi?fj?(xi?)),i=1...N,j=1,...,T?wj+1,i?={Zj?exp(?αj?)?wji?,yi?=fj?(xi?)Zj?exp(αj?)?wji?,yi?=fj?(xi?)?,αj?=21?lnεj?1?εj??
w j + 1 , i w_{j+1,i} wj+1,i?是第 i 個(gè)樣本在 j+1 個(gè)學(xué)習(xí)器中的權(quán)重。
誤分類的樣本的權(quán)重在下一次學(xué)習(xí)中起到了更大的作用,且權(quán)重是指數(shù)級(jí)更新。
(四)弱分類器的組合
強(qiáng)分類器是T個(gè)弱分類器 f j f_{j} fj?的線性組合,定義為:
C ? ( x ) = s i g n ( f ( x ) ) = s i g n ( ∑ j = 1 r α j f j ( x ) ) C^*(x)=sign(f(x))=sign(\sum_{j=1}^r\alpha_jf_j(x)) C?(x)=sign(f(x))=sign(j=1∑r?αj?fj?(x))
x是待分類對(duì)象, f j f_{j} fj?是第 j 個(gè)弱分類器,C* 是分類結(jié)果。
對(duì)于x,分類結(jié)果C*(x)是T個(gè)弱分類器分類結(jié)果的加權(quán)表決。
當(dāng)f(x)為負(fù)數(shù),x被分類為-1。
當(dāng)f(x)為正數(shù),x被分類為1。
(五)AdaBoost算法
輸入:訓(xùn)練集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } , y i ∈ { ? 1 , + 1 } D=\{(x_{1},y_{1}),(x_{2},y_{2}),...,(x_{N},y_{N})\}, y_{i}\in\{-1,+1\} D={(x1?,y1?),(x2?,y2?),...,(xN?,yN?)},yi?∈{?1,+1},T個(gè)基學(xué)習(xí)器。
輸出:最終分類器 f ( x ) f(x) f(x)。
- 初始化訓(xùn)練數(shù)據(jù)的權(quán)值分布, D 1 = { w 11 , w 12 , w 1 i , . . . , w 1 N } , w 1 i = 1 / N D_1=\{w_{11} ,w_{12},w_{1i},...,w_{1N}\},w_{1i}=1/N D1?={w11?,w12?,w1i?,...,w1N?},w1i?=1/N
- F o r j = 1...... T \mathrm{For} j=1......\mathrm{T} Forj=1......T
- 使用具有權(quán)值分布的訓(xùn)練集Dj進(jìn)行訓(xùn)練,得到基分類器 f j ( x ) f_{j}\left(x\right) fj?(x): X → { ? 1 , + 1 } X\to\{-1,+1\} X→{?1,+1}
X→{-1,+1} - 計(jì)算 f j ( x ) f_{j}\left(x\right) fj?(x)的分類誤差率
ε j = 1 N [ ∑ i = 1 N w i I ( f j ( x i ) ≠ y i ) ] \varepsilon_{j}=\frac{1}{N}[\sum_{i=1}^{N}w_{i}I(f_{j}(x_{i})\neq y_{i})] εj?=N1?[i=1∑N?wi?I(fj?(xi?)=yi?)] - 計(jì)算 f j ( x ) f_{j}\left(x\right) fj?(x)的系數(shù)
α j = 1 2 l n ( 1 ? ε j ε j ) \alpha_{j}=\frac{1}{2}\mathbf{ln}(\frac{1-\varepsilon_{j}}{\varepsilon_{j}}) αj?=21?ln(εj?1?εj??) - 更新訓(xùn)練數(shù)據(jù)集的權(quán)重分布
w j + 1 , i = w j i Z e x p ( ? α j y i f j ( x i ) ) w_{_{j+1, i}}=\frac{w_{_{ji}}}{Z}\mathbf{e} \mathbf{x} \mathbf{p}(-\alpha_{_j}y_{_i}f_{_j}(x_{_i})) wj+1,i??=Zwji???exp(?αj??yi??fj??(xi??)) - 由基分類器的線性組合,獲得強(qiáng)分類器 f ( x ) f\left(x\right) f(x)
(六)實(shí)例
初始化權(quán)重分布: w 1 i = 0.1 , i = 1 , 2 , … , 10 \mathrm{w_{1i}}=0.1,\mathrm{i}=1,2,\ldots,10 w1i?=0.1,i=1,2,…,10
第1輪迭代:
①產(chǎn)生第1個(gè)弱分類器 j = 1;在D1數(shù)據(jù)集上,閾值取2.5,分類誤差率最小 ? f 1 ( x ) = { 1 , x < 2.5 ? 1 , x > 2.5 \Rightarrow f_1(x)=\begin{cases} 1, x<2.5\\-1, x>2.5\end{cases} ?f1?(x)={1,x<2.5?1,x>2.5?
②f1在D1的上的誤差 e 1 = 0.1 × 3 = 0.3 e_1=0.1\times3=0.3 e1?=0.1×3=0.3
f = 0.4236 f 1 ( x ) f=0.4236f_1(x) f=0.4236f1?(x),對(duì)D1預(yù)測(cè),3個(gè)樣本誤分類;
③f1的權(quán)重 α 1 = 1 2 l n 1 ? e 1 e 1 = 0.4236 \alpha_{_1}=\frac{1}{2}\mathbf{ln} \frac{1-e_{_1}}{e_{_1}}= 0.4 2 3 6 α1??=21?lne1??1?e1???=0.4236
④更新樣本權(quán)重
D 2 = ( 0.0715 , 0.0715 , 0.0715 , 0.0715 , 0.0715 , 0.1666 , 0.1666 , 0.1666 , 0.0715 ) D_{2}=(0.0715,0.0715,0.0715,0.0715,0.0715,\boxed{0.1666,0.1666,0.1666},0.0715) D2?=(0.0715,0.0715,0.0715,0.0715,0.0715,0.1666,0.1666,0.1666?,0.0715)
第2輪迭代:
①在權(quán)值分布為D2的數(shù)據(jù)集上,閾值取8.5,分類誤差率最小,產(chǎn)生第2個(gè)弱分類器:
? f 2 ( x ) = { 1 , x < 8.5 ? 1 , x > 8.5 \Rightarrow f_2( x )=\begin{cases} 1,&x < 8 .5\\-1,&x > 8 .5\end{cases} ?f2?(x)={1,?1,?x<8.5x>8.5?
② f2在D2的上的誤差: e 2 = 0.0715 × 3 = 0.2143 e_2=0.0715\times3=0.2143 e2?=0.0715×3=0.2143
③ f2的權(quán)重: α 2 = 1 2 l n 1 ? e 2 e 2 = 0.6496 \alpha_{_2}=\frac{1}{2}\mathbf{ln}\frac{1-e_{_2}}{e_{_2}}=0.6496 α2??=21?lne2??1?e2???=0.6496
f = 0.4236 f 1 ( x ) + 0.6496 f 2 ( x ) f=0.4236f_1(x)+0.6496f_2(x) f=0.4236f1?(x)+0.6496f2?(x),對(duì)D1分類,有3個(gè)樣本誤分類;
④更新樣本權(quán)重:
D 2 = ( 0.0715 , 0.0715 , 0.0715 , 0.0715 , 0.0715 , 0.0715 , 0.1666 , 0.1666 , 0.1666 , 0.0715 ) D_{2}=(0.0715,0.0715,0.0715,0.0715,0.0715,0.0715,\boxed{0.1666,0.1666,0.1666},0.0715) D2?=(0.0715,0.0715,0.0715,0.0715,0.0715,0.0715,0.1666,0.1666,0.1666?,0.0715)
第3輪迭代:
① 在權(quán)值分布為D3的數(shù)據(jù)集上,閾值取5.5,分類誤差率最小,產(chǎn)生第3個(gè)弱分類器:
? f 3 ( x ) = { 1 , x < 5.5 ? 1 , x > 5.5 \Rightarrow f_{3}(x)=\begin{cases} 1, x<5.5\\-1, x>5.5\end{cases} ?f3?(x)={1,x<5.5?1,x>5.5?
② f3在D3的上的誤差: e 3 = 0.0455 × 4 = 0.1820 e_3=0.0455\times4=0.1820 e3?=0.0455×4=0.1820
③ f3的權(quán)重: α 3 = 1 2 l n 1 ? e 3 e 3 = 0.7514 \alpha_{_3}=\frac{1}{2}\mathbf{ln} \frac{1-e_{_3}}{e_{_3}}= 0.7 5 1 4 α3??=21?lne3??1?e3???=0.7514
④更新樣本權(quán)重: D 4 = ( 0.125 , 0.125 , 0.125 , 0.102 , 0.102 , 0.102 , 0.065 , 0.065 , 0.065 , 0.125 ) D_{4}=(0.125,0.125,0.125,0.102,0.102,0.102,0.065,0.065,0.065,0.125) D4?=(0.125,0.125,0.125,0.102,0.102,0.102,0.065,0.065,0.065,0.125)
f ( x ) = 0.4236 f 1 ( x ) + 0.6496 f 2 ( x ) + 0.7514 f 3 ( x ) f(x)=0.4236f_1(x)+0.6496f_2(x)+0.7514f_3(x) f(x)=0.4236f1?(x)+0.6496f2?(x)+0.7514f3?(x),對(duì)D1分類,有0個(gè)樣本誤分類;生成分類器過程終止。
強(qiáng)分類器是 f ( x ) = 0.4236 f 1 ( x ) + 0.6496 f 2 ( x ) + 0.7514 f 3 ( x ) f(x)=0.4236f_1(x)+0.6496f_2(x)+0.7514f_3(x) f(x)=0.4236f1?(x)+0.6496f2?(x)+0.7514f3?(x)
達(dá)到最大迭代次數(shù)或誤分類率小于指定閾值等條件,算法終止。
(六)特點(diǎn)
- 優(yōu)點(diǎn):泛化錯(cuò)誤率低,易編碼,可以應(yīng)用在大部分分類器上,無(wú)參數(shù)調(diào)整。
- 缺點(diǎn):對(duì)離群點(diǎn)敏感
- 適用數(shù)據(jù)類型:數(shù)值型和標(biāo)稱型
提升方法的直觀理解
(七)參數(shù)設(shè)置
- base_estimator:基學(xué)習(xí)器。None表示默認(rèn)學(xué)習(xí)器是深度為1的決策樹分類器。如果指定其他學(xué)習(xí)器,需給出樣本的權(quán)重。
- n_estimators:基學(xué)習(xí)器個(gè)數(shù)。
- learning_rate:浮點(diǎn)數(shù),學(xué)習(xí)率,取值[0,1]。弱學(xué)習(xí)器的權(quán)重縮減的系數(shù)。若基學(xué)習(xí)器個(gè)數(shù)較大,則學(xué)習(xí)率可適當(dāng)取大一些的值,否則取小一點(diǎn)的值,以免錯(cuò)過最優(yōu)解。
- algorithm:SAMME用對(duì)樣本集分類效果作為弱學(xué)習(xí)器權(quán)重,而SAMME.R使用了對(duì)樣本集分類的預(yù)測(cè)概率大小來作為弱學(xué)習(xí)器權(quán)重。SAMME.R迭代一般比SAMME快。
- random_state:隨機(jī)種子。
另:
1. AdaBoostClassifier的對(duì)象
- estimators_:以列表的形式返回所有的分類器。
- classes_:類別標(biāo)簽
- estimator_weights_:每個(gè)分類器權(quán)重
- estimator_errors_:每個(gè)分類器的錯(cuò)分率,與分類器權(quán)重相對(duì)應(yīng)。
- feature_importances_:特征重要性,這個(gè)參數(shù)使用前提是基分類器也支持這個(gè)屬性。
2. AdaBoostClassifier的方法
- decision_function(X):返回決策函數(shù)值(比如svm中的決策距離)
- fit(X,Y):在數(shù)據(jù)集(X,Y)上訓(xùn)練模型。
- get_parms():獲取模型參數(shù)
- predict(X):預(yù)測(cè)數(shù)據(jù)集X的結(jié)果。
- predict_log_proba(X):預(yù)測(cè)數(shù)據(jù)集X的對(duì)數(shù)概率。
- predict_proba(X):預(yù)測(cè)數(shù)據(jù)集X的概率值。
- score(X,Y):輸出數(shù)據(jù)集(X,Y)在模型上的準(zhǔn)確率。
- staged_decision_function(X):返回每個(gè)基分類器的決策函數(shù)值
- staged_predict(X):返回每個(gè)基分類器的預(yù)測(cè)數(shù)據(jù)集X的結(jié)果。
.- staged_predict_proba(X):返回每個(gè)基分類器的預(yù)測(cè)數(shù)據(jù)集X的概率結(jié)果。- **staged_score(X, Y)**返回每個(gè)基分類器的預(yù)測(cè)準(zhǔn)確率
l loss:? { ‘linear’,‘square’,‘exponential’ } \text{loss: }\{\text{‘linear’,‘square',‘exponential’}\} loss:?{‘linear’,‘square’,‘exponential’},每次迭代時(shí),采用的損失函數(shù)
五、Bagging和Boost的區(qū)別
1. 樣本選擇
Bagging:訓(xùn)練集是在原始集中有放回選取的,從原始集中選出的各輪訓(xùn)練集之間是獨(dú)立的。
Boosting:每一輪的訓(xùn)練集不變,只是訓(xùn)練集中每個(gè)樣例 在分類器中的權(quán)重發(fā)生變化,而權(quán)值是根據(jù)上一輪的分類結(jié)果進(jìn)行調(diào)整。
2. 樣例權(quán)重
Bagging:使用均勻取樣,每個(gè)樣例的權(quán)重相等。
Boosting:根據(jù)錯(cuò)誤率不斷調(diào)整樣例的權(quán)值,錯(cuò)誤率越大則權(quán)重越大。
3. 預(yù)測(cè)模型
Bagging:所有弱學(xué)習(xí)器的權(quán)重相等。
Boosting:每個(gè)弱學(xué)習(xí)器都有相應(yīng)的權(quán)重,對(duì)于誤差小的學(xué)習(xí)器會(huì)有更大的權(quán)重。
4. 并行計(jì)算
Bagging:各個(gè)弱學(xué)習(xí)器可以并行
生成。
Boosting:各個(gè)弱學(xué)習(xí)器只能順序
生成,因?yàn)楹笠粋€(gè)模型參數(shù)需要前一輪模型的結(jié)
果。
5. 計(jì)算效果
Bagging:因?yàn)楦鱾€(gè)訓(xùn)練子集之間是獨(dú)立
的,所以降低了弱學(xué)習(xí)器的方差,從而改進(jìn)了泛化誤差。
Boosting:因?yàn)槿鯇W(xué)習(xí)器針對(duì)錯(cuò)誤樣本學(xué)習(xí),所以降低了學(xué)習(xí)器的偏差,從而改進(jìn)了泛化誤差。
六、模型的組合方法
(一)怎樣組合多個(gè)弱分類器?
- 多專家組合:一種并行結(jié)構(gòu),所有的弱分類器都給出各自的預(yù)測(cè)結(jié)果,通過“組合”把這些預(yù)測(cè)結(jié)果轉(zhuǎn)換為最終結(jié)果。 (eg.投票及其變種、混合專家模型)
- 多級(jí)組合:一種串行結(jié)構(gòu),下一個(gè)分類器只在前一個(gè)分類器預(yù)測(cè)不夠準(zhǔn)的實(shí)例上進(jìn)行訓(xùn)練或檢測(cè)。( eg. 級(jí)聯(lián)算法)
(二)Averaging方法
-
算術(shù)平均: y ^ = 1 n ∑ i = 1 n y ^ i \hat{y}=\frac{1}{n}\sum_{i=1}^{n} \hat{y}_{i} y^?=n1?∑i=1n?y^?i?
-
加權(quán)平均: y ^ = ∑ i = 1 n ( w i y ^ i ) ∑ i = 1 n w i \widehat{y} = \frac{\sum_{i=1}^n(w_i\widehat{y}_i)}{\sum_{i=1}^nw_i} y ?=∑i=1n?wi?∑i=1n?(wi?y ?i?)?
-
幾何平均: y ^ = ∏ i = 1 n y ^ i n \widehat{y}=\sqrt[n]{\prod_{i=1}^n\widehat{y}_i} y ?=n∏i=1n?y ?i??
- 算術(shù)平均的應(yīng)用:軟投票Soft voting,即計(jì)算弱分類器預(yù)測(cè)概率的均值,與概率閾值相比,獲得最終的分類結(jié)果
- 原因:算術(shù)平均對(duì)于弱學(xué)習(xí)器學(xué)習(xí)結(jié)果相近的情況,起到的作用不大。
- 解決:采用排序平均(Ranking averaging)。
(七)Stacking方法
(1)原理
算法通過兩層模型結(jié)構(gòu)來實(shí)現(xiàn)模型融合。在第一層(Level 0),訓(xùn)練多個(gè)基學(xué)習(xí)器,這些模型可以是同質(zhì)
的也可以是異質(zhì)
的。在第二層(Level 1),使用元模型或次學(xué)習(xí)器將第一層所有模型的預(yù)測(cè)結(jié)果融合起來,得到最終的預(yù)測(cè)結(jié)果。
(2)基礎(chǔ)訓(xùn)練過程
Step1:首先,將訓(xùn)練數(shù)據(jù)集分為兩個(gè)部分,一部分用于訓(xùn)練基礎(chǔ)模型(也稱為基學(xué)習(xí)器或一級(jí)學(xué)習(xí)器)
,另一部分作為驗(yàn)證集
。
Step2:使用這些基礎(chǔ)模型對(duì)驗(yàn)證集做出預(yù)測(cè),生成預(yù)測(cè)結(jié)果。這些基礎(chǔ)模型可以是不同的算法,也可以是同一算法的不同參數(shù)設(shè)置。
Step3:將這些基礎(chǔ)模型的預(yù)測(cè)結(jié)果作為新的特征,與原始特征一起輸入到最終的模型(也稱為元學(xué)習(xí)器或二級(jí)學(xué)習(xí)器)中進(jìn)行訓(xùn)練。
(3)交叉訓(xùn)練
交叉訓(xùn)練提高了Stacking融合有效性,信息隔離,避免重復(fù)學(xué)習(xí)造成過擬合
(4)代碼示例
另:
- stack_method:選擇元學(xué)習(xí)器的訓(xùn)練數(shù)據(jù)類型:‘a(chǎn)uto’、‘predict_proba’、‘decision_function’、'predict’四個(gè)不同取值
- passthrough:特征增強(qiáng)
完