03整合學習-Boosting-AdaBoost演算法原理
02 整合學習 – 特徵重要度、Extra Tree、TRTE、IForest、隨機森林總結
八、Boosting 提升學習
提升學習是一種機器學習技術,可以用於__迴歸__和__分類__問題。它每一步產生__弱預測模型__ (如決策樹),並__加權累加__到總模型中。如果每一步的弱預測模型的生成都是依據損失函式的梯度方式的,那麼稱為__梯度提升__(Gradient Boosting)。
提升技術的意義: 如果一個問題存在__弱預測模型__,那麼可以通過Boosting技術得到一個__強預測模型__。
常見的模型有: Adaboost、Gradient Boosting(GBT/GBDT/GBRT)、XGBoost、LightGBM。
不同模型在Boosting處理過程中的差異體現在根據效果更改資料這一步。
回顧: 隨機森林演算法
1、隨機有放回抽樣,選取S個資料集,建立S個模型。
2、在每一個基模型構建過程中,對於劃分決策樹時,隨機選擇K個特徵進行劃分。
隨機森林演算法本身(bagging方法),不會對原有資料集中的資料內容進行改變,只是對資料集進行隨機抽樣。
01 整合學習 – 概述、Bagging – 隨機森林、袋外錯誤率
提升學習演算法:
bagging演算法不會更改原有資料的值,但是在Boosting演算法中會根據模型訓練的結果,通過某種演算法,對原有資料的值進行更改,再建立下一個模型。
九、AdaBoost演算法原理
百度百科說得挺好:
https://baike.baidu.com/item/adaboost/4531273?fr=aladdin
Adaptive Boost 是一種迭代演算法。每一輪迭代後生成一個新的學習器,然後對樣本進行預測。 預測對的__權重__減小,預測錯的__權重__增加。__權重__越高在下一輪的迭代中佔的比重就越大,即越難區分的樣本在樣本中會越重要。
整個迭代當錯誤率足夠小,或迭代次數到一定次數停止。
下圖虛線代表每次預測的分割線,預測成功的點會變小,預測失敗的點會變大。一共進行了6次迭代。
上述是對樣本層面的調整,下面看看對模型的調整。
注意,為了方便區分,本文對一概念做個定義上的區分:對樣本比重的調整本文統稱為權重,對模型比重的調整本文稱為權值。
Adaboost演算法將基分類器的線性組合作為強分類器,同時給分類誤差率較小的基分類器以大的__權值__,給分類誤差率較大的基分類器以小的__權值__。構建的線性組合為:
GmG(x): 基分類器;__α m :__ 權值;
最終分類器是線上性組合的基礎上,f(x) 很有可能是一個連續的值,那麼如果對連續值進行分類操作?我們可以用Sign函式進行轉換。
補充知識:
sign(x)或者Sign(x)叫做符號函式,在數學和計算機運算中,其功能是取某個數的符號(正或負):
當x>0,sign(x)=1; 當x=0,sign(x)=0; 當x<0, sign(x)=-1;
f(x)可能是連續值,經過sign函式處理後,最終得到的G(x)的取值不是1就是-1。這是Adaboost演算法中必要重要的一環,目前對於Adaboost演算法瞭解到這個程度即可。
最終強學習器G(x)的損失函式:
損失函式(代價函式越小越好),反應了模型的好壞。這是一個示性函式(0,1損失函式)。
考慮單個樣本的情況:即當滿足 G(x)≠y 時,說明預測錯了取1。G(x)=y,說明預測對了取0。
最後累加n個樣本對應的取值,求平均值。
如果4個樣本,最後I(G(x)≠y) 計算後的值分別問:0,0,1,0;說明3個預測對了,一個預測錯了,即loss=1/4;
PS:這裡的取值不是連續的,下面介紹連續取值的損失函式:
__解析:__先來考慮單個損失情況。注意:下面這個式子是恆成立的,我們一步一步來分解該公式。
1、當預測值不等於真實值,即G(x)≠y的時候,說明真實值和預測值是異號的 => __yG(x) < 0__;又∵G(x) = sign(f(x)),f(x)是正的時候,G(x)=1。f(x)是負的時候,G(x)=-1。∴ f(x)和G(x)是同號的。所以 => __yf(x) < 0__;
2、當預測值等於真實值,即G(x)=y的時候, __yf(x) > 0__;
3、__-yf(x)__ 是e指數函式的自變數。
3、觀察下面e的指數函式圖:
當x<0時,ex 的取值為 (0,1);
當x=0時,ex=1;
當x>0時,ex 的取值為 (1,+);
4、 結合上述公式進行推導:
令 -yG(x) = k,
當G≠y時,k>0, 得: e^k 取值 (1,+),此時 I(G≠y)=1;
當G=y時,k<0, 得: e^k 取值 (0,1),此時 I(G≠y)=0;
無論如何,I(G≠y) < e^k;
上圖單個樣本的恆不等式得證。
將單個樣本的恆不等式進一步推演到整個樣本的範圍,不等式依然恆成立:
例子:
1號樣本預測準確,左式=0,右式= (0,1)
2號樣本預測錯誤,左式=1,右式= (1,+∞)
3號樣本預測準確,左式=0,右式= (0,1)
1~3號樣本加和,左邊<右邊;
最終推論: 當右邊式子達到最小值的時候,左邊的式子也能達到最小,此時損失函式最小。這個公式的優點在於我們能構建出一個連續的損失函式,和上面提到的01損失函式等價,都可以衡量系統的好壞。
進一步思考:
如上圖所示:
第一輪:最初我們根據樣本訓練,得到了弱學習器①。α1×弱學習器① = 強學習器①。
第二輪:上一輪預測錯誤的樣本加大權重,正確的缺少權重,訓練得到弱學習器②。α1×弱學習器①+α2×弱學習器② = 強學習器②
….
1、第k輪的強學習器可以用k-1輪的學習器+第k輪的弱學習器×權值來代替:
2、將fk(x)代入損失函式:
3、得:由第m步生成的基模型和第m步基模型的權值兩個未知量,構成的損失函式
進一步思考:
我們構建損失函式的目的是讓損失函式值最小。即讓上面得到的公式:__由第m步生成的基模型和第m步基模型的權值兩個未知量,構成的損失函式__ 最小。
當我們建立第m個模型的時候,前面m-1個模型必然已經構建完成。所以__fm-1(x)__是已知量,我們認為這部分公式是一個常數,對於求損失函式的最小值沒有影響。
1、使下列公式達到最小值的αm和Gm就是AdaBoost演算法的最終求解值。
2、G這個分類器在訓練過程中,就是為了讓誤差率最小,所以可以認為G越小就是誤差率約小。
其中I(y≠G)代表預測錯誤的次數 : 想讓損失函式最小,自然意味著希望預測錯誤率越小越好。
ξm=P(G≠y) 是誤差率,即預測值不等於真實值的概率。預測錯誤的個數/整個樣本數量。
3、對於αm而言,通過求導然後令導數為0,可以得到公式(log物件可以以e為底也可以以2為底):
α*m是第m個基學習器的權值。權值和誤分率ξm有關。
(1-ξm) / ξm : 當誤分率越小的時候,這個公式值越大。ln後的值也越大。α*m權值也就越大。
這個思路也我們最初求權值的思想一致:__要為每個基模型附權,錯誤率越小權值越大。__
這個公式的推導過程比較複雜,暫時記住這個結論即可。
相關文章
- 整合學習之Adaboost演算法原理小結演算法
- 整合學習原理小結
- 強化學習的數學原理-03貝爾曼最優公式強化學習公式
- java學習03Java
- go學習03Go
- 整合學習演算法(Ensemble Method)淺析演算法
- Spring學習03Spring
- 整合學習(一):簡述整合學習
- 【Python機器學習實戰】決策樹與整合學習(六)——整合學習(4)XGBoost原理篇Python機器學習
- 深度學習-Tensorflow2.2-梯度下降演算法概述-03深度學習梯度演算法
- 整合學習
- ES6學習摘要(03)(新人學習)
- 前端知識學習03前端
- jQuery學習筆記03jQuery筆記
- JAVA學習day03Java
- 組合語言學習筆記03——暫存器(CPU工作原理)組合語言筆記
- Book of Shaders 03 - 學習隨機與噪聲生成演算法隨機演算法
- 【整合學習】:Stacking原理以及Python程式碼實現Python
- 機器學習-整合學習機器學習
- zookeeper學習03 使用場景
- SQL學習___03:DML語法SQL
- 學習日報 day03
- 【學習圖片】03:向量影像
- 【Task03】Pandas學習打卡
- 資料科學系統學習 機器學習演算法 # 西瓜書學習記錄 [12] 整合學習實踐資料科學機器學習演算法
- 強化學習-學習筆記7 | Sarsa演算法原理與推導強化學習筆記演算法
- 機器學習演算法原理與程式設計學習(2)機器學習演算法程式設計
- OpenGL 學習 03 移動的矩形
- Android開發學習之路03Android
- 深度學習03-sklearn.LinearRegression 原始碼學習深度學習原始碼
- 【無監督學習】2:DBSCAN聚類演算法原理聚類演算法
- OpenResty學習筆記03:再探WAFREST筆記
- 《L03 Laravel 教程》 學習筆記Laravel筆記
- FPGA學習筆記03——UART串列埠FPGA筆記串列埠
- MongoDB權威指南學習筆記03MongoDB筆記
- 整合學習-偏差與方差
- Nacos整合學習入門
- activiti-study 整合 學習