集成學習演算法
- 1. 集成學習演算法簡介
- 1.1 什么是集成學習
- 1.2 復習:機器學習的兩個核心任務
- 1.3 集成學習中boosting和Bagging
- 1.4 小結
- 2. Bagging和隨機森林
- 2.1 Bagging集成原理
- 2.2 隨機森林構造程序
- 2.3 隨機森林api介紹
- 2.4 隨機森林預測案例
- 2.5 bagging集成優點
- 2.6 小結
- 3. 包外估計 (Out-of-Bag Estimate)
- 3.1 包外估計的定義
- 3.2 包外估計的用途
- 4. otto案例介紹
- 5. Boosting
- 5.1 什么是boosting
- 5.2 實作程序
- 5.3 bagging集成與boosting集成的區別
- 6. AdaBoost介紹
- 6.1 構造程序細節
- 6.2 關鍵點剖析
- 6.3 案例
- 6.4 api介紹
- 6.5 小結
- 7. GBDT介紹
- 7.1 Decision Tree:CART回歸樹
- 7.1.1 回歸樹生成演算法
- 7.1.2 Gradient Boosting: 擬合負梯度
- 7.1.3 梯度的概念
- 7.2 GBDT演算法原理
- 7.3 GBDT執行流程
- 7.4 案例
- 7.5 GBDT主要執行思想
- 8. XGBoost
- 9. 什么是泰勒展開式
1. 集成學習演算法簡介
學習目標
- 了解什么是集成學習
- 知道機器學習中的兩個核心任務
- 了解集成學習中的boosting和bagging
1.1 什么是集成學習

集成學習通過建立幾個模型來解決單一預測問題,它的作業原理是生成多個分類器/模型,各自獨立地學習和作出預測,這些預測最后結合成組合預測,因此優于任何一個單分類的做出預測,
1.2 復習:機器學習的兩個核心任務
- 任務一:如何優化訓練資料 —> 主要用于解決欠擬合問題
- 任務二:如何提升泛化性能 —> 主要用于解決過擬合問題
1.3 集成學習中boosting和Bagging

只要單分類器的表現不太差,集成學習的結果總是要好于單分類器的
1.4 小結
- 什么是集成學習
- 通過建立幾個模型來解決單一預測問題
- 機器學習兩個核心任務
- 1.解決欠擬合問題
- 弱弱組合變強
- boosting
- 2.解決過擬合問題
- 互相遏制變壯
- Bagging
- 1.解決欠擬合問題
2. Bagging和隨機森林
學習目標
- 知道Bagging集成原理
- 知道隨機森林構造程序
- 知道RandomForestClassifier的使用
- 了解baggind集成的優點
2.1 Bagging集成原理
目標:把下面的圈和方塊進行分類

實作程序:
1.采樣不同資料集

2.訓練分類器

3.平權投票,獲取最終結果

4.主要實作程序小結

2.2 隨機森林構造程序
在機器學習中,隨機森林是一個包含多個決策樹的分類器,并且其輸出的類別是由個別樹輸出的類別的眾數而定,
隨機森林 = Bagging + 決策樹

例如, 如果你訓練了5個樹, 其中有4個樹的結果是True, 1個樹的結果是False, 那么最終投票結果就是True
隨機森林夠造程序中的關鍵步驟(M表示特征數目):
1)一次隨機選出一個樣本,有放回的抽樣,重復N次(有可能出現重復的樣本)
?2) 隨機去選出m個特征, m <<M,建立決策樹
思考
- 1.為什么要隨機抽樣訓練集?
- 如果不進行隨機抽樣,每棵樹的訓練集都一樣,那么最終訓練出的樹分類結果也是完全一樣的
- 2.為什么要有放回地抽樣?
- 如果不是有放回的抽樣,那么每棵樹的訓練樣本都是不同的,都是沒有交集的,這樣每棵樹都是“有偏的”,都是絕對“片面的”(當然這樣說可能不對),也就是說每棵樹訓練出來都是有很大的差異的;而隨機森林最后分類取決于多棵樹(弱分類器)的投票表決,
2.3 隨機森林api介紹
- sklearn.ensemble.RandomForestClassifier(n_estimators=10, criterion=’gini’, max_depth=None, bootstrap=True, random_state=None, min_samples_split=2)
- n_estimators:integer,optional(default = 10)森林里的樹木數量120,200,300,500,800,1200
- Criterion:string,可選(default =“gini”)分割特征的測量方法
- max_depth:integer或None,可選(默認=無)樹的最大深度 5,8,15,25,30
- max_features="auto”,每個決策樹的最大特征數量
- If “auto”, then max_features=sqrt(n_features).
- If “sqrt”, then max_features=sqrt(n_features)(same as “auto”).
- If “log2”, then max_features=log2(n_features).
- If None, then max_features=n_features.
- bootstrap:boolean,optional(default = True)是否在構建樹時使用放回抽樣
- min_samples_split:節點劃分最少樣本數
- min_samples_leaf:葉子節點的最小樣本數
- 超引數:n_estimator, max_depth, min_samples_split,min_samples_leaf
2.4 隨機森林預測案例
1. 實體化隨機森林
# 隨機森林去進行預測
rf = RandomForestClassifier()
2. 定義超引數的選擇串列
param = {"n_estimators": [120,200,300,500,800,1200], "max_depth": [5, 8, 15, 25, 30]}
3. 使用GridSearchCV進行網格搜索
# 超引數調優
gc = GridSearchCV(rf, param_grid=param, cv=2)
gc.fit(x_train, y_train)
print("隨機森林預測的準確率為:", gc.score(x_test, y_test))
注意
- 隨機森林的建立程序
- 樹的深度、樹的個數等需要進行超引數調優
2.5 bagging集成優點
Bagging + 決策樹/線性回歸/邏輯回歸/深度學習… = bagging集成學習方法
經過上面方式組成的集成學習方法:
-
均可在原有演算法上提高約2%左右的泛化正確率
-
簡單, 方便, 通用
2.6 小結
- bagging集成程序
- 1.采樣 — 從所有樣本里面,采樣一部分
- 2.學習 — 訓練弱學習器
- 3.集成 — 使用平權投票
- 隨機森林介紹
- 隨機森林定義
- 隨機森林 = Bagging + 決策樹
- 流程:
- 1.隨機選取m條資料
- 2.隨機選取k個特征
- 3.訓練決策樹
- 4.重復1-3
- 5.對上面的若決策樹進行平權投票
- 注意:
- 1.隨機選取樣本,且是有放回的抽取
- 2.選取特征的時候嗎,選擇m<<M
- M是所有的特征數
- api
sklearn.ensemble.RandomForestClassifier()
- 隨機森林定義
- Bagging + 決策樹/線性回歸/邏輯回歸/深度學習… = bagging集成學習方法
- bagging的優點
- 1.均可在原有演算法上提高約2%左右的泛化正確率
- 2.簡單, 方便, 通用
3. 包外估計 (Out-of-Bag Estimate)
在隨機森林構造程序中,如果進行有放回的抽樣,我們會發現,總是有?部分樣本我們選不到,
- 這部分資料,占整體資料的比重有多大呢?
- 這部分資料有什么用呢?
3.1 包外估計的定義
隨機森林的 Bagging 程序,對于每?顆訓練出的決策樹 g ,與資料集 D 有如下關系:

對于星號的部分,即是沒有選擇到的資料,稱之為 Out-of-bag(OOB)資料,當資料?夠多,對于任意?組資料 (x , y ) 是包外資料的概率為:

由于基分類器是構建在訓練樣本的?助抽樣集上的,只有約 63.2% 原樣本集出現在中,?剩余的 36.8% 的資料作為包 外資料,可以?于基分類器的驗證集,
經驗證,包外估計是對集成分類器泛化誤差的無偏估計. 在隨機森林演算法中資料集屬性的重要性、分類器集強度和分類器間相關性計算都依賴于袋外資料,
3.2 包外估計的用途
- 當基學習器是決策樹時,可使?包外樣本來輔助剪枝 ,或用于估計決策樹中各結點的后驗概率以輔助對零訓練樣本結點的處理;
- 當基學習器是神經網路時,可使用包外樣本來輔助早期停止以減小過擬合 ,
4. otto案例介紹
otto案例介紹 – Otto Group Product Classification Challenge
請參考:【機器學習】otto案例介紹
5. Boosting
學習目標
- 知道boosting集成原理和實作程序
- 知道bagging和boosting集成的區別
- 知道AdaBoost集成原理
5.1 什么是boosting

隨著學習的積累從弱到強
簡而言之:每新加入一個弱學習器,整體能力就會得到提升
代表演算法:Adaboost,GBDT,XGBoost,LightGBM
5.2 實作程序
1.訓練第?個學習器

2.調整資料分布

3.訓練第二個學習器

4.再次調整資料分布

5.依次訓練學習器,調整資料分布

6.整體程序實作

5.3 bagging集成與boosting集成的區別
- 區別?:資料方面
- Bagging:對資料進行采樣訓練;
- Boosting:根據前?輪學習結果調整資料的重要性,
- 區別二:投票方面
- Bagging:所有學習器平權投票;
- Boosting:對學習器進行加權投票,
- 區別三:學習順序
- Bagging的學習是并行的,每個學習器沒有依賴關系;
- Boosting學習是串行,學習有先后順序,
- 區別四:主要作用
- Bagging主要用于提高泛化性能(解決過擬合,也可以說降低方差)
- Boosting主要用于提高訓練精度 (解決欠擬合,也可以說降低偏差)

6. AdaBoost介紹
6.1 構造程序細節
- 步驟?:初始化訓練資料權重相等,訓練第?個學習器,
該假設每個訓練樣本在基分類器的學習中作?相同,這?假設可以保證第?步能夠在原始資料上學習基 本分類器H (x)
- 步驟二:AdaBoost反復學習基本分類器,在每?輪m = 1, 2, …, M順次的執行下列操作:

- 步驟三:對m個學習器進行加權投票

6.2 關鍵點剖析
如何確認投票權重?
如何調整資料分布?

6.3 案例
給定下面這張訓練資料表所示的資料,假設弱分類器由xv產?,其閾值v使該分類器在訓練資料集上的分類誤差率最低,試用Adaboost演算法學習?個強分類器,

問題解答:
- 步驟一:初始化訓練資料權重相等,訓練第?個學習器:

- 步驟二:AdaBoost反復學習基本分類器,在每?輪m = 1, 2, …, M順次的執行下列操作:
當m=1的時候:
(a)在權值分布為D1的訓練資料上,閾值v取2.5時分類誤差率最低,故基本分類器為:
6,7,8被分錯



當m=3的時候:
(a)在權值分布為D 的訓練資料上,閾值v取5.5時分類誤差率最低,故基本分類器為:


6.4 api介紹
from sklearn.ensemble import AdaBoostClassifier
api鏈接:https://scikitlearn.org/stable/modules/generated/sklearn.ensemble.AdaBoostClassifier.html#sklearn.ensemble.AdaBoost Classifier
6.5 小結
-
什么是Boosting
- 隨著學習的積累從弱到強
- 代表演算法:Adaboost,GBDT,XGBoost,LightGBM
-
bagging和boosting的區別
-
區別?:資料方面
- Bagging:對資料進?采樣訓練;
- Boosting:根據前?輪學習結果調整資料的重要性,
-
區別?:投票方面
- Bagging:所有學習器平權投票;
- Boosting:對學習器進?加權投票,
-
區別三:學習順序
- Bagging的學習是并行的,每個學習器沒有依賴關系;
- Boosting學習是串行的,學習有先后順序,
-
區別四:主要作用
- Bagging主要用于提高泛化性能(解決過擬合,也可以說降低?差)
- Boosting主要?于提高訓練精度 (解決欠擬合,也可以說降低偏差)
-
AdaBoost構造程序
- 步驟?:初始化訓練資料權重相等,訓練第?個學習器;
- 步驟?:AdaBoost反復學習基本分類器;
- 步驟三:對m個學習器進行加權投票
7. GBDT介紹
梯度提升決策樹(GBDT Gradient Boosting Decision Tree) 是一種迭代的決策樹演算法,該演算法由多棵決策樹組成,所有樹的結論累加起來做最終答案,它在被提出之初就被認為是泛化能力(generalization)較強的演算法,近些年更因為被用于搜索排序的機器學習模型而引起大家關注,
GBDT = 梯度下降 + Boosting + 決策樹
GBDT 的全稱是 Gradient Boosting Decision Tree,梯度提升樹,在傳統機器學習演算法中,GBDT算的上TOP3的演算法, 想要理解GBDT的真正意義,那就必須理解GBDT中的Gradient Boosting 和Decision Tree分別是什么?
7.1 Decision Tree:CART回歸樹

7.1.1 回歸樹生成演算法

7.1.2 Gradient Boosting: 擬合負梯度

提升樹演算法:




7.1.3 梯度的概念



7.2 GBDT演算法原理
上面兩節分別將Decision Tree和Gradient Boosting介紹完了,下面將這兩部分組合在?起就是我們的GBDT了,
GBDT演算法:


7.3 GBDT執行流程

如果上式中的hi(x)=決策樹模型,則上式就變為:
GBDT = 梯度下降 + Boosting + 決策樹
7.4 案例
預測編號5的身高:

第一步:計算損失函式,并求出第一個預測值:

第二步:求解劃分點

得出:年齡21為劃分點的方差=0.01+0.0025=0.0125
第三步:通過調整后目標值,求解得出h1(x)

第四步:求解h2(x)

得出結果:

編號5身高 = 1.475 + 0.03 + 0.275 = 1.78
7.5 GBDT主要執行思想
1.使用梯度下降法優化代價函式;
2.使用一層決策樹作為弱學習器,負梯度作為目標值;
3.利用boosting思想進行集成,
8. XGBoost

9. 什么是泰勒展開式

泰勒展開越多,計算結果越精確
小結
- boosting集成原理
- 隨著學習的積累從弱到強
- 實作程序
- 1.初始化訓練資料權重,初始權重是相等的
- 2.通過這個學習器,計算錯誤率
- 3.計算這個學習器的投票權重
- 4.對每個樣本進行重新賦權
- 5.重復前面1-4
- 6.對構建后的最后的學習器進加權投票
- bagging集成與boosting集成的區別:
- 資料方面:
- bagging:重新采樣
- boosting:對資料進行權重調整
- 投票方面:
- bagging:平權
- boosting:加權
- 學習順序方面:
- bagging:并行
- boosting:串行
- 主要作用:
- bagging:過擬合
- boosting:欠擬合
- 資料方面:
- 梯度提升決策樹(GBDT Gradient Boosting Decision Tree)
- GBDT = 梯度下降 + Boosting + 決策樹
- XGBoost
- XGBoost= 二階泰勒展開+boosting+決策樹+正則化
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/289821.html
標籤:AI
