《AdaBoost:從弱分類器到強模型的進化之路》

目錄

1. AdaBoost 的核心思想

2. AdaBoost 的關鍵步驟

步驟 1:初始化樣本權重

步驟 2:迭代訓練弱分類器

步驟 3:組合弱分類器

3. 用例子詳解 AdaBoost

數據集:

迭代過程:

第1輪(t=1):

第2輪(t=2):

第3輪(t=3):

最終強分類器:

4. AdaBoost 的優缺點

優點:

缺點:

5. Python 實現(基于 Scikit-learn)

6. 總結


1. AdaBoost 的核心思想

一句話總結

“知錯能改,逐步提升”
AdaBoost 是一種串行集成學習算法,通過迭代訓練多個弱分類器(如決策樹樁),每次重點關注前一個分類器分錯的樣本,最終將所有弱分類器組合成一個強分類器。


2. AdaBoost 的關鍵步驟

步驟 1:初始化樣本權重
  • 初始權重:每個樣本的權重相同,總和為1。
    例如:如果有10個樣本,初始權重均為 0.1
步驟 2:迭代訓練弱分類器

在每次迭代中:

  1. 訓練弱分類器:基于當前權重分布,找到一個分類誤差最小的弱分類器(如決策樹樁)。
  2. 計算分類誤差率


    其中 (D_t(i)) 是第 (t) 輪樣本 (i) 的權重,II 是指示函數(分類錯誤時為1)。
  3. 計算弱分類器的權重


    誤差率越低的分類器,權重 αt 越大。
  4. 更新樣本權重

    • 分類錯誤的樣本權重會被放大,分類正確的權重會被縮小。
    • (Z_t) 是歸一化因子,確保權重總和為1。
步驟 3:組合弱分類器

最終強分類器為:
?


即所有弱分類器的加權投票結果。


3. 用例子詳解 AdaBoost

數據集

序號

1

2

3

4

5

6

7

8

9

10

x

0

1

2

3

4

5

6

7

8

9

y

+1

+1

+1

-1

-1

-1

+1

+1

+1

-1

目標:通過 AdaBoost 組合多個決策樹樁(僅分裂一次的決策樹)。


迭代過程
第1輪(t=1)
  1. 初始權重:所有樣本權重均為 0.1
  2. 訓練弱分類器:選擇分裂點 x ≤ 2.5,將數據分為兩類:
    • 左側(x ≤ 2.5)預測為 +1,右側預測為 -1
  1. 計算誤差率
    • 分錯的樣本是序號7、8、9(真實標簽為 +1,但被預測為 -1),誤差率:

  1. 計算分類器權重

  2. 更新權重

  • 分錯的樣本權重放大,分對的縮小。新權重分布 (D_2) 如下:

序號

1

2

3

4

5

6

7

8

9

10

D2

0.071

0.071

0.071

0.071

0.071

0.071

0.167

0.167

0.167

0.071


第2輪(t=2)
  1. 訓練弱分類器:選擇分裂點 x ≤ 8.5,將數據分為兩類:
    • 左側(x ≤ 8.5)預測為 +1,右側預測為 -1
  1. 計算誤差率
    • 分錯的樣本是序號4、5、6(真實標簽為 -1,但被預測為 +1),誤差率:

  1. 計算分類器權重

  2. 更新權重

序號

1

2

3

4

5

6

7

8

9

10

D3

0.045

0.045

0.045

0.167

0.167

0.167

0.106

0.106

0.106

0.045

    • 分錯的樣本權重放大,新權重分布 (D_3) 如下:

第3輪(t=3)
  1. 訓練弱分類器:選擇分裂點 x > 5.5,將數據分為兩類:
    • 右側(x > 5.5)預測為 +1,左側預測為 -1
  1. 計算誤差率
    • 分錯的樣本是序號10(真實標簽為 -1,但被預測為 +1),誤差率:

  1. 計算分類器權重

  2. 更新權重
    • 最終所有樣本被正確分類,訓練結束。

最終強分類器


通過加權投票,最終分類器可以正確分類所有樣本。


4. AdaBoost 的優缺點

優點
  • 高精度:通過逐步優化,最終模型的泛化能力很強。
  • 自動關注難樣本:分錯的樣本會被賦予更高權重,后續模型重點學習。
  • 簡單高效:基分類器通常為決策樹樁,計算速度快。
缺點
  • 對噪聲敏感:異常值可能被過度關注,導致過擬合。
  • 需調整參數:如迭代次數(n_estimators)和學習率(learning_rate)。

5. Python 實現(基于 Scikit-learn)

from sklearn.ensemble import AdaBoostClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split# 生成模擬數據
X, y = make_classification(n_samples=1000, n_features=20, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# AdaBoost 模型(使用決策樹樁作為基分類器)
model = AdaBoostClassifier(base_estimator=DecisionTreeClassifier(max_depth=1),  # 弱分類器n_estimators=50,      # 迭代次數learning_rate=1.0,    # 學習率(控制每個分類器的權重縮放)random_state=42
)# 訓練與預測
model.fit(X_train, y_train)
print("測試集準確率:", model.score(X_test, y_test))

6. 總結

  • 核心思想:通過迭代調整樣本權重,讓模型逐步關注難分類的樣本。
  • 關鍵公式:誤差率 (e_t)、分類器權重 (\alpha_t)、權重更新公式。
  • 應用場景:分類問題(如文本分類、圖像識別),尤其適合數據分布不均衡的情況。

7. 通俗比喻:班級考試

  • 第1次考試 :所有學生權重相同,老師根據錯誤重點講解。
  • 第2次考試 :之前錯題權重增加,學生更關注這些題。
  • 最終成績 :多次考試成績加權平均,最終得分更準確。

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

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

相關文章

Android Settings 有線網設置界面優化

Android Settings 有線網設置界面優化 文章目錄 Android Settings 有線網設置界面優化一、前言二、簡單修改1、修改的EthernetSettings代碼:2、有線網ip獲取代碼:3、AndroidManifest.xml定義有線網的Activity4、修改后界面: 三、其他1、有線網…

基于web的生產過程執行管理系統(源碼+lw+部署文檔+講解),源碼可白嫖!

摘要 隨著世界經濟信息化、全球化的到來和電子商務的飛速發展,推動了很多行業的改革。若想達到安全,快捷的目的,就需要擁有信息化的組織和管理模式,建立一套合理、暢通、高效的線上管理系統。當前的生產過程執行管理存在管理效率…

XSS 攻擊風險與防御實踐

? 框架與 XSS 防護概況 框架是否默認轉義高危場景建議防御措施React? 是使用 dangerouslySetInnerHTML避免使用,必要時做內容清洗Vue.js? 是使用 v-html避免使用,或使用 DOMPurify 清洗Angular? 是使用 innerHTML、bypassSecurityTrustHtml謹慎繞過…

Cesium 時間線 及 坐標轉換

文章目錄 Cesium 基礎理解(二)TimeLine & Clock 應用場景核心代碼實例及解釋代碼解釋 Cesium 之 實體動畫構建實體動畫的技巧1. 利用時間屬性2. 組合動畫效果3. 使用動畫曲線 優化點1. 減少屬性更新頻率2. 優化實體數量3. 合理使用材質和紋理 注意事…

ngx_regex_init

定義在 src\core\ngx_regex.c void ngx_regex_init(void) { #if !(NGX_PCRE2)pcre_malloc ngx_regex_malloc;pcre_free ngx_regex_free; #endif } NGX_PCRE21 #if !(NGX_PCRE2) 就為假 條件不成立 ngx_regex_init 函數就成了空實現 NGX_PCRE2 被定義,則表示 Ngin…

第二期:深入理解 Spring Web MVC [特殊字符](核心注解 + 進階開發)

前言: 歡迎來到 Spring Web MVC 深入學習 的第二期!在第一期中,我們介紹了 Spring Web MVC 的基礎知識,學習了如何 搭建開發環境、配置 Spring MVC、編寫第一個應用,并初步了解了 控制器、視圖解析、請求處理流程 等核…

一文讀懂數據倉庫:從概念到技術落地

數據倉庫是一個面向主題的、集成的、相對穩定的、反映歷史變化的數據集合,用于支持管理決策。以下是關于數據倉庫的詳細介紹: 一、特點 面向主題:數據倉庫圍繞特定主題組織數據,如客戶、產品、銷售等,而不是像傳統數…

JavaScript學習18-css操作和事件處理程序(html/DOM0/DOM2)

一、css操作 第一種:容易出錯 第二種:有效避免錯誤 第三種: 二、事件處理程序 1.HTML事件 2.DOM0級事件處理 3.DOM2級事件處理

npm設置代理和取消代理

設置代理 具體代理端口要根據自己的來 npm config set proxy http://127.0.0.1:7890 npm config set https-proxy http://127.0.0.1:7890取消代理 npm config delete proxy npm config delete https-proxy查看代理 npm config get proxy # 應返回 null npm config get…

從零開始訓練Codebook:基于ViT的圖像重建實踐

完整代碼在文末,可以一鍵運行。 1. 核心原理 Codebook是一種離散表征學習方法,其核心思想是將連續特征空間映射到離散的碼本空間。我們的實現方案包含三個關鍵組件: 1.1 ViT編碼器 class ViTEncoder(nn.Module):def __init__(self, codebo…

大數據筆試題_第一階段配套筆試題02

已知一個字符類型的日期:2022-01-20,請用SQL顯示出此日期對應的下個月的月份,結果要求為Number類型(202201)。 參考答案 sql SELECT to_date(2022-01-20, yyyy-mm-dd) a1,add_months(to_date(2022-01-20, yyyy-mm-d…

C++實現對象單例模式

在 C 中實現單例模式有多種方法,以下是線程安全的現代 C 實現方式(推薦 C11 及以上版本): 1. Meyers’ Singleton(推薦) class Singleton { public:// 刪除拷貝構造和賦值運算符Singleton(const Singleto…

企業常用Linux服務搭建

1.需要兩臺centos 7服務器,一臺部署DNS服務器,另一臺部署ftp和Samba服務器。 2. 部署DNS 服務器? #!/bin/bash# 更新系統 echo "更新系統..." sudo yum update -y# 安裝 BIND 和相關工具 echo "安裝 BIND 和相關工具..." sudo y…

UE5Actor模塊源碼深度剖析:從核心架構到實踐應用

UE5 Actor模塊源碼深度剖析:從核心架構到實踐應用 a. UE5 Actor模塊架構概述 在UE5引擎中,Actor扮演著至關重要的角色,它是整個游戲世界中各類可交互對象的基礎抽象。從本質上來說,所有能夠被放置到關卡中的對象都屬于Actor的范疇,像攝像機、靜態網格體以及玩家起始位置…

DreamDiffusion代碼學習及復現

論文解讀在這里 File path | Description /pretrains ┣ 📂 models ┃ ┗ 📜 config.yaml ┃ ┗ 📜 v1-5-pruned.ckpt┣ 📂 generation ┃ ┗ 📜 checkpoint_best.pth ┣ 📂 eeg_pretain ┃ ┗ …

用Python實現TCP代理

依舊是Python黑帽子這本書 先附上代碼,我在原書代碼上加了注釋,更好理解 import sys import socket import threading#生成可打印字符映射 HEX_FILTER.join([(len(repr(chr(i)))3) and chr(i) or . for i in range(256)])#接收bytes或string類型的輸入…

Pyinstaller 打包flask_socketio為exe程序后出現:ValueError: Invalid async_mode specified

Pyinstaller 打包flask_socketio為exe程序后出現&#xff1a;ValueError: Invalid async_mode specified 一、詳細描述問題描述 Traceback (most recent call last): File "app_3.py", line 22, in <module> File "flask_socketio\__init__.py"…

django REST framework(DRF)教程

Django DRF API Django 基本使用Django DRF序列化器Django DRF視圖Django DRF常用功能Django 基本使用 前后端分離開發模式認識RestFulAPI回顧Django開發模式Django REST Framework初探前后端分離開發模式 前后端分離前:前端頁面看到的效果都是由后端控制,即后端渲染HTML頁面…

【Linux】Orin NX + Ubuntu22.04配置國內源

1、獲取源 清華源 arm 系統的源,可以在如下地址獲取到 https://mirror.tuna.tsinghua.edu.cn/help/ubuntu-ports/ 選擇HTTPS,否則可能報錯: 明文簽署文件不可用,結果為‘NOSPLIT’(您的網絡需要認證嗎?)查看Orin NX系統版本 選擇jammy的源 2、更新源 1)備份原配…

【含文檔+PPT+源碼】基于微信小程序的社交攝影約拍平臺的設計與實現

項目介紹 本課程演示的是一款基于微信小程序的社交攝影約拍平臺的設計與實現&#xff0c;主要針對計算機相關專業的正在做畢設的學生與需要項目實戰練習的 Java 學習者。 1.包含&#xff1a;項目源碼、項目文檔、數據庫腳本、軟件工具等所有資料 2.帶你從零開始部署運行本套系…