AdaBoost集成學習算法理論解讀以及公式為什么這么設計?

本文致力于闡述AdaBoost基本步驟涉及的每一個公式和公式為什么這么設計。
AdaBoost集成學習算法基本上遵從Boosting集成學習思想,通過不斷迭代更新訓練樣本集的樣本權重分布獲得一組性能互補的弱學習器,然后通過加權投票等方式將這些弱學習器集成起來得到性能較優的集成模型。
image.png
圖1:Boosting集成算法思想。
下面以二分類任務(標簽不是為-1,就是為+1)為例介紹該算法的具體過程。值得注意的是,下面的公式推導是以二分類任務下得出來,所以公式(比如樣本權重更新公式)才會顯得比較整潔,但如果換成其他任務,如多分類,那么公式會復雜很多。
對于訓練樣本集 D = ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x n , y n ) D={\left(x_1,y_1\right),\left(x_2,y_2\right),\ldots,(x_n,y_n)} D=(x1?,y1?),(x2?,y2?),,(xn?,yn?),其中標簽 y i ∈ { ? 1 , + 1 } y_i\in\left\{-1,+1\right\} yi?{?1,+1},由AdaBoost集成學習算法構造集成模型的基本步驟如下:
(1)令 i = 1 i=1 i=1并設定弱學習器的數目m。對應第一次迭代,使用均勻分布初始化訓練樣本集的權重分布,令 n n n維向量 w i \mathbf{w}^i wi表示第 i i i次需更新的樣本權重,則有:
w 1 = ( w 11 , w 12 , … , w 1 n ) T = ( 1 n , 1 n , … , 1 n ) T \mathbf{w}^1=\left(w_{11},w_{12},\ldots,w_{1n}\right)^T=\left(\frac{1}{n},\frac{1}{n},\ldots,\frac{1}{n}\right)^T w1=(w11?,w12?,,w1n?)T=(n1?,n1?,,n1?)T
(2)使用權重分布為 w i \mathbf{w}^i wi,此時 i = 1 i=1 i=1的訓練樣本集 D i D_i Di?學習得到第 i i i個弱學習器 L i L_i Li?
(3)計算 L i L_i Li?在訓練樣本集 D i D_i Di?上的分類錯誤率 e i e_i ei?
e i = ∑ k = 1 n w i k I ( L i ( X k ) ≠ y k ) e_i=\sum_{k=1}^{n}{w_{ik}I \left(L_i\left(X_k\right)\neq y_k\right) } ei?=k=1n?wik?I(Li?(Xk?)=yk?)
(4)確定弱學習器 L i L_i Li?的組合權重 α i \alpha_i αi?( α i \alpha_i αi?在最后得到最終的集成模型上用到)。由于弱學習器 L i L_i Li?的權重取值應與其分類性能相關,對于分類錯誤率 e i e_i ei?越小的 L i L_i Li?,則其權重 α i \alpha_i αi?應該越大,故有:
α i = 1 2 ln 1 ? e i e i = 1 2 ln ( 1 e i ? 1 ) \alpha_i=\frac{1}{2}\text{ln}\frac{1-e_i}{e_i}=\frac{1}{2}\text{ln}(\frac{1}{e_i}-1) αi?=21?lnei?1?ei??=21?ln(ei?1??1)
可能會有人會為,為什么要這么設計 α i \alpha_i αi??我在下面給出了解釋。
(5)(重點)依據弱學習器 L i L_i Li?對訓練樣本集 D i D_i Di?的分類錯誤率 e i e_i ei?更新樣本權重,樣本權重更新公式為:
w i + 1 , j = w i j exp ? ( ? α i y k L i ( x k ) ) Z i w_{i+1,j}=\frac{w_{ij}\exp(-\alpha_iy_kL_i(x_k))}{Z_i} wi+1,j?=Zi?wij?exp(?αi?yk?Li?(xk?))?
其中:
Z i = ∑ k = 1 n w i j exp ? ( ? α i y k L i ( X k ) ) Z_i=\sum_{k=1}^{n}{w_{ij}\exp(-\alpha_iy_kL_i(X_k))} Zi?=k=1n?wij?exp(?αi?yk?Li?(Xk?))
為歸一化因子,保證更新后權重向量為概率分布;
對權重更新公式的解釋
回顧開頭,這是一個二分類任務,所以若樣本 ( x k , y k ) (x_k,y_k) (xk?,yk?)分類正確,則要不 y k = L i ( x k ) = 1 y_k=L_i(x_k)=1 yk?=Li?(xk?)=1,要不 y k = L i ( x k ) = ? 1 y_k=L_i(x_k)=-1 yk?=Li?(xk?)=?1,因此有 y k ? L i ( x k ) = 1 y_k*L_i(x_k)=1 yk??Li?(xk?)=1**。**若樣本 ( x k , y k ) (x_k,y_k) (xk?,yk?)分類錯誤,則要不 y k = ? 1 , L i ( x k ) = 1 y_k=-1,L_i(x_k)=1 yk?=?1,Li?(xk?)=1,要不 y k = 1 , L i ( x k ) = ? 1 y_k=1,L_i(x_k)=-1 yk?=1,Li?(xk?)=?1,因此有 y k ? L i ( x k ) = ? 1 y_k*L_i(x_k)=-1 yk??Li?(xk?)=?1
因此公式
w i + 1 , j = w i j exp ? ( ? α i y k L i ( x k ) ) Z i w_{i+1,j}=\frac{w_{ij}\exp(-\alpha_iy_kL_i(x_k))}{Z_i} wi+1,j?=Zi?wij?exp(?αi?yk?Li?(xk?))?
可以改寫
w i + 1 , j = { w i j Z i exp ? ( ? α i ) , y k = L i ( x k ) w i j Z i exp ? ( α i ) , y k ≠ L i ( x k ) w_{i+1,j}=\begin{cases} \frac{w_{ij}}{Z_i}\exp(-\alpha_i),y_k=L_i(x_k) \\\frac{w_{ij}}{Z_i}\exp(\alpha_i),y_k\ne L_i(x_k) \end{cases} wi+1,j?={Zi?wij??exp(?αi?),yk?=Li?(xk?)Zi?wij??exp(αi?),yk?=Li?(xk?)?
這樣,對于錯誤的樣本會被放大 1 ? e i e i \frac{1-e_i}{e_i} ei?1?ei??倍,以便在后續弱學習器構造過程得到應有的重視。
為什么是 1 ? e i e i \frac{1-e_i}{e_i} ei?1?ei??倍?
w i + 1 , j , y k ≠ L i ( x k ) w i + 1 , j , y k = L i ( x k ) = w i j Z i exp ? ( α i ) w i j Z i exp ? ( ? α i ) = exp ? ( α i ) exp ? ( ? α i ) = e 2 ? α i = e 2 ? 1 2 ln 1 ? e i e i = e ln 1 ? e i e i = 1 ? e i e i \frac{w_{i+1,j},y_k\ne L_i(x_k)}{w_{i+1,j},y_k=L_i(x_k)}=\frac{\frac{w_{ij}}{Z_i}\exp(\alpha_i)}{\frac{w_{ij}}{Z_i}\exp(-\alpha_i)} =\frac{\exp(\alpha_i)}{\exp(-\alpha_i)}=e^{2*\alpha_i}=e^{2*\frac{1}{2}\text{ln}\frac{1-e_i}{e_i}}=e^{\text{ln}\frac{1-e_i}{e_i}}=\frac{1-e_i}{e_i} wi+1,j?,yk?=Li?(xk?)wi+1,j?,yk?=Li?(xk?)?=Zi?wij??exp(?αi?)Zi?wij??exp(αi?)?=exp(?αi?)exp(αi?)?=e2?αi?=e2?21?lnei?1?ei??=elnei?1?ei??=ei?1?ei??
另外 Z i Z_i Zi?的作用是歸一化,使得 ∑ j = 1 n w i + 1 , j = 1 \sum_{j=1}^{n}{w_{i+1,j}}=1 j=1n?wi+1,j?=1
(6)若 i < m i<m i<m,則令 i = i + 1 i=i+1 i=i+1并返回步驟(2),否則執行步驟(7);
(7)對于 m m m個弱分類器 L 1 , L 2 , … , L m L_1{,L}_2,\ldots,L_m L1?,L2?,,Lm?,分別將每個 L i L_i Li?按權重 α i \alpha_i αi?進行組合:
L = sign ( ∑ i = 1 m α i L i ( X ) ) L=\text{sign}(\sum_{i=1}^{m}{\alpha_iL_i(X)}) L=sign(i=1m?αi?Li?(X))
得到并輸出所求集成模型 L L L,算法結束。

參考資料:《機器學習及其應用》汪榮貴等編著

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/42667.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/42667.shtml
英文地址,請注明出處:http://en.pswp.cn/web/42667.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

RightFont 8.7.0 Mac專業字體管理工具

RightFont 適用于 macOS 的終極字體管理器應用程序&#xff0c;提供無縫的字體管理體驗。它結合了速度、直觀的功能和專業的功能&#xff0c;使用戶能夠輕松預覽、安裝、組織和共享字體。 RightFont 8.7.0 Mac下載 RightFont 8.0的新增功能 RightFont 8.0 帶來了全新的智能選…

【電腦應用技巧】如何尋找電腦應用的安裝包華為電腦、平板和手機資源交換

電腦的初學者可能會直接用【百度】搜索電腦應用程序的安裝包&#xff0c;但是這樣找到的電腦應用程序安裝包經常會被加入木馬或者強制捆綁一些不需要的應用裝入電腦。 今天告訴大家一個得到干凈電腦應用程序安裝包的方法&#xff0c;就是用【聯想的應用商店】。聯想電腦我是一點…

比賽獲獎的武林秘籍:05 電子計算機類比賽國獎隊伍技術如何分工和學習內容

比賽獲獎的武林秘籍&#xff1a;05 電子計算機類比賽國獎隊伍技術如何分工和學習內容 摘要 本文主要介紹了在電子計算機類比賽中技術層面上的團隊分工和需要學習的內容&#xff0c;分為了嵌入式硬件、嵌入式軟件、視覺圖像處理、機械、上位機軟件開發和數據分析等六個方向&am…

文心一言 VS 訊飛星火 VS chatgpt (299)-- 算法導論22.1 3題

三、有向圖 G ( V , E ) G(V,E) G(V,E) 的轉置是圖 G T ( V , E T ) G^{T} (V,E^{T}) GT(V,ET)&#xff0c;這里 E T { ( v , u ) ∈ V V E^{T} \{(v,u)∈ V \times V ET{(v,u)∈VV:(u,v)∈ E}$因此&#xff0c;圖 G T G^{T} GT 就是將有向圖 G G G中所有邊的方向反過來…

java LogUtil輸出日志打日志的class文件內具體方法和行號

最近琢磨怎么把日志打的更清晰&#xff0c;方便查找問題&#xff0c;又不需要在每個class內都創建Logger對象&#xff0c;還帶上不同的顏色做區分&#xff0c;簡直不要太爽。利用堆棧的方向順序拿到日志的class問題。看效果&#xff0c;直接上代碼。 1、demo test 2、輸出效果…

【WebGIS平臺】傳統聚落建筑科普數字化建模平臺

基于上述概括出建筑單體的特征部件&#xff0c;本文利用互聯網、三維建模和地理信息等技術設計了基于瀏覽器/服務器&#xff08;B/S&#xff09;的傳統聚落建筑科普數字化平臺。該平臺不僅實現了對傳統聚落建筑風貌從基礎到復雜的數字化再現&#xff0c;允許用戶輕松在線構建從…

Linux 利用命名空間創建一個自己的“容器“

Linux 利用命名空間創建一個自己的"容器" 前置條件 創建一個目錄存放容器mkdir /myapp準備靜態編譯busybox&#xff0c;操作系統自帶的往往是依賴動態庫的(本文使用的debian apt install busybox-static) 開始 使用unshare起一個獨立命名空間.# 進入后/myapp目錄…

Python中生成隨機數:一種簡單而強大的方法

簡介&#xff1a; 在編程中&#xff0c;我們經常需要生成隨機數來模擬各種情況&#xff0c;比如游戲、統計模擬、機器學習數據集的劃分等。Python通過其內置的random模塊提供了一個簡單而強大的方式來生成隨機數。本文將介紹如何使用random模塊來生成各種類型的隨機數&#xff…

【RESTful】前后端的通信方式 REST

前后端的通信方式 REST 1.初識 REST1.1 什么是 REST1.2 REST 的特征 2.HTTP 方法與 CRUD 動作映射3.實現 REST 風格的 CRUD 1.初識 REST 1.1 什么是 REST REST 是軟件架構的規范體系結構&#xff0c;它將 資源的狀態 以適合客戶端的形式從服務器端發送到客戶端&#xff08;或…

小型簡易GIT服務器搭建和使用

搭建GIT服務器的文章有很多&#xff0c;多數在管理的時候都使用了gitosis作為管理工具&#xff0c;但是作為一個小團隊(人數少于50人)&#xff0c;我覺得完全可以使用公鑰驗證的方式&#xff0c;這樣會簡單不少&#xff0c;下面來看看簡易的搭建方法吧。 服務器版本:ubuntu 16…

Unix\Linux 執行shell報錯:“$‘\r‘: 未找到命令” 解決

linux執行腳本sh xxx.sh報錯&#xff1a;$xxx\r: 未找到命令 原因&#xff1a;shell腳本在Windows編寫導致的換行問題&#xff1a; Windows 的換行符號為 CRLF&#xff08;\r\n&#xff09;&#xff0c;而 Unix\Linux 為 LF&#xff08;\n&#xff09;。 縮寫全稱ASCII轉義說…

第二證券:ppi指數是什么,ppi指數下降對股市有什么影響?

PPI全稱Producer Price Index&#xff0c;PPI指數即“出產者價格指數”&#xff0c;反映的是一守時期內出產者購買中心產品和原材料價格的改動趨勢和改動程度。 了解ppi指數&#xff1a; 簡單了解便是&#xff0c;計算出出產者的本錢改動狀況&#xff0c;然后反映到價格上。 …

windows@windows設備之間遠程命令行控制方案@windows設備間使用OpenSSH

文章目錄 abstract為什么考慮命令行連接討論主題 powershell遠程控制使用PowerShell遠程管理前提條件&#xff1a;步驟&#xff1a;1. 啟用WinRM服務2. 配置信任主機3. 測試連接4. 創建遠程會話5. 運行遠程命令6. 關閉會話 例子小結 SSH方案基礎連接免密自動登錄修改配置文件在…

【自學網絡安全】:安全策略與用戶認證綜合實驗

實驗拓撲圖&#xff1a; 實驗任務&#xff1a; 1、DMZ區內的服務器&#xff0c;辦公區僅能在辦公時間內(9:00-18:00)可以訪問&#xff0c;生產區的設備全天可以訪問 2、生產區不允許訪問互聯網&#xff0c;辦公區和游客區允許訪問互聯網 3、辦公區設備10.0.2.10不允許訪問Dmz區…

新聞資訊整合平臺:一站式滿足企業信息需求

摘要&#xff1a; 面對信息爆炸的時代&#xff0c;企業如何在海量數據中快速獲取有價值資訊&#xff0c;成為提升競爭力的關鍵。本文將探討如何通過一站式新聞資訊整合平臺&#xff0c;實現企業信息需求的全面滿足&#xff0c;提升決策效率&#xff0c;同時介紹實用工具推薦&a…

Redis數據類型和數據隊列

一.Redis數據類型 參考資料&#xff1a;http://www.redis.cn/topics/data-types.html 相關命令參考: http://redisdoc.com/ Redis 是一種基于內存的開源數據結構存儲系統&#xff0c;支持多種數據類型&#xff0c;每種數據類型都有自己特定的操作命令。 String&#xff08;字…

Games101學習筆記 Lecture17 Materials and Appearances

Lecture17 Materials and Appearances 材質 BRDF一、Diffuse/Lambertian Material二、Glossy Material三、Ideal reflective/ refractive Material (BSDF)1.鏡面反射2.鏡面折射3.菲涅爾項 Fresnel 四、Microfacet BRDF 微表面五、Isotropic / Anisotropic Materials (BRDFs)An…

博客標題:C++中的繼承:構建面向對象的基石

目錄 ?編輯 引言 繼承的基本形式 示例1&#xff1a;基本繼承 繼承的類型 示例2&#xff1a;不同類型的繼承 多重繼承 示例3&#xff1a;多重繼承 繼承與多態性 示例4&#xff1a;繼承與多態 結論 結尾 引言 在面向對象編程&#xff08;OOP&#xff09;中&#xff…

【持續集成_03課_Linux部署Sonar+Gogs+Jenkins】

一、通過虛擬機搭建Linux環境-CnetOS 1、安裝virtualbox&#xff0c;和Vmware是一樣的&#xff0c;只是box更輕量級 1&#xff09;需要注意內存選擇&#xff0c;4G 2、啟動完成后&#xff0c;需要獲取服務器IP地址 命令 ip add 服務器IP地址 通過本地的工具&#xff0c;進…

新手教學系列——crontab 使用不當引發的服務器性能問題

起因及癥狀 最近,我們的一臺服務器隨著運行時間的增加,逐漸出現了壓力過大的問題。具體表現為數據庫連接數飆升至 4000+,Redis 頻繁超時,系統報錯文件打開數過多等。針對這些問題,我們逐一檢查了數據庫連接池、Redis 連接池以及系統的 ulimit 配置,但都未能找到問題的根…