主頁 >  其他 > 集成演算法

集成演算法

2021-05-03 07:05:38 其他

集成演算法

  • 1 集成學習演算法的定義
  • 2 bagging
    • (1)bootstrap抽樣與方差降低
    • (2)隨機森林與決策樹獨立同分布
    • (3)極限隨機樹(極限森林)與API
  • 3 boosting
    • (1)梯度提升樹
      • a 原理
      • b 縮減 shrinkage
      • c 梯度提升樹的API
    • (2)Adaboost演算法
      • a 原理
      • b API

1 集成學習演算法的定義

所謂集成學習,就是訓練出完成統一任務的多個不同的子模型,并綜合這些子模型的預測結果做出最終的預測,集成學習中的每一個子模型都都稱為一個弱模型,對多個弱模型的綜合就稱為強模型,弱模型的選擇是靈活多樣的,可以源自不同的機器學習演算法,也可以是同一演算法,當源自同一演算法時,需要采用不同的訓練資料或者不同的特征選擇,綜合弱模型的預測結果的方式也可以靈活多樣,比如可以對預測結果取平均值,也可以取眾數,還可以將一個弱模型的輸出作為另一個弱模型的輸入,

集成學習演算法大致可以分為兩類:袋裝法(bagging)和提升法(boosting),

2 bagging

(1)bootstrap抽樣與方差降低

袋裝法又稱自助法(bootstrap法),其使用 bootstrap 抽樣,即有放回抽樣,每次訓練子模型使用的訓練樣本均為從原訓練樣本中有放回抽樣得來,在這些子訓練集中各自獨立地建立弱模型,并用這些弱模型預測,如果弱模型為決策樹,那么該集成演算法就是隨機森林,

因為是有放回的抽樣,能有效降低方差
對于n個獨立同分布的隨機變數Xi,假設他們的方差為σ^2,則n個隨機變數均值的方差為
在這里插入圖片描述
如果將每個弱模型的預測結果作為隨機變數,那么多個弱模型的預測結果平均值,其方差只有單個弱模型的 1/n ,

為何方差越小越好?
方差越大,波動性越大,預測結果波動性大,試想一下,一個模型今天預測是A,明天預測是B,后天就變C了,你覺得這個模型靠譜嗎?
而小的方差,代表預測結果更加穩定,雖然穩定值不一定正確,但只要每一個弱模型預測正確的概率比較大,那么結果的可信度就能大大提高,試想一下,某個集成模型,今天預測是A,明天也是A,后天也A,一個星期里6天預測是A,只有一天預測是B,由于波動性小,總體來看,這個集成模型還是比較靠譜的,因為預測結果穩定于結果A,雖然真實結果未必就是A,但總比上一個模型更靠譜,這里的集成模型,是由100個弱模型構成,最后的結果是100個弱模型投票,可以認為是100個人投了一個星期的票,每個人在一周內的波動性都大,但每天投票的綜合結果卻是穩定的,

當然,上面的解釋不嚴謹,只是方便理解,因為每個弱模型未必相互獨立,預測結果也未必同分布,比如在隨機森林中,由于生成每一棵樹的資料子集取自同一訓練集,因此這些訓練集存在一定的關聯性,訓練出來的每棵決策樹也是比較相似,這樣各棵決策樹無法做到獨立同分布,

(2)隨機森林與決策樹獨立同分布

隨機森林的思想依據是:雖然森林中的每棵樹都有一定的預測錯誤概率,但它們同時出錯的概率是很低的,
通過重復采樣,隨機森林預測的均方誤差,以及發生過擬合的概率都小于單棵決策樹,
為了增加隨機森林中各棵樹獨立的可能性,隨機森林在訓練每棵決策樹的時候需要一個額外的步驟:在每次劃分資料時,隨機的選取一部分特征進行遍歷,而不是遍歷所有的特征,因為考慮的特征不一樣,這樣各個決策樹就有不一樣結構,這樣就能使得每棵樹的預測結果更加接近于獨立同分布(獨立好理解了,但同分布如何理解?因為每棵樹都在擬合相同的目標值,相當于在擬合同一個分布,因此可以認為預測結果是同分布),當然,上述措施只能在某種程度上是預測結果接近獨立同分布,只要每個訓練子集取自同一個樣本集,就很難真正做到獨立同分布,

(3)極限隨機樹(極限森林)與API

極限隨機樹,又稱極限森林、極端隨機樹,
隨機森林中,每棵樹都是隨機選擇一部分樣本(有放回),生成決策樹時,每次劃分都是隨機選擇一部分特征(無放回),然后遍歷這些特征的所有取值,以確定劃分所使用的特征和閾值,
極限森林與隨機森林主要有兩個區別,一是使用所有的樣本,二是極限森林在每次劃分時,隨機選擇閾值,何謂“隨機選擇閾值”,我們這里來解釋一下:
假如原始的資料有10個特征,在每次劃分樣本時,隨機抽5個特征作為特征子集,為特征子集中的每一個特征隨機選擇一個值作為候選閾值,那么會有5個候選閾值,分別計算這5個候選閾值對應的基尼系數或者交叉熵(如果是回歸問題則計算均方差),能得到最小基尼系數或交叉熵的候選閾值,即為最終的閾值,其對應的特征,就是本次劃分時使用的特征,
隨機森林是在特征子集里面遍歷選擇特征,極限森林為特征子集中的每個特征隨機生成一個閾值,并從這些隨機生成的閾值中選取最佳閾值作為分割規則,

API
極限分類森林

sklearn.ensemble.ExtraTreesClassifier(n_estimators=100, criterion='gini', 
max_depth=None, max_features='auto', rand_state=None)

n_estimators 極限森林中決策樹的數量,默認100
criterion 劃分樣本時采用的標準,可以選擇 ‘gini’,也可以 ‘entropy’,默認 ‘gini’
max_depth 每棵樹的最大深度
max_features 特征子集中的特征數目,默認是auto,即對樣本總特征數取平方根(max_features=sqrt(n_features))
random_state 隨機種子
其他引數基本和隨機森林一致,

除了極限分類森林外,還有極限回歸森林,其原理和API與分類森林類似,

3 boosting

提升法是在同一個訓練集上依次訓練出一系列弱模型,每一個弱模型在訓練的時候,都在擬合上一個弱模型的誤差,因此,這些弱模型具有很強的依賴關系,集成模型的每次迭代,都是向其加入一個弱模型,提升演算法的核心思想是讓每一個弱模型都能彌補前一個弱型的不足,從而使得集成模型(強模型)得到的最終結果更加準確,

(1)梯度提升樹

a 原理

梯度提升樹(Gradient Boosting Decision Tree,簡稱gbdt)是由很多回歸樹組成,其基本思想是不斷生成新的決策樹來擬合前一棵決策樹的誤差,以期所有決策樹預測的綜合達到良好的效果,
具體來說,給定一個回歸問題的訓練資料 S={(x(1), y(1)),(x(1), y(1)),……,(x(m), y(m))},按照慣例,用
在這里插入圖片描述
分別表示特征矩陣和標簽向量,

演算法第一棵決策樹 T0 來表示最小化均方誤差
在這里插入圖片描述
用 r0=y-T0(X) 表示決策樹 T0 的預測誤差,可以認為,r0 是 T0 的不足之處,為了彌補不足,再訓練一棵決策樹 T1 來擬合誤差 r0,因此,T1的任務是最小化均方誤差
在這里插入圖片描述
此時,用 r1 = r0 - T1(X) 表示 T1 的預測誤差,由此,梯度提升回歸樹又可以再訓練一棵決策樹 T2 來擬合誤差 r1 ,這一程序可以不斷地進行下去,直到決策樹的誤差接近0,
在這里插入圖片描述
將上面格式相加并左右消元之后,可以得到:
在這里插入圖片描述
因此,可以用一系列回歸決策樹輸出結果的和來擬合標簽,這就是梯度提升樹的回歸演算法原理,

梯度提升樹中,弱模型是決策樹,如果不對決策樹的深度進行限制,那么每棵決策樹都會對訓練集進行準確無誤地擬合,弱模型不需要那么高的精度,因此可以使用深度來約束弱模型的精度,

由于該演算法類似于函式空間中的梯度下降演算法,每一次對前一棵樹的誤差擬合,都相當于在函式空間中沿梯度反方向搜索,并以此來提升模型的效果,因此成為梯度提升樹,

b 縮減 shrinkage

Shrinkage 的思想認為,每走一小步要比每次邁一大步更容易接近極值點,像函式空間中的梯度下降演算法一樣,這里可以加入學習率的概率,
假設 F(x)為強模型,如果沒有學習率,則
在這里插入圖片描述
每增加一棵樹,都是對強模型的一次迭代
在這里插入圖片描述
Shrinkage 不直接用殘差修復誤差,而是只修復一點點,把大步切成小步,本質上是給每棵樹加上一個權值,即它并不是完全信任每一棵殘差樹,
在這里插入圖片描述
圖片中 α 是學習率,
從最后的結果可以看到,當加上學習率之后,最后的強模型,是若干個弱模型預測值之和乘以學習率,

因此,迭代強模型時
在這里插入圖片描述

c 梯度提升樹的API

sklearn.ensemble.GradientBoostingRegressor(learning_rate=0.1, 
n_estimators=100, max_depth=3, random_state=None)

learning_rate 學習率,默認0.1
n_estimators 樹的棵數
max_depth 每棵樹的最大深度
random_state 亂數種子

(2)Adaboost演算法

Adaboost是一種應用于二分類問題的演算法,它用弱分類器的線性組合來構造強分類器,弱分類器的性能不太好用,僅比隨機瞎猜強,依靠它們可以構造一個非常準確的強分類器,

a 原理

在每次訓練弱模型時,都重點關注上一個弱模型中預測錯誤的樣本,其大致程序是:對于第k個弱模型預測錯誤的樣本,為其增大權重,預測正確的樣本縮小權重,同時根據第k個弱模型的預測錯誤率,為弱模型分配權重,訓練集的每一個樣本,在每次訓練弱模型時,都會改變權重,弱模型一般是用決策樹,
具體公式理論的推導與證明,詳見《機器學習與應用》雷明 清華大學出版社,P284-295,

b API

sklearn.ensemble.AdaBoostClassifier(n_estimators=100)

n_estimators 弱模型的數量,這里的弱模型指的是深度為1的決策樹,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/282286.html

標籤:其他

上一篇:Docker學習

下一篇:Redis快取穿透/擊穿/雪崩解決方案

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more