日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Bootstrap(自助法),Bagging,Boosting(提升)

發布時間:2024/9/15 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Bootstrap(自助法),Bagging,Boosting(提升) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

最近在理清一些很必要的也很基礎的東西,記錄一下,結合網上和文獻,自己也有些易化使之更輕松理解,如有錯誤,請不吝賜教,多謝!


Bootstrap(自助法)

Bootstrap是一種抽樣方法

核心思想

這里寫圖片描述

子樣本之于樣本,可以類比樣本之于總體

栗子:我要統計魚塘里面的魚的條數,怎么統計呢?假設魚塘總共有魚1000條,我是開了上帝視角的,但是你是不知道里面有多少。

步驟

1. 承包魚塘,不讓別人撈魚(規定總體分布不變)。
2. 自己撈魚,撈100條,都打上標簽(構造樣本)
3. 把魚放回魚塘,休息一晚(使之混入整個魚群,確保之后抽樣隨機)
4. 開始撈魚,每次撈100條,數一下,自己昨天標記的魚有多少條,占比多少(一次重采樣取分布)。
5. 重復3,4步驟n次。建立分布。

假設一下,第一次重新捕魚100條,發現里面有標記的魚12條,記下為12%,放回去,再捕魚100條,發現標記的為9條,記下9%,重復重復好多次之后,假設取置信區間95%,你會發現,每次捕魚平均在10條左右有標記,所以,我們可以大致推測出魚塘有1000條左右。其實是一個很簡單的類似于一個比例問題。這也是因為提出者Efron給統計學頂級期刊投稿的時候被拒絕的理由--"太簡單"。這也就解釋了,為什么在小樣本的時候,bootstrap效果較好,你這樣想,如果我想統計大海里有多少魚,你標記100000條也沒用啊,因為實際數量太過龐大,你取的樣本相比于太過渺小,最實際的就是,你下次再捕100000的時候,發現一條都沒有標記,,,這特么就尷尬了。。。


Bootstrap經典語錄

  • Bootstrap是現代統計學較為流行的一種統計方法,在小樣本時效果很好。通過方差的估計可以構造置信區間等,其運用范圍得到進一步延伸。

  • 就是一個在自身樣本重采樣的方法來估計真實分布的問題

  • 當我們不知道樣本分布的時候,bootstrap方法最有用。

  • 整合多個弱分類器,成為一個強大的分類器。這時候,集合分類器(Boosting, Bagging等)出現了。


什么是集成學習(ensemble learning)

了解boosting和bagging之前,先了解一下什么是集成學習,一句話,三個臭皮匠頂個諸葛亮,一箭易折十箭難折,千里之堤潰于蟻穴,啊,跑題了。在分類的表現上就是,多個弱分類器組合變成強分類器。

這里寫圖片描述

一句話,假設各弱分類器間具有一定差異性(如不同的算法,或相同算法不同參數配置),這會導致生成的分類決策邊界不同,也就是說它們在決策時會犯不同的錯誤。將它們結合后能得到更合理的邊界,減少整體錯誤,實現更好的分類效果。


Bagging(bootstrap aggregation)

首先:bagging和boosting都是集成學習(ensemble learning)領域的基本算法

bagging:從訓練集從進行子抽樣組成每個基模型所需要的子訓練集,對所有基模型預測的結果進行綜合產生最終的預測結果,至于為什么叫bootstrap aggregation,因為它抽取訓練樣本的時候采用的就是bootstrap的方法!


Bagging策略過程

這里寫圖片描述
  • 從樣本集中用Bootstrap采樣選出n個訓練樣本(放回,因為別的分類器抽訓練樣本的時候也要用)
  • 在所有屬性上,用這n個樣本訓練分類器(CART or SVM or ...)
  • 重復以上兩步m次,就可以得到m個分類器(CART or SVM or ...)
  • 將數據放在這m個分類器上跑,最后投票機制(多數服從少數)看到底分到哪一類(分類問題)

Bagging代表算法-RF(隨機森林)

RF:Random Forest

其中的Random就是指

1.訓練樣本選擇方面的Random:

Bootstrap方法隨機選擇子樣本

2.特征選擇方面的Random:

屬性集中隨機選擇k個屬性,每個樹節點分裂時,從這隨機的k個屬性,選擇最優的(如何選擇最優又有各種最大增益的方法,不在本文討論范圍內)。


RF構造流程

這里寫圖片描述

1.用Random(訓練樣本用Bootstrap方法,選擇分離葉子節點用上面的2)的方式構造一棵決策樹(CART)
2.用1的方法構造很多決策樹,每棵決策樹都最大可能地進行生長而不進行剪枝,許多決策樹構成一片森林,決策樹之間沒有聯系
3.測試數據進入每一棵決策樹,每棵樹做出自己的判斷,然后進行投票選出最終所屬類別(默認每棵樹權重一致)


RF優點

1.不容易出現過擬合,因為選擇訓練樣本的時候就不是全部樣本。
2.可以既可以處理屬性為離散值的量,比如ID3算法來構造樹,也可以處理屬性為連續值的量,比如C4.5算法來構造樹。
3.對于高維數據集的處理能力令人興奮,它可以處理成千上萬的輸入變量,并確定最重要的變量,因此被認為是一個不錯的降維方法。此外,該模型能夠輸出變量的重要性程度,這是一個非常便利的功能。
4.分類不平衡的情況時,隨機森林能夠提供平衡數據集誤差的有效方法

RF缺點

1.隨機森林在解決回歸問題時并沒有像它在分類中表現的那么好,這是因為它并不能給出一個連續型的輸出。當進行回歸時,隨機森林不能夠作出超越訓練集數據范圍的預測,這可能導致在對某些還有特定噪聲的數據進行建模時出現過度擬合。
2.對于許多統計建模者來說,隨機森林給人的感覺像是一個黑盒子——你幾乎無法控制模型內部的運行,只能在不同的參數和隨機種子之間進行嘗試。


Boosting

核心:Boosting是一種框架算法,用來提高弱分類器準確度的方法,這種方法通過構造一個預測函數序列,然后以一定的方式將他們組合成為一個準確度較高的預測函數,還有就是,Boosting算法更加關注錯分的樣本,這點和Active Learning的尋找最有價值的訓練樣本有點遙相呼應的感覺

很抽象對不對,沒關系,我們通過Adaboost來理解這個核心思想。


Boosting算法代表--Adaboost(Adaptive Boosting)

核心思想:一種迭代算法,針對同一個訓練集訓練不同的分類器(弱分類器),然后進行分類,對于分類正確的樣本權值低,分類錯誤的樣本權值高(通常是邊界附近的樣本),最后的分類器是很多弱分類器的線性疊加(加權組合),分類器相當簡單。實際上就是一個簡單的弱分類算法提升(boost)的過程。

結合圖形來過一遍Adaboost算法

這里寫圖片描述

算法開始前,需要將每個樣本的權重初始化為1/m,這樣一開始每個樣本都是等概率的分布,每個分類器都會公正對待。

這里寫圖片描述

Round1,因為樣本權重都一樣,所以分類器開始劃分,根據自己分類器的情況,只和分類器有關。劃分之后發現分錯了三個"+"號,那么這些分錯的樣本,在給下一個分類器的時候權重就得到提高,也就是會影響到下次取訓練樣本的分布,就是提醒下一個分類器,“誒!你注意點這幾個小子,我上次栽在他們手里了!”

這里寫圖片描述

Round2,第二代分類器信誓旦旦的對上一代分類器說"我知道了,大哥!我一定睜大眼睛好好分著三個玩意!"ok,這次三個上次分錯的都被分出來了,但是并不是全部正確,這次又栽倒在左下角三個"-"上了,然后臨死前,第二代分類器對下一代分類器說"這次我和上一代分類器已經把他們摸得差不多了,你再稍微注意下左下角那三個小子,也別忘了上面那三個(一代錯分的那三個"+")!"

這里寫圖片描述

Round3:有了上面兩位大哥的提醒,第三代分類器表示,我差不多都知道上次大哥們都錯哪了,我只要小心這幾個,應該沒什么問題!只要把他們弄錯的我給整對了,然后把我們收集的信息一對,這不就行了么!ok,第三代分類器不負眾望,成功分對上面兩代分類器重點關注的對象,至于分錯的那幾個小的,以前大哥們都分對了,我們坐下來核對一下就行了!

這里寫圖片描述

最后,三個分類器坐下來,各自談了談心得,分配了下權重,然后一個諸葛亮就誕生啦!是不是道理很簡單!至于權重如何計算,不在本文討論范圍內。


Adaboost優點

1.可以使用各種方法構造子分類器,Adaboost算法提供的是框架
2.簡單,不用做特征篩選
3.相比較于RF,更不用擔心過擬合問題

Adaboost缺點

1.從wiki上介紹的來看,adaboost對于噪音數據和異常數據是十分敏感的。Boosting方法本身對噪聲點異常點很敏感,因此在每次迭代時候會給噪聲點較大的權重,這不是我們系統所期望的。
2.運行速度慢,凡是涉及迭代的基本上都無法采用并行計算,Adaboost是一種"串行"算法.所以GBDT(Gradient Boosting Decision Tree)也非常慢。


Pay Attention

1.Bagging: 樹"并行"生成 ,如RF;Boosting:樹"串行"生成,如Adaboost

2.boosting中的基模型為弱模型,而RF中的基樹是強模型(大多數情況)

3.boosting重采樣的不是樣本,而是樣本的分布,每次迭代之后,樣本的分布會發生變化,也就是被分錯的樣本會更多的出現在下一次訓練集中

4.明確一點,我們迭代也好(Adaboost),并行(RF)也好,只和訓練集有關,和測試集真的一毛錢關系都沒有好么!我們先把原始數據分類測試集和訓練集,然后測試集放一邊,訓練集里面再挑子集作為迭代算法用的訓練集!這個和K-fold思想很像。



作者:mrlevo520
鏈接:https://www.jianshu.com/p/708dff71df3a
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

總結

以上是生活随笔為你收集整理的Bootstrap(自助法),Bagging,Boosting(提升)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。