1. 程式人生 > >利用AdaBoost元演算法提高分類效能

利用AdaBoost元演算法提高分類效能

一、元演算法

元演算法是對其他演算法進行組合的一種方式。我們自然可以將不同的分類器組合起來,而這種組合結果則被稱為整合演算法或者元演算法。
整合學習的結果通過投票法產生,即“少數服從多數”
在這裡插入圖片描述
從這個例子中得出:要獲得好的整合,個體學習器應“好而不同”,即個體學習器要有一定的“準確性”,即學習器不能太壞,並且要有“多樣性”,即學習器間具有差異。
整合學習適用於機器學習的幾乎所有領域:迴歸,分類,推薦,排序
整合學習的的流程圖:
Training data表示訓練集,data表示資料集,learning表示學習演算法,model表示學習之後生成的模型,最後組合模型

整合學習的關鍵步驟:

如何構建不同的基學習器?

  1. 採用不同的學習演算法,但使用相同的訓練集。如stacking
    在這裡插入圖片描述
    2.採用相同的演算法,但使用不同的引數
    在這裡插入圖片描述

    3.採用相同的學習演算法,但使用不同的訓練集
    在這裡插入圖片描述
    如何將基學習器結合起來
    1.投票法,比如bagging
    2.有權重的投票, 比如boosting
    3.訓練一個新模型來確定如何綜合,比如stacking

二、Boosting

Boosting是基於所有分類器加權求和的方法。boosting中最流行的是AdaBoost。
AdaBoost的操作步驟為:
(1)首先,是初始化訓練資料的權值分佈D1。假設有N個訓練樣本資料,則每一個訓練樣本最開始時,都被賦予相同的權值:w1=1/N。
(2)然後,訓練弱分類器hi。具體訓練過程中是:如果某個訓練樣本點,被弱分類器hi準確地分類,那麼在構造下一個訓練集中,它對應的權值要減小;相反,如果某個訓練樣本點被錯誤分類,那麼它的權值就應該增大。權值更新過的樣本集被用於訓練下一個分類器,整個訓練過程如此迭代地進行下去。
在這裡插入圖片描述


α表示分類器的權重
在這裡插入圖片描述
如果樣本被正確分類,那麼該樣本的權重更改為:
在這裡插入圖片描述
如果樣本被錯誤分類,那麼該樣本的權重更改為:
在這裡插入圖片描述
(3)最後,將各個訓練得到的弱分類器組合成一個強分類器。各個弱分類器的訓練過程結束後,加大分類誤差率小的弱分類器的權重,使其在最終的分類函式中起著較大的決定作用,而降低分類誤差率大的弱分類器的權重,使其在最終的分類函式中起著較小的決定作用。
在這裡插入圖片描述

三、Bagging與隨機森林

bagging是基於資料隨機重抽樣分類器構造的方法
自舉匯聚法(bootstrap aggregating),也稱為bagging方法,是在從原始資料集選擇S次後得到S個新資料集的一種技術。新資料集和原資料集的大小相等。每個資料集都是通過在原始資料集中隨機選擇一個樣本來進行替換而得到的。這裡的替換就意味著可以多次地選擇同一樣本。這一性質就允許新資料集中可以有重複的值,而原始資料集的某些值在新集合中則不再出現。
bagging中比較著名的就是隨機森林演算法,他與bagging不同的是,bagging中的演算法可以是多樣的,但是隨機森林就是使用決策樹演算法。
在這裡插入圖片描述


隨機森林有兩個特徵:
1.資料的隨機化:就是指資料集是隨機取樣的
2.待選特徵的隨機化:這裡我們就可以看到隨機森林與決策樹的區別了
在這裡插入圖片描述
傳統決策樹在選擇劃分屬性時是在當前結點的屬性集合中選擇一個最優屬性;而在隨機森林中,對基決策樹的每個結點,先從該結點的屬性集合中隨機選擇一個包含k個屬性的子集,然後再從這個子集中選擇一個最優屬性用於劃分。
K控制了隨機性的引入程度,一般的在這裡插入圖片描述
d表示當前的屬性集合