文章目錄
-
- 內建學習:Task1 随機森林算法梳理
-
- 1.1. 內建學習的概念 &
- 1.2. 個體學習器的概念
- 1.3. boosting bagging的概念、異同點
- 1.4. 了解不同的結合政策(平均法,投票法,學習法)
- 1.5. 随機森林的思想
- 1.6. 随機森林的推廣
- 1.7. 随機森林的優缺點
- 1.8. 随機森林在sklearn中的參數解釋
- 1.9. 随機森林的應用場景
內建學習:Task1 随機森林算法梳理
1.1. 內建學習的概念 &
1.2. 個體學習器的概念
-
又稱為“多分類器系統”(multi-classifier system)、“基于委員會的學習”(committee-based learning)等。
基本的想法是結合多個學習器,獲得比單一學習器泛化性能更好的學習器。
根據個體學習器的生成方式,目前內建學習大緻可分為兩大類:
- 序列化方法:個體學習器間存在強依賴關系、必須串行生成,代表是Boosting;
- 并行化方法:個體學習器間不存在強依賴關系、可同時生成,代表是Bagging和“随機森林”(Random Forest)。
- 內建學習的理論基礎是 PAC 理論、強可學習與弱可學習理論。
-
內建學習的理論基礎表明強可學習器與弱可學習器是等價的。(是以可以尋找方法将弱可學習器轉換為強可學習器,而不必去直接尋找較難發現的強可學習器。)
具有代表性的內建學習方法有Boosting,Bagging,随機森林。
-
1.3. boosting bagging的概念、異同點
內建算法中主要分為bagging算法與boosting算法,
- Bagging算法,過程如下:
-
從原始樣本集中使用Bootstraping 方法随機抽取n個訓練樣本,共進行k輪抽取,得到k個訓練集
(k個訓練集之間互相獨立,元素可以有重複)。
- 對于n個訓練集,我們訓練k個模型,(這個模型可根據具體的情況而定,可以是決策樹,knn等)
- 對于分類問題:由投票表決産生的分類結果;
- 對于回歸問題,由k個模型預測結果的均值作為最後預測的結果(所有模型的重要性相同)。
-
- Boosting(提升法),過程如下:
-
對于訓練集中的每個樣本建立權值wi,表示對每個樣本的權重
其關鍵在與對于被錯誤分類的樣本權重會在下一輪的分類中獲得更大的權重(錯誤分類的樣本的權重增加)。
- 加大分類誤差率較小的弱分類器的權值,使其在表決中起到更大的作用,
- 減小分類誤差率較大的弱分類器的權值,使其在表決中起到較小的作用。
-
每一次疊代都得到一個弱分類器,需要使用某種政策将其組合,最為最終模型,
(adaboost給每個疊代之後的弱分類器一個權值,将其線性組合作為最終的分類器,誤差小的分類器權值越大。)
-
- Bagging和Boosting 的主要差別
主要差別 | Bagging | Boosting |
---|---|---|
樣本選擇 | 随機有放回的取樣(Bootstraping) | 每一輪訓練的樣本是固定的,改變的是每個樣本的權重 |
樣本權重 | 均勻取樣,且每個樣本的權重相同 | 根據錯誤率調整樣本權重,錯誤率越大的樣本權重會變大 |
預測函數 | 所有的預測函數權值相同 | 誤差越小的預測函數其權值越大 |
計算過程 | 各個預測函數可以并行生成 | 各個預測函數必須按照順序串行生成 |
-
将決策樹與以上架構組合成新的算法
Bagging + 決策樹 = 随機森林
AdaBoost + 決策樹 = 提升樹
Gradient + 決策樹 = GDBT
1.4. 了解不同的結合政策(平均法,投票法,學習法)
-
結合政策作用
1.提高泛化性能
2.降低進入局部最小點的風險
3.擴大假設空間
-
平均法:簡單平均、權重平均
1.規模大的內建,學習的權重較多,權重平均法易導緻過拟合
2.個體學習器性能相差較大時宜使用權重平均法,相近用簡單平均法。
-
投票法:
1.絕對多數投票法:某标記超過半數;
2.相對多數投票法:預測為得票最多的标記,若同時有多個标記的票最高,則從中随機選取一個。
3.權重投票法:提供了預測結果,與權重平均法類似。
-
學習法
1.先從初始資料集中訓練出初級學習器,然後“生成”一個新資料集用于訓練次級學習器。
2.在新資料集中,初級學習器的輸出被當做樣例輸入特征,初始樣本的标記仍被當做樣例标記。
1.5. 随機森林的思想
随機森林(Random Forest)算法原理
随機森林實際上是一種特殊的bagging方法,它将決策樹用作bagging中的模型。
- 首先,用自助法(bootstrap方法生成m個訓練集,
- 然後,對于每個訓練集,構造一顆決策樹,
- 在節點找特征進行分裂的時候,并不是對所有特征找到能使得名額(如資訊增益)最大的,
- 而是在特征中随機抽取一部分特征,在抽到的特征中間找到最優解,應用于節點,進行分裂。
随機森林的方法由于有了bagging(內建的思想)在,
- 實際上相當于對于樣本和特征都進行了采樣,是以可以避免過拟合。
- 如果把訓練資料看成矩陣,就像實際中常見的那樣,那麼就是一個行和列都進行采樣的過程
1.6. 随機森林的推廣
Bagging與随機森林算法原理小結
1.extra trees
2.Totally Random Trees Embedding
3.Isolation Forest
1.7. 随機森林的優缺點
- RF的主要優點有:
- 訓練可以高度并行化,對于大資料時代的大樣本訓練速度有優勢。個人覺得這是的最主要的優點。
- 由于可以随機選擇決策樹節點劃分特征,這樣在樣本特征次元很高的時候,仍然能高效的訓練模型。
- 在訓練後,可以給出各個特征對于輸出的重要性
- 由于采用了随機采樣,訓練出的模型的方差小,泛化能力強。
- 相對于Boosting系列的Adaboost和GBDT, RF實作比較簡單。
- 對部分特征缺失不敏感。
- RF的主要缺點有:
- 在某些噪音比較大的樣本集上,RF模型容易陷入過拟合。
- 取值劃分比較多的特征容易對RF的決策産生更大的影響,進而影響拟合的模型的效果。
1.8. 随機森林在sklearn中的參數解釋
- sklearn随機森林-分類參數詳解
- Python Sklearn庫中的随機森林分類 RandomForestClassifier
- 随機森林在sklearn中的實作
class sklearn.ensemble.RandomForestClassifier(
n_estimators=10, # 森林裡(決策)樹的數目
criterion='gini', # 衡量分裂品質的性能(函數)
max_depth=None, # (決策)樹的最大深度
min_samples_split=2, # 分割内部節點所需要的最小樣本數量
min_samples_leaf=1, # 需要在葉子結點上的最小樣本數量
min_weight_fraction_leaf=0.0, # 一個葉子節點所需要的權重總和(所有的輸入樣本)的最小權重分數
max_features=’auto’, # 尋找最佳分割時需要考慮的特征數目
max_leaf_nodes=None, # 葉子節點的數量閥值
min_impurity_decrease=0.0, # 節點分裂(不純度的下降程度)閥值
min_impurity_split=None, # 早停門檻值
bootstrap=True, # 是否使用有放回抽樣
oob_score=False, # 是否使用袋外樣本來估計泛化精
n_jobs=1, # 線程數
random_state=None, # 随機數生成器使用的種子
verbose=0, # 控制決策樹建立過程的備援度
warm_start=False, # 熱啟動
class_weight=None # 分類權重
)
1.9. 随機森林的應用場景
分類?多分類?
回歸?
有缺失值的樣本?