摘要:本文主要目的是梳理集成學習的知識體系
一、什么是集成學習?
面對一個機器學習問題,我們一般有兩種方案:
1)訓練不同的模型,選取一個效果最好的模型作為解決方案,進行重點調參優化
2)訓練多個模型,可能每一個模型并不是最優的,但是綜合考慮所有模型的輸出結果,就會得到較好的最終結果
方案2便是集成學習
如果訓練的多個模型是同一型別的模型(同為決策樹或者神經網路等),則稱該集成為“同質”的,所用演算法稱為“基學習演算法”,每一個模型叫做“基學習器”
如果訓練的多個模型非同一型別,則稱該集成為“異質”的,此時不存在“基學習演算法”的概念,每一個模型叫做“組件學習器”或“個體學習器”,
二、集成學習的分類
集成學習主要分為兩大類,一類是bagging,另一類是boosting,他們分別對應著不同的訓練和預測程序
首先我們要明確的是,不同基學習器的訓練肯定對應著不同的樣本分布或者不同的模型引數,如果使用同一個訓練集的相同樣本分布且模型引數相同(所選擇模型),則集成學習沒有意義,
1)在訓練方面,bagging是通過對訓練集的不同采樣+基分類器選擇不同超引數的方式進行訓練,基分類器之間無強依賴,所以可以并行獨自訓練;boosting則是按照順序,首先賦予樣本相同的權重去訓練第一個基分類器,然后根據該分類器在決策上的表現,提高該分類器分錯的樣本對應的權重,訓練下一個基分類器,所以boosting的訓練程序是串行的
2)在預測方面,bagging采用vote(投票)的方式,采用得票數最多的決策作為決策結果;boosting采用stack(堆疊)的方式,將基分類器按照訓練順序疊加輸出結果,形成最終的決策,
3)在原理方面,bagging是通過不同的平等的分類器投票,有效減小了預測的方差,使預測結果更穩定,從而提高了泛化效果;boosting是通過有加權的基分類器的堆疊,每一個基分類器都會重點修正上一個基分類器的錯誤和不足,減少了偏差,從而提高了泛化效果
三、常用的基分類器
最常用也最熱門的集成學習演算法的基分類器為決策樹,原因如下
1)決策樹可以將樣本的權重整合到訓練程序中,從而避免使用過采樣等方法來調整樣本權重,具體來講,我猜測可以在兩個方面使用權重,一方面是特征選擇時,計算資訊增益等指標的時候加入權重,另一方面是給葉子結點打標簽時進行權重衡量,
2)決策樹的表達能力和泛化能力,可以通過調節樹的層數等方式進行折中
3)資料樣本的擾動對于決策樹的影響較大,因此不同子樣本集合生成的決策樹基分類器隨機性較大(這正是集成學習的靈魂,調整樣本權重/分布使得基分類器有所區別,舉個例子,當我們集思廣益想一個解決方案的時候,我們更希望每個參加頭腦風暴的成員都有比較大的想法差異(注意要至少保證每個人的想法比無腦瞎猜要好),如果一個人發言后,其他人都附和同意,這就相當尷尬,集成學習也沒有意義),這種基分類器更加適合集成學習,
除了決策樹,神經網路也適合作為基分類器,這個會在以后單獨介紹,一般情況,說到“集成學習”,第一個想到的就是基于決策樹的相關集成學習方法,至于基學習器是神經網路的集成學習,我們更多地把集成學習當做神經網路避免過擬合的一種方式,
四、Bagging介紹
首先明確,bagging的基學習器不確定,并不限定于決策樹
采樣方法:采用自助采樣法,即在包含m個樣本的資料集中,進行m次有放回的采樣,形成訓練集T1,此時,資料集中約有63.2%被采樣,計算方式如下

;重復該程序n次,共生成n個訓練集T1,T2……Tn,每個訓練集可以單獨并行訓練一個基學習器,共生成n個基學習器,每個基分類器都可以用每個訓練集中的未被采樣的36.8%的樣本進行驗證,
最后,模型的輸出結果綜合n個基學習器的輸出,
如果是分類任務就進行簡單投票,如果是回歸任務就簡單地取平均值即可,
五、隨機森林介紹
隨機森林是用決策樹作為基分類器的bagging方法,但是!!!重點強調,隨機森林!=bagging+決策樹,隨機森林=bagging+(決策樹+隨機屬性選擇)
通常決策樹在每個結點選擇最佳分裂屬性時會選擇資訊增益等指標最優的屬性,但隨機森林引入了隨機屬性(特征)選擇,即每次選擇屬性時隨機從屬性集中生成具有k(建議取logk)個屬性的子集,從子集中進行選擇,
這樣做的目的在于增加基學習器的多樣性,bagginng只是通過改變樣本的選取和分布增加多樣性,而隨機森林在此基礎上通過隨機屬性選擇進一步增強了基學習器的多樣性,從而提高模型最終的泛化性能,同時,由于每次只考慮子集,減少了特征選擇的計算開銷,
六、Boosting介紹
boosting,顧名思義,是提升演算法,可以將弱學習器提升為強學習器的一類集成演算法,這類演算法的機制是先初始化訓練集(一般賦予相同的樣本初始權重),然后訓練初始的基學習器,根據基學習器的結果,提升被預測錯誤的樣本的權重,再訓練下一個基學習器,直到基學習器的數目到達預先設定的閾值T才停止,最終將T個基學習器進行加權組合,得到最終結果,
boosting的具體演算法有adaboost,GBDT,xgboost等等,以為篇幅原因,將在下一篇博文中進行講解
七、結合策略
1)回歸任務,可以采用簡單平均法和加權(權重通過學習產生)平均法
2)分類任務,可以采用絕對多數投票法(過半則勝出)和相對多數投票法(多個類別票數并列第一,則隨機選取一個)和加權投票法
其中,絕對多數投票法獨有“拒絕預測”的功能,沒有超過半數的類別則拒絕進行預測,如果強制預測則退化為相對多數投票法,
!!重點細節:分類任務的基學習器可能輸出的是硬投票(具體的分類標簽)或者軟投票(類別的后驗概率),如果基學習器種類相同,則可以直接對概率進行綜合,一般效果會比綜合分類標簽要好;但當組合分類器不同,就應該都轉換為分類類別進行綜合,
據此可以推測,集成學習器(如隨機森林)輸出的概率結果應該由每個基分類器的軟投票或硬投票結果計算產生,但至于具體實作,如sklearn中的RandomforestClassifier是根據哪一個進行計算的,就不得而知了,
3)另一種結合策略,就是stacking,單獨訓練一個學習器用于組合基學習器的輸出結果,
八、多樣性
集成學習的靈魂在于基學習器的多樣性,要豐富基學習器的多樣性,可以有如下思路
1)樣本多樣性:每次訓練隨機選擇樣本子集
2)特征多樣性:每次訓練隨機選擇特征子集
3)輸出多樣性:改變基學習器的輸出,比如將類別轉化為連續值,拆分等等
4)引數多樣性:選擇模型訓練的不同超引數
另外補充,拋開深度學習不談,在xgboost出現之前,隨機森林幾乎是效果是監督學習效果最好的演算法,隨后一系列boosting演算法的出現,使得在較多情況下boosting演算法優于隨機森林,具體還是要看資料,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/45412.html
標籤:其他
上一篇:關于ipv6的使用
下一篇:TCP建立連接的詳細程序
