【機器學習】Adaboost: 強化弱學習器的自適應提升方法


鑫寶Code

🌈個人主頁: 鑫寶Code
🔥熱門專欄: 閑話雜談| 炫酷HTML | JavaScript基礎
?💫個人格言: "如無必要,勿增實體"


文章目錄

  • Adaboost: 強化弱學習器的自適應提升方法
    • 引言
    • Adaboost基礎概念
      • 弱學習器與強學習器
      • Adaboost核心思想
    • Adaboost算法流程
      • 1. 初始化樣本權重
      • 2. 迭代訓練弱學習器
      • 3. 組合弱學習器
      • 4. 停止準則
    • Adaboost的關鍵特性
    • 應用場景
    • 實現步驟簡述
    • 結語

Adaboost: 強化弱學習器的自適應提升方法

在這里插入圖片描述

引言

在機器學習領域,集成學習是一種通過結合多個弱模型以構建更強大預測模型的技術。Adaptive Boosting,簡稱Adaboost,是集成學習中的一種經典算法,由Yoav Freund和Robert Schapire于1996年提出。Adaboost通過迭代方式,自適應地調整數據樣本的權重,使得每個后續的弱學習器更加關注前序學習器表現不佳的樣本,以此逐步提高整體預測性能。本文將深入探討Adaboost的工作原理、算法流程、關鍵特性、優勢及應用場景,并簡要介紹其實現步驟。
在這里插入圖片描述

Adaboost基礎概念

弱學習器與強學習器

  • 弱學習器:指那些僅比隨機猜測略好一點的學習算法,如決策樹的淺層版本。
  • 強學習器:通過組合多個弱學習器,達到超越任何單個弱學習器性能的算法。

Adaboost核心思想

Adaboost的核心思想是通過改變訓練數據的權重分布來不斷聚焦于那些難以被正確分類的樣本。每一輪迭代中,算法會根據上一輪的錯誤率調整樣本的權重,使得錯誤分類的樣本在下一輪中獲得更高的權重,從而引導新生成的弱學習器重點關注這些“困難”樣本。

Adaboost算法流程

在這里插入圖片描述

Adaboost算法可以分為以下幾個步驟:

1. 初始化樣本權重

  • 所有訓練樣本初始權重相等,通常設為 w i ( 1 ) = 1 N w_i^{(1)} = \frac{1}{N} wi(1)?=N1?,其中 N N N 是樣本總數。

2. 迭代訓練弱學習器

對于每一輪 t = 1 , 2 , . . . , T t=1,2,...,T t=1,2,...,T

  • 使用當前樣本權重分布訓練弱學習器 h t h_t ht?。弱學習器的目標是最小化加權錯誤率 ? t = ∑ i = 1 N w i ( t ) I ( y i ≠ h t ( x i ) ) \epsilon_t = \sum_{i=1}^{N} w_i^{(t)} I(y_i \neq h_t(x_i)) ?t?=i=1N?wi(t)?I(yi?=ht?(xi?)),其中 I I I是指示函數,當條件滿足時返回1,否則返回0。
  • 計算弱學習器的權重 α t = 1 2 ln ? ( 1 ? ? t ? t ) \alpha_t = \frac{1}{2} \ln\left(\frac{1-\epsilon_t}{\epsilon_t}\right) αt?=21?ln(?t?1??t??),反映了該學習器的重要性。
  • 更新樣本權重:對分類正確的樣本減小其權重,錯誤分類的樣本增加其權重。具體為 w i ( t + 1 ) = w i ( t ) exp ? ( ? α t y i h t ( x i ) ) w_i^{(t+1)} = w_i^{(t)} \exp(-\alpha_t y_i h_t(x_i)) wi(t+1)?=wi(t)?exp(?αt?yi?ht?(xi?)),然后重新歸一化以確保所有權重之和為1。

3. 組合弱學習器

經過T輪迭代后,最終的強學習器為所有弱學習器的加權投票結果: H ( x ) = sign ( ∑ t = 1 T α t h t ( x ) ) H(x) = \text{sign}\left(\sum_{t=1}^{T} \alpha_t h_t(x)\right) H(x)=sign(t=1T?αt?ht?(x))

4. 停止準則

設定最大迭代次數 T T T作為停止條件,或直到達到預定的性能閾值。

Adaboost的關鍵特性

  • 自適應性:自動調整數據權重,使算法能夠專注于較難分類的樣本。
  • 弱學習器的多樣性:由于每一輪學習器都針對不同的樣本分布進行訓練,這促進了弱學習器之間的多樣性,有助于提升整體模型的泛化能力。
  • 異常值魯棒性:通過調整權重,Adaboost能夠減少異常值對模型的影響。
  • 過擬合控制:隨著迭代增加,若學習器對新數據不再提供顯著增益,則權重更新趨于平緩,自然停止學習過程,有助于防止過擬合。

應用場景

Adaboost因其高效和靈活,在多種機器學習任務中展現出廣泛的應用潛力,包括但不限于:

  • 分類問題:如手寫數字識別、醫學圖像診斷。
  • 異常檢測:通過構建正常行為的強分類器,識別偏離此模型的行為。
  • 特征選擇:在預處理階段,Adaboost可用于評估特征重要性,輔助篩選最有效的特征集。

實現步驟簡述

實現Adaboost算法主要包括以下Python偽代碼:

# 初始化
weights = np.ones(N) / N
alphas = []
models = []# 迭代T輪
for t in range(T):# 使用當前權重訓練弱學習器model = train_weak_learner(X, y, weights)models.append(model)# 計算加權錯誤率errors = compute_errors(model.predict(X), y)weighted_error = np.sum(weights[errors != 0])# 計算弱學習器權重alpha = 0.5 * np.log((1 - weighted_error) / weighted_error)alphas.append(alpha)# 更新樣本權重Z = np.sum(weights * np.exp(-alpha * y * errors))weights *= np.exp(-alpha * y * errors) / Z# 構建最終強學習器
def predict(X):scores = np.sum([alpha * model.predict(X) for alpha, model in zip(alphas, models)], axis=0)return np.sign(scores)

結語

Adaboost算法以其獨特的方式展示了如何通過集成弱學習器來構建出強大且魯棒的預測模型。它不僅在理論上優雅,在實踐中也極其有效,成為機器學習領域的一個基石。隨著技術的發展,Adaboost及其變體在復雜數據集上的應用持續擴展,持續推動著人工智能的進步。理解并掌握Adaboost的工作機制,對于每一位致力于機器學習研究和應用的開發者來說,都是不可或缺的。

End

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

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

相關文章

存儲器容量小才使用SRAM芯片,容量較大時使用DRAM芯片。為什么?

在計算機系統中,存儲器容量的選擇涉及到多種因素,包括成本、速度和復雜性。SRAM(靜態隨機存取存儲器)和DRAM(動態隨機存取存儲器)是兩種常見的內存類型,它們在設計和應用上有顯著的不同。以下是…

【藍橋杯嵌入式】 第六屆國賽

目錄 題目 配置 注意事項 代碼 - 默寫大師 EEPROM讀寫函數 LED驅動函數 ADC采集 上電初始化 LCD 按鍵 PWM互補輸出 全部代碼 hardware.c hardware.h control.c control.h main.c 題目 配置 注意事項 復制LCD的工程,先配置資源 --- 勾選完選項一…

CCIG 2024:合合信息文檔解析技術突破與應用前景

目錄 背景當前大模型訓練和應用面臨的問題訓練Token耗盡訓練語料質量要求高LLM文檔問答應用中文檔解析不精準 合合信息的文檔解析技術1. 具備多文檔元素識別能力2. 具備版面分析能力3. 高性能的文檔解析4. 高精準、高效率的文檔解析文檔多板式部分示例 文檔解析典型技術難點元素…

【代碼隨想錄Day23】|669.修建二叉搜索樹、108.將有序數組轉換為二叉搜索樹、538.把二叉搜索樹轉換為累加樹

669. 修剪二叉搜索樹 這題最開始的想法是復用刪除節點的那題的思路做,需要修改的部分就是要讓程序刪除完一個點后繼續遍歷,因為后續可能還有不符合條件的節點。但這樣想也做復雜了。 這類題其實不用想用什么序遍歷,用哪種方式只是為了更好的…

案例|開發一個美業小程序,都有什么功能

隨著移動互聯網的迅猛發展,美業連鎖機構紛紛尋求數字化轉型,以小程序為載體,提升服務效率,增強客戶體驗。 線下店現在面臨的困境: 客戶到店排隊時間過長,體驗感受差 新客引流難,老用戶回頭客…

基于EV54Y39A PIC-IOT WA的手指數量檢測功能開發(MPLAB+ADC)

目錄 項目介紹硬件介紹項目設計開發環境及工程參考總體流程圖硬件基本配置光照傳感器讀取定時器檢測邏輯 功能展示項目總結 👉 【Funpack3-2】基于EV54Y39A PIC-IOT WA的手指數量檢測功能開發 👉 Github: EmbeddedCamerata/PIC-IOT_finger_recognition 項…

Flutter基礎 -- Dart 語言 -- 注釋函數表達式

目錄 1. 注釋 1.1 單行注釋 1.2 多行注釋 1.3 文檔注釋 2. 函數 2.1 定義 2.2 可選參數 2.3 可選參數 默認值 2.4 命名參數 默認值 2.5 函數內定義 2.6 Funcation 返回函數對象 2.7 匿名函數 2.8 作用域 3. 操作符 3.1 操作符表 3.2 算術操作符 3.3 相等相關的…

上海亞商投顧:滬指沖高回落 兩市成交金額僅剩7000億

上海亞商投顧前言:無懼大盤漲跌,解密龍虎榜資金,跟蹤一線游資和機構資金動向,識別短期熱點和強勢個股。 一.市場情緒 三大指數昨日沖高回落,午后一度集體翻綠,臨近尾盤小幅回升。光伏產業鏈再度走強&#…

aws 在ecs外部實例上運行gpu負載

參考資料 https://docs.amazonaws.cn/zh_cn/AmazonECS/latest/developerguide/ecs-gpu.htmlhttps://docs.amazonaws.cn/AWSEC2/latest/UserGuide/accelerated-computing-instances.html#gpu-instanceshttps://docs.amazonaws.cn/AWSEC2/latest/UserGuide/install-nvidia-drive…

LeetCode 63.不同路徑Ⅱ

思路&#xff1a; 在有障礙物的地方增加一個判斷即可 class Solution { public:int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {int dp[105][105];int mobstacleGrid.size();int nobstacleGrid[0].size();for(int i0;i<m;i){for(int j0…

K8s集群之 存儲卷 PV PVC

目錄 默寫 1 如何將pod創建在指定的Node節點上 2 污點的種類(在node上設置) 一 掛載存儲??????? 1 emptyDir存儲卷 2 hostPath存儲卷 ①在 node01 節點上創建掛載目錄 ② 在 node02 節點上創建掛載目錄 ③ 創建 Pod 資源 ④ 在master上檢測一下&#xff1a;…

C++ vector 模擬實現

vector的底層也是一個動態數組&#xff0c;他與 string 的區別就是&#xff0c;string 是專門用來存儲字符類數據的&#xff0c;為了兼容C語言&#xff0c;使用C語言的接口&#xff0c;在string的動態數組內都會都開一塊空間用來存 \0 &#xff0c;而vector則不會。 首先我們要…

【Linux多線程】認識多線程創建線程

文章目錄 什么是多線程為什么稱linux下的線程是輕量級進程呢&#xff1f; 線程的優點線程的缺點線程異常線程和進程創建線程1.pthread_create2.pthread_self 什么是多線程 進程是正在運行的程序的實例&#xff0c;而線程&#xff08;thread&#xff09;是進程中的一個執行路線…

python 刪除pdf 空白頁

環境 python 3.10 PyPDF2 3.0.1 安裝 pip install PyPDF2流程 將空白頁和內容頁讀取出來&#xff0c;看看內部結構有什么不同以此為依據&#xff0c;遍歷整個PDF 文件&#xff0c;標記處有內容的頁面&#xff0c;寫入到另外一個PDF文件。 python 代碼 # 每一個頁都是一個…

Springboot郵件發送配置

Springboot郵件發送配置 pom.xml依賴&#xff1a; <dependency><groupId>org.eclipse.angus</groupId><artifactId>jakarta.mail</artifactId><version>2.0.3</version> </dependency> <dependency><groupId>or…

跨域的解決方案

1. 計算機更改跨域 1.C盤->Windows->System32->drivers->etc 2.修改hosts 文件2. Chrome瀏覽器的跨域設置 操作步驟&#xff1a;1.打開我的電腦——C盤 新建一個文件夾&#xff0c;命名為MyChromeDevUserData2.右鍵——Chrome——快捷方式——目標&#xff0c;在…

ChatGPT成知名度最高生成式AI產品,使用頻率卻不高

5月29日&#xff0c;牛津大學、路透社新聞研究所聯合發布了一份生成式AI&#xff08;AIGC&#xff09;調查報告。 在今年3月28日—4月30日對美國、英國、法國、日本、丹麥和阿根廷的大約12,217人進行了調查&#xff0c;深度調研他們對生成式AI產品的應用情況。 結果顯示&…

ElementUI之el-table標題列中顯示el-tooltip

ElementUI之el-table標題列中顯示el-tooltip 文章目錄 ElementUI之el-table標題列中顯示el-tooltip1. el-table標題列中顯示el-tooltip2. 實現代碼3. 展示效果 1. el-table標題列中顯示el-tooltip 在el-table-column標簽內添加具名插槽v-slot:header 在el-tooltip標簽中使用具…

【幾何】輸入0-360度任意的角度,求上面直線與橢圓相切點的坐標計算公式

?輸入0-360度任意的角度,求上面直線與橢圓相切點的坐標計算公式 使用積分計算 使用到的公式有橢圓公式: x 2 a 2 + y 2 b 2 = 1 \frac{x^2}{a^2}+\frac{y^2}{b^2} = 1 a2x2?+b2y2?=1 平面旋轉公式 X r = cos ? θ ? ( X s ? X O ) ? sin ? θ ? ( Y s ? Y O ) + X …

端午節粽子龍舟主題互動趣味小游戲效果是什么

端午三天樂&#xff0c;無論節日當天還是之前&#xff0c;行業商家都可以自己的品牌為主借勢營銷&#xff0c;趣味活動形式玩法和內容呈現達成多種效果&#xff0c;品牌傳播、公眾號漲粉、線下互動、商品促銷、用戶促活等。 在【雨科】平臺擁有多款端午節互動小游戲類型&#…