集成學習(一)Bagging

前邊學習了:十大集成學習模型(簡單版)-CSDN博客

Bagging又稱為“裝袋法”,它是所有集成學習方法當中最為著名、最為簡單、也最為有效的操作之一。

在Bagging集成當中,我們并行建立多個弱評估器(通常是決策樹,也可以是其他非線性算法),并綜合多個弱評估器的結果進行輸出。當集成算法目標是回歸任務時,集成算法的輸出結果是弱評估器輸出的結果的平均值,當集成算法的目標是分類任務時,集成算法的輸出結果是弱評估器輸出的結果少數服從多數。

由于bagging就是將多個模型進行集成,比較簡單,所以,本文不講bagging的原理,通過幾個問題讓大家徹底了解bagging方法:

一、為什么Bagging算法的效果比單個評估器更好?

二、為什么Bagging可以降低方差?

三、為什么誤差可以分解為偏差、方差和噪聲?三者分別是什么意思?

四、Bagging有效的基本條件有哪些?Bagging的效果總是強于弱評估器嗎?

五、Bagging方法可以集成決策樹之外的算法嗎?

六、怎樣增強Bagging中弱評估器的獨立性?

七、除了隨機森林,你還知道其他Bagging算法嗎?

八、即使是單顆樹,為什么它的feature_importances_也會有一定的隨機性?

一、為什么Bagging算法的效果比單個評估器更好?

該問題其實是在考察Bagging方法降低模型泛化誤差的基本原理。

泛化誤差是模型在未知數據集上的誤差,更低的泛化誤差是所有機器學習/深度學習建模的根本目標。在機器學習當中,泛化誤差一般被認為由偏差、方差和噪音構成。

其中偏差是預測值與真實值之間的差異,衡量模型的精度。方差是模型在不同數據集上輸出的結果的方差,衡量模型穩定性。噪音是數據收集過程當中不可避免的、與數據真實分布無關的信息。

當算法是回歸算法、且模型衡量指標是MSE時,模型的泛化誤差可以有如下定義:

泛化誤差=偏差*偏差+方差+噪音*噪音 = bias*bias+variance+noise*noise

(該公式可以通過泛化誤差、偏差、方差與噪音的定義推導而得,下面有推導)

Bagging的基本思想是借助弱評估器之間的”獨立性”來降低方差,從而降低整體的泛化誤差。這個思想可以被推廣到任意并行使用弱分類器的算法或融合方式上,極大程度地左右了并行融合方式的實際使用結果。其中,“降低方差”指的是bagging算法輸出結果的方差一定小于弱評估器輸出結果的方差,因此在相同數據上,隨機森林往往比單棵決策樹更加穩定,也因此隨機森林的泛化能力往往比單棵決策樹更強。

二、為什么Bagging可以降低方差?

設真實值為y,加上誤差之后的值為?y_{\epsilon } = y + c,模型預測值為?f(x)?,并且誤差服從均值為0的正態分布,即\epsilon \sim N(0,\sigma ^{2})

偏差:度量了學習算法的期望預期與真實結果的偏離程度,即刻畫了學習算法本身的擬合能力,即y-f(x)

方差:度量了同樣大小的訓練集的變動所導致的學習性能的變化,即刻畫了數據擾動所造成的影響,即E\left [ f(x)-E(f(x))^{2} \right ]

噪聲:表達了在當前任務上任何學習算法所能夠達到的期望泛化誤差的下界,即刻畫了學習問題本身的難度,也即\epsilon =y_{\varepsilon }-y

推導

因此,誤差可以分解為偏差、方差與噪聲之和。?

三、為什么誤差可以分解為偏差、方差和噪聲?三者分別是什么意思?

3.1 回歸問題

以隨機森林為例,假設現在隨機森林中含有?n?個弱評估器(?n?棵樹),任意弱評估器上的輸出結果是?X_{i},則所有這些弱評估器輸出結果的方差可以被表示為var(X_{i})??。假設現在我們執行回歸任務,則森林的輸出結果等于森林中所有樹輸出結果的平均值,因此森林的輸出可以被表示為?\bar{X}=\frac{\sum X_{i}}{n},因此隨機森林輸出結果的方差可以被表示為?var(\bar{X})?,也可以寫作Var(\frac{?{\sum X_{i}}}{n})

當森林中的樹互相獨立時,?var(\bar{X})永遠小于?var(X_{i}),推導如下:

更一般的式子:

其中,?ρ?為弱評估器之間的相關系數,可見當弱評估器之間完全獨立時,?ρ?為0。與獨立時是一樣的。這也意味著隨機森林輸出結果的方差與森林中弱評估器之間的相關性是正相關的。評估器之間的相關性越強,隨機森林輸出的結果的方差就越大,Bagging方法通過降低方差而獲得的泛化能力就越小。

因此,

1、在bagging的弱分類器選取原則中有一條要求弱分類器之間盡可能相互獨立,而且獨立性越高bagging越有效,當弱評估器之間沒有任何獨立性了,也即每個弱評估器完全一樣,那bagging也就沒有任何意義了。

2、同時還要要求弱評估器的方差要大,偏差要小,主要是因為bagging是降低方差,不能夠降低偏差,采用大偏差的弱評估器,訓練結果非常不可控。

3.2 分類問題

在bagging中,需要對每棵樹上的輸出結果進行少數服從多數的計算,并將“多數”指向的類別作為隨機森林分類器的結果。因此,當弱評估器的方差是?var(X_{i})時,隨機森林分類器的方差可以寫作var(f(\bar{X})),其中f(z)就是sigmoid函數,\bar{X}是所有弱評估器的分類結果的均值。讓?var(f(\bar{X}))?在?E(\bar{X})處進行一階泰勒展開,推導如下:

由于f為sigmoid函數,所以f{}'< 1,因此有var(f(\bar{X}))< Var(X)

四、Bagging有效的基本條件有哪些?Bagging的效果總是強于弱評估器嗎?

(這塊要重點記一下)
1、弱評估器的偏差較低,特別地來說,弱分類器的準確率至少要達到50%以上

2、弱評估器之間相關性弱,最好相互獨立

3、弱評估器是方差較高、不穩定的評估器

1、弱評估器的偏差較低,特別地來說,弱分類器的準確率至少要達到50%以上

Bagging集成算法是對基評估器的預測結果進行平均或用多數表決原則來決定集成評估器的結果。在分類的例子中,假設我們建立了25棵樹,對任何一個樣本而言,平均或多數表決原則下,當且僅當有13棵以上的樹判斷錯誤的時候,隨機森林才會判斷錯誤。假設單獨一棵決策樹在樣本i上的分類準確率在0.8上下浮動,那一棵樹判斷錯誤的概率大約就有0.2(\epsilon ),那隨機森林判斷錯誤的概率(有13棵及以上的樹都判斷錯誤的概率)是:

可見,判斷錯誤的幾率非常小,這讓隨機森林的表現比單棵決策樹好很多。基于上述式子,我們可以繪制出以弱分類器的誤差率\epsilon為橫坐標、隨機森林的誤差率為縱坐標的圖像。

可以從圖像上看出,當基分類器的誤差率小于0.5,即準確率大于0.5時,集成的效果是比弱分類器要好的。相反,當基分類器的誤差率大于0.5,袋裝的集成算法就失效了。所以在使用隨機森林之前,一定要檢查,用來組成隨機森林的分類樹們是否都有至少50%的預測正確率。

2、弱評估器之間相關性弱,最好相互獨立

在證明Bagging降低方差的數學過程中已經申明了很多次,唯有弱評估器之間相互獨立、弱評估器輸出的結果相互獨立時,方差計算公式的前提假設才能被滿足,Bagging才能享受降低方差的福利。

然而在現實中,森林中的弱評估器很難完全相互獨立,因為所有弱評估器都是在相同的數據上進行訓練的、因此構建出的樹結構也大同小異。幸運的是,我們能夠衡量弱評估器之間相關性。以隨機森林回歸為例,假設任意弱評估器之間的相關系數為?ρ?,則隨機森林輸出結果的方差等于:

這個公式是根據比奈梅定義(Bienaymé's Identity)與協方差相關的公式推導出來的,這暗示隨機森林輸出結果的方差與森林中弱評估器之間的相關性是正相關的,弱評估器之間的相關性越強,隨機森林輸出的結果的方差就越大,Bagging方法通過降低方差而獲得的泛化能力就越小。因此在使用隨機森林時,我們需要讓弱評估器之間盡量相互獨立,我們也可以通過這一點來提升隨機森林的水平。

3、弱評估器是方差較高、不穩定的評估器

因為Bagging是作用于方差的集成手段,所以Bagging方法擅長處理方差大、偏差低的模型,而不擅長處理方差小、偏差大的模型,對于任意算法而言,方差與偏差往往不可兼得,這也很容易理解——想要在當前數據集上獲得低偏差,必然意味著需要重點學習當前數據集上的規律,就不可避免地會忽略未知數據集上的規律,因此在不同數據集上進行測試時,模型結果的方差往往很大。

五、Bagging方法可以集成決策樹之外的算法嗎?

強大又復雜的算法如決策樹、支持向量機等,往往學習能力較強,傾向于表現為偏差低、方差高,這些算法就比較適合于Bagging。而線性回歸、邏輯回歸、KNN等復雜度較低的算法,學習能力較弱但表現穩定,因此傾向于表現為偏差高,方差低,就不太適合被用于Bagging。

六、怎樣增強Bagging中弱評估器的獨立性?

正如前述,在實際使用數據進行訓練時,我們很難讓Bagging中的弱評估器完全相互獨立,主要是因為:

(1)訓練的數據一致

(2)弱評估器構建的規則一致

導致最終建立的弱評估器都大同小異,Bagging的效力無法完整發揮出來。為了弱評估器構建規則一致的問題,有了Averaging和Voting這樣的模型融合方法:基本來看,就是使用Bagging的邏輯來融合數個不同算法的結果。而當我們不使用模型融合時,我們可以使用“隨機性”來削弱弱分類器之間的聯系、增強獨立性、提升隨機森林的效果。

在隨機森林中,天生就存在有放回隨機抽取樣本建樹的機制,因此才會有bootstrap、max_samples等參數,才會有袋外數據、袋外評估指標oob_score等屬性,意在使用不同的數據建立弱評估器。除了有放回隨機抽樣之外,還可以使用max_features隨機抽樣特征進行分枝,加大弱評估器之間的區別。

正因為存在不同的隨機的方式,Bagging集成方法下才有了多種不同的算法。

七、除了隨機森林,你還知道其他Bagging算法嗎?

Bagging方法的原理簡單,因此Bagging算法之間的不同主要體現在隨機性的不同上。在上世紀90年代,對樣本抽樣的bagging、對特征抽樣的bagging、對樣本和特征都抽樣的bagging都有不同的名字,不過今天,所有這些算法都被認為是裝袋法或裝袋法的延展。在sklearn當中,除了隨機森林之外還提供另一個bagging算法:極端隨機樹。極端隨機樹是一種比隨機森林更隨機、對方差降低更多的算法,我們可以通過以下兩個類來實現它:

  • sklearn.ensemble.ExtraTreesClassifier
  • sklearn.ensemble.ExtraTreesRegressor

與隨機森林一樣,極端隨機樹在建樹時會隨機挑選特征,但不同的是,隨機森林會將隨機挑選出的特征上每個節點都進行完整、精致的不純度計算,然后挑選出最優節點,而極端隨機樹則會機選擇數個節點進行不純度計算,然后選出這些節點中不純度下降最多的節點。這樣生長出的樹比隨機森林中的樹更不容易過擬合,同時獨立性更強,因此極端隨機樹可以更大程度地降低方差。

當然了,這種手段往往也會帶來偏差的急劇下降,因此極端隨機樹是只適用于方差過大、非常不穩定的數據的。除非特殊情況,我們不會考慮使用極端隨機樹。

八、即使是單顆樹,為什么它的feature_importances_也會有一定的隨機性?

這種隨機性源于CART樹對切分點的選取。根據評估器的說明,哪怕是max_features=n_features(即每次訓練帶入全部特征、而max_features<n_features時則每次切分帶入部分特征、此時隨機性更強),在進行決策樹生長時也經常遇到擁有相同效力的備選切分點(即基于基尼系數的信息增益相同),此時只能隨機挑選其中一個備選點進行切分,而選取哪個切分點,就必然給對應的特征累計更多的重要性。這也就是為何相同的數據在多次建模時特征重要性會各不相同的原因。

記下來學習:集成學習(二)Boosting-CSDN博客

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

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

相關文章

排序——數據結構與算法 總結8

目錄 8.1 排序相關概念 8.2 插入排序 8.2.1 直接插入排序&#xff1a; 8.2.2 折半插入排序&#xff1a; 8.2.3 希爾排序&#xff1a; 8.3 交換排序 8.3.1 冒泡排序&#xff1a; 8.3.2 快速排序&#xff1a; 8.4 選擇排序 8.4.1 簡單選擇排序 8.4.2 堆排序 8.5 歸并…

磁盤就是一個超大的Byte數組,操作系統是如何管理的?

磁盤在操作系統的維度看&#xff0c;就是一個“超大的Byte數組”。 那么操作系統是如何對這塊“超大的Byte數組”做管理的呢&#xff1f; 我們知道在邏輯上&#xff0c;上帝說是用“文件”的概念來進行管理的。于是&#xff0c;便有了“文件系統”。那么&#xff0c;文件系統…

當前國內可用的docker加速器搜集 —— 筑夢之路

可用鏡像加速器 以下地址搜集自網絡&#xff0c;僅供參考&#xff0c;請自行驗證。 1、https://docker.m.daocloud.io2、https://dockerpull.com3、https://atomhub.openatom.cn4、https://docker.1panel.live5、https://dockerhub.jobcher.com6、https://hub.rat.dev7、http…

最新版情侶飛行棋dofm,已解鎖高階私密模式,單身狗務必繞道!(附深夜學習資源)

今天阿星要跟大家聊一款讓阿星這個大老爺們兒面紅耳赤的神奇游戲——情侶飛行棋。它的神奇之處就在于專為情侶設計&#xff0c;能讓情侶之間感情迅速升溫&#xff0c;但單身狗們請自覺繞道&#xff0c;不然后果自負哦&#xff01; 打開游戲&#xff0c;界面清新&#xff0c;操…

HTML5使用<progress>進度條、<meter>刻度條

1、<progress>進度條 定義進度信息使用的是 progress 標簽。它表示一個任務的完成進度&#xff0c;這個進度可以是不確定的&#xff0c;只是表示進度正在進行&#xff0c;但是不清楚還有多少工作量沒有完成&#xff0c;也可以用0到某個最大數字&#xff08;如&#xff1…

vs2022安裝qt vs tool

1 緣由 由于工作的需要&#xff0c;要在vs2022上安裝qt插件進行開發。依次安裝qt&#xff0c;vs2022&#xff0c;在vs2022的擴展管理中安裝qt vs tool。 2 遇到困難 問題來了&#xff0c;在qt vs tool的設置qt version中出現問題&#xff0c;設置msvc_64-bit時出現提示“invali…

西安石油大學 課程習題信息管理系統(數據庫課設)

主要技術棧 Java Mysql SpringBoot Tomcat HTML CSS JavaScript 該課設必備環境配置教程&#xff1a;&#xff08;參考給出的鏈接和給出的關鍵鏈接&#xff09; JAVA課設必備環境配置 教程 JDK Tomcat配置 IDEA開發環境配置 項目部署參考視頻 若依框架 鏈接數據庫格式注…

【中項第三版】系統集成項目管理工程師 | 第 4 章 信息系統架構① | 4.1-4.2

前言 第4章對應的內容選擇題和案例分析都會進行考查&#xff0c;這一章節屬于技術相關的內容&#xff0c;學習要以教材為準。本章分值預計在4-5分。 目錄 4.1 架構基礎 4.1.1 指導思想 4.1.2 設計原則 4.1.3 建設目標 4.1.4 總體框架 4.2 系統架構 4.2.1 架構定義 4.…

Invoice OCR

Invoice OCR 發票識別 其他類型ORC&#xff1a; DIPS_YTPC OCR-CSDN博客

25款404網頁源碼(上)

25款404網頁源碼&#xff08;上&#xff09; 1部分源碼 2部分源碼 3部分源碼 4部分源碼 5部分源碼 6部分源碼 7部分源碼 8部分源碼 9部分源碼 10部分源碼 11部分源碼 12部分源碼 領取完整源碼下期更新 1 部分源碼 <!DOCTYPE html> <html><!-- 優選源碼 gulang.…

數據結構基礎--------【二叉樹基礎】

二叉樹基礎 二叉樹是一種常見的數據結構&#xff0c;由節點組成&#xff0c;每個節點最多有兩個子節點&#xff0c;左子節點和右子節點。二叉樹可以用來表示許多實際問題&#xff0c;如計算機程序中的表達式、組織結構等。以下是一些二叉樹的概念&#xff1a; 二叉樹的深度&a…

Element-UI - el-table中自定義圖片懸浮彈框 - 位置優化

該篇為前一篇“Element-UI - 解決el-table中圖片懸浮被遮擋問題”的優化升級部分&#xff0c;解決當圖片位于頁面底部時&#xff0c;顯示不全問題優化。 Vue.directive鉤子函數已在上一篇中詳細介紹&#xff0c;不清楚的朋友可以翻看上一篇&#xff0c; “Element-UI - 解決el-…

深入刨析Redis存儲技術設計藝術(二)

三、Redis主存儲 3.1、存儲相關結構體 redisServer:服務器 server.h struct redisServer { /* General */ pid_t pid; /* Main process pid. */ pthread_t main_thread_id; /* Main thread id */ char *configfile; /* Absolut…

Interpretability 與 Explainability 機器學習

「AI秘籍」系列課程&#xff1a; 人工智能應用數學基礎人工智能Python基礎人工智能基礎核心知識人工智能BI核心知識人工智能CV核心知識 Interpretability 模型和 Explainability 模型之間的區別以及為什么它可能不那么重要 當你第一次深入可解釋機器學習領域時&#xff0c;你會…

Zabbix配置文件中Server和ServerActive參數講解

目錄 參數總結 實例&#xff1a; Zabbix Server 配置 (zabbix_server.conf) Zabbix Agent 配置 (zabbix_agentd.conf) 配置文件解析 實際應用 Zabbix Server 配置文件 (zabbix_server.conf) 對代理端的影響 1. Server 參數 2. ServerActive 參數 Zabbix Agent 配置文…

ubuntu 22 安裝 lua 環境 編譯lua cjson 模塊

在 windows 下使用 cygwin 編譯 lua 和 cjson 簡直就是災難&#xff0c;最后還是到 ubuntu 下完成了。 1、下載lua源碼&#xff08;我下載的 5.1 版本&#xff0c;后面還有一個小插曲), 直接解壓編譯&#xff0c;遇到一個 readline.h not found 的問題&#xff0c;需要安裝 re…

python使用langchain整合通義千文

首先pip安裝langchain和dashscope pip install langchain pip install langchain_community pip install dashscope --upgrade然后測試一下運行效果 from langchain_community.chat_models.tongyi import ChatTongyi from langchain.schema import HumanMessage #api_key可以…

如何使用C++中的內聯函數和編譯器優化

在C中&#xff0c;內聯函數&#xff08;inline functions&#xff09;是一種請求編譯器嘗試在調用點將函數體展開&#xff0c;而不是按照常規函數調用的方式&#xff08;即產生調用指令、保存寄存器、棧幀操作等&#xff09;來執行的特殊函數。內聯函數主要用于小的、頻繁調用的…

CentOS命令格式及常用命令

在CentOS中&#xff0c;系統目錄結構遵循了標準的Linux文件系統層次結構&#xff08;Filesystem Hierarchy Standard&#xff0c;FHS&#xff09;。下面是CentOS系統中一些重要的目錄及其用途的介紹&#xff1a; 1. /&#xff08;根目錄&#xff09;&#xff1a;整個文件系統的…

207 課程表

題目 你這個學期必須選修 numCourses 門課程&#xff0c;記為 0 到 numCourses - 1 。 在選修某些課程之前需要一些先修課程。 先修課程按數組 prerequisites 給出&#xff0c;其中 prerequisites[i] [ai, bi] &#xff0c;表示如果要學習課程 ai 則 必須 先學習課程 bi 。 …