提升(Boosting)及 Python 示例

咱們結合這張圖,把 “提升” 想象成 做錯題本 + 請老師補課” 的過程:

  1. 第一波數據(最上面的圓圈):“第一次作業”

假設你第一次做 100 道數學題(圖中圓圈里的綠點白點代表不同的題),做完后老師批改:

  1. 綠點:你做對的題;
  2. 白點:你做錯的題(比如 10 道)。
  3. 第一個模型(最上面的方框):“第一次總結規律”

你根據這 100 道題,總結出一套 “解題模板”(比如 “看到‘雞兔同籠’就用方程”),但這套模板只能做對 90 道題,10 道白點題還是錯。

  1. 第二波數據(中間的圓圈):“錯題本重點練”

老師把你做錯的 10 道題(白點)標紅,讓你重點練習。同時,把原來的 100 道題重新混在一起,但這次錯題的 “權重” 更高(比如每道錯題算 2 道題,普通題算 1 道)。

這樣,新的練習冊里,錯題出現的概率更大,你被迫更關注它們。

  1. 第二個模型(中間的方框):“針對錯題補課”

你根據新的練習冊(重點是錯題),再總結一套新的解題模板(比如 “雞兔同籠用假設法更快”)。這次,你可能把之前的 5 道錯題改對了,但還有 5 道錯題。

  1. 第三波數據(最下面的圓圈):“繼續補漏”

老師再次把你還沒改對的 5 道題標紅,繼續增加它們的權重,讓你重點練習…… 直到你把大部分錯題改對。

  1. 最終模型:“綜合所有模板”

經過幾輪 “做題→總結→補漏”,你有了好幾套解題模板。考試時,遇到一道題,你會同時用這幾套模板分析,誰在這類題上更準,就聽誰的(比如第一套模板在幾何題上準,第二套在應用題上準)。

提升(Boosting)的核心邏輯(對應圖中箭頭)

  1. 從第一波到第二波的箭頭:把錯誤樣本(白點)的權重提高,讓模型更關注它們;
  2. 每個方框(模型)的箭頭:每個模型都在前一個模型的錯誤上改進
  3. 最終所有模型的輸出:能力” 加權投票(比如在某類題上表現好的模型,權重更高)。

總結

先做一套題,找出錯題重點練;再做一套題,再找錯題重點練…… 最后綜合所有經驗,誰強聽誰的。”

它和裝袋(Bagging)的區別是:裝袋是 “平行做題,投票決定”,提升是 “串行補漏,強者主導”~

提升算法的使用示例

為了讓你更直觀地理解提升算法的使用,我們以一個簡單的分類任務為例,使用 Python 的scikit-learn庫中的AdaBoostClassifier來實現。

假設我們有一個數據集,包含一些樣本的特征和對應的類別標簽,我們的目標是根據這些特征來預測樣本的類別。

# 導入必要的庫

from sklearn.ensemble import AdaBoostClassifier

from sklearn.datasets import make_classification

from sklearn.model_selection import train_test_split

from sklearn.metrics import accuracy_score

# 生成一個示例數據集

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.3, random_state=42)

# 創建一個AdaBoost分類器對象

# n_estimators表示使用的弱學習器(這里是決策樹)的數量

# random_state用于保證結果的可重復性

clf = AdaBoostClassifier(n_estimators=50, random_state=42)

# 訓練模型

clf.fit(X_train, y_train)

# 在測試集上進行預測

y_pred = clf.predict(X_test)

# 計算模型的準確率

accuracy = accuracy_score(y_test, y_pred)

print(f"模型的準確率為: {accuracy}")

在這個示例中:

  1. 首先,我們生成了一個用于分類的示例數據集,其中包含 1000 個樣本和 20 個特征。
  2. 然后,我們將數據集劃分為訓練集和測試集,訓練集用于訓練模型,測試集用于評估模型的性能。
  3. 接著,我們創建了一個AdaBoostClassifier對象,設置了使用 50 個弱學習器(這里默認是決策樹)。
  4. 然后,我們使用訓練集對模型進行訓練,模型會按照提升算法的原理,逐步構建一系列的弱學習器,并不斷調整樣本的權重,使得后續的弱學習器更關注那些被之前的弱學習器錯誤分類的樣本。
  5. 訓練完成后,我們使用測試集對模型進行預測,并計算模型的準確率來評估其性能。

通過這個示例,你可以看到提升算法是如何通過逐步改進模型來提高分類準確率的。在實際應用中,你可以根據具體的問題和數據特點,選擇合適的提升算法和參數,以獲得更好的性能。

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

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

相關文章

【生產實踐】Linux中NAS掛載丟失后提示“過舊的文件句柄”錯誤解決

太長不看版: 問題:nas掛載在系統里掉了,使用df或ls訪問目錄提示過舊的文件句柄解決過程: 和機房聯系,發現NAS服務器重啟了重新執行mount發現掛不上先umount掉當前掛載,再重新執行mount命令問題解決 umount …

JUnit4

JUnit4 介紹JUnit 是 Java 編程語言的單元測試框架,用于編寫和運行可重復的自動化測試。JUnit 特點:JUnit 是一個開放的資源框架,用于編寫和運行測試。提供注解來識別測試方法。提供斷言來測試預期結果。JUnit 測試允許你編寫代碼更快&#x…

Python-TCP編程-UDP編程-SocketServer-IO各種概念及多路復用-asyncio-學習筆記

序 欠4前年的一份筆記 ,獻給今后的自己。 網絡編程 Socket介紹 Socket套接字 Python中提供socket.py標準庫,非常底層的接口庫。 Socket是一種通用的網絡編程接口,和網絡層次沒有一一對應的關系。 協議族 AF表示Address Family,用于…

Mybatis-開發一個類似mybatisplus的mybatis擴展,該怎么入手?

開發一個類似mybatisplus的mybatis擴展,該怎么入手? 要開發一個類似于 MyBatis-Plus 的 MyBatis 擴展框架,你需要從以下幾個核心方面入手,逐步構建出一個功能完整、易用性強、兼容性好的增強型 MyBatis 框架。🧱 一、整…

深入了解linux系統—— 信號的捕捉

前言 信號從產生到處理,可以分為信號產生、信號保存、信號捕捉三個階段;了解了信號產生和保存,現在來深入了解信號捕捉。 信號捕捉 對于1-31號普通信號,進程可以立即處理,也可以不立即處理而是在合適的時候處理&#x…

twikitFKS: 基于 twikit 2.3.1 的改進版本

twikitFKS: 基于 twikit 2.3.1 的改進版本 項目概述 關于 twikit twikit 是一個優秀的 Twitter API 爬蟲庫,它的核心優勢在于無需 API Key即可訪問 Twitter 功能。通過網頁爬蟲技術,twikit 實現了: 發布推文和媒體內容搜索推文和用戶獲取…

C Primer Plus 第6版 編程練習——第9章(下)

7.編寫一個函數,從標準輸入中讀取字符,直到遇到文件結尾。程序要報告每個字符是否是字母。如果是,還要報告該字母在字母表中的數值位置。例如,c和C在字母表中的位置都是3。合并一個函數,以一個字符作為參數&#xff0c…

如何用文思助手改好一篇爛材料

在日常工作中,我們常常會遇到這樣的問題:因為工作要使用到之前寫的文章再看發現內容雜亂無章、或者收到的一些返稿內容質量差,不修改無法使用。但其實它們可能只是缺少了系統性的梳理與打磨。今天我們就來聊一聊,如何對一些不滿意…

VSCODE常規設置

摘要:用于新下載的vscode設置一些個人化的操作在 "Files: Auto Save" 下拉菜單中,選擇你想要的自動保存模式。常見的選項包括:"off":禁用自動保存。 "afterDelay":在你停止編輯一段時間…

2025秋招突圍戰:AI智能監考如何重構遠程筆試公平防線?

2025秋招季即將來臨,企業校招規模預計突破百萬量級,遠程筆試成為主流篩選方式。然而,傳統監考模式暴露出作弊行為難追溯、人力成本過高、數據維度單一等痛點,讓HR陷入“效率與公平”的兩難困境。牛客AI智能監考系統,通…

Python 基礎語法與數據類型(十三) - 實例方法、類方法、靜態方法

文章目錄1. 實例方法 (Instance Methods)1.1 特點與語法1.2 實例方法示例2. 類方法 (Class Methods)2.1 特點與語法2.2 類方法示例3. 靜態方法 (Static Methods)3.1 特點與語法3.2 靜態方法示例4. 三種方法的對比總結總結練習題練習題答案創作不易,請各位看官順手點…

Wireshark的安裝和基本使用

文章目錄一、Wireshark介紹二、Wireshark安裝三、Wireshark講解1.界面介紹(1)分組列表(2)分組詳情(3)分組字節流一、Wireshark介紹 Wireshark 是一款開源的網絡協議分析工具,能夠捕獲、過濾和分…

[yotroy.cool] Git 歷史遷移筆記:將 Git 項目嵌入另一個倉庫子目錄中(保留提交記錄)

個人博客https://www.yotroy.cool/,感謝關注~ 圖片資源可能顯示不全,請前往博客查看哦! 說來慚愧,這篇是AI幫助我解決實際問題后,又生成的一篇博客,效率特別高。 在開發中,我們常會…

91套商業策劃創業融資計劃書PPT模版

創業融資計劃書PPT模版,商業項目技術書PPT模版,商業創業計劃書,商業融資企業宣傳PPT模版,活動策劃方案書PPT模版,IOS風格商業計劃書PPT模版 91套商業策劃創業融資計劃書PPT模版:https://pan.quark.cn/s/739…

探秘阿里云通義九子:解鎖AI無限可能

通義九子初印象在當今人工智能飛速發展的時代,阿里云通義九子宛如一顆璀璨的明星,閃耀在 AI 的浩瀚天空中。作為阿里云推出的一系列強大的人工智能模型,通義九子在自然語言處理、圖像生成、智能客服等多個領域展現出了卓越的能力,…

Python網絡爬蟲之requests庫

目錄 一.網絡爬蟲的介紹 1.網絡爬蟲庫 2.robot.txt規則 二.requests庫 1.requests庫的安裝 2.get()函數 3.Response對象 Response的屬性 設置編碼 返回網頁內容 text() content() 三.提交信息到網頁 post()函數 四.會話與代理服務器 一.網絡爬蟲的介紹 1.網絡爬蟲…

區塊鏈技術詳解:從原理到應用

引言 區塊鏈作為一項顛覆性技術,已從加密貨幣的基石演變為重塑多個行業的創新引擎。本文旨在深入解析其核心原理、關鍵特性、技術架構、主流應用及未來挑戰。一、 區塊鏈核心概念:超越加密貨幣的分布式賬本 本質定義: 區塊鏈是一個去中心化、…

用Finalshell連接服務器后出現文件目錄不顯示,且刷新報錯空指針問題記錄

修改SSH配置?編輯sshd_config?使用管理員權限編輯/etc/ssh/sshd_config文件,找到Subsystem相關配置。原配置為Subsystem sftp /usr/libexec/openssh/sftp-server使用“i”編輯文件將修改為Subsystem sftp internal-sftp修改完成后使用Esc命令,退出編輯…

C語言:游戲代碼分享

小游戲分享 目錄 小游戲分享 1.井字棋游戲 2.簡單計算器游戲 3.猜單詞 4.石頭剪刀布游戲 5.猜數字游戲 1.井字棋游戲 「33 棋盤上的思維博弈!與好友輪流落子,搶占先機,連成一線即可獲勝。簡單規則蘊含無限策略,展現你的戰術…

深度學習入門-卷積神經網絡(CNN)(下)

1-4、 深度學習入門-卷積神經網絡(CNN)(上)-CSDN博客 5、 卷積神經網絡(CNN)的實現 簡單網絡的構成是“Convolution - ReLU - Pooling - Affine - ReLU - Affine - Softmax”: 相關代碼&#…