隨機森林和提升
作者:櫻花豬
摘要:
本文為七月算法(julyedu.com)12月機器學習第十一次次課在線筆記。隨機森林和提升都是機器學習將弱分類器融合成強分類器的方法。和我們熟悉的另一種機器學習模型SVM相比,這種方法更適合於大數據並且它的計算速度要比SVM快許多。
引言
因為最近做的事情需要用到隨機森林故非常仔細的看了一遍。結合我目前研究的圖像領域,似乎隨機森林、Boosting這些比較受廣大研究者的熱愛,而曾經紅得半邊天的SVM不再那么主流。仔細一看,實際上隨機森林我們可以認為是把SVM這種分類器多次得到的結果組合成起來成為一個更加可信的估計,這種具有魯棒性的算法可能就是被廣大研究者喜愛的原因吧。然而,剛剛學習機器學習,這種總結也許不太正確,會再日后的深入學習中加深印象。
本次課程從我們熟悉的決策樹開始,然后我們會談到Bagging策略,通過Bagging策略我們再牽引到隨機森林和提升(boosting),最后我們還會講一講投票策略。
預備知識
熵;概率論
一、決策樹(Decision Tree)
1、概述:
決策樹是一種樹型結構,其中每個內部結點表示在一個屬性上的測試,每個分支代表一個測試輸出,每個葉結點代表一種類別。決策樹學習是以實例為基礎的歸納學習。
2、基本思想
決策樹學習采用的是自頂向下的遞歸方法, 其基本思想是以信息熵為度量構造一棵熵值下降最快的樹,到葉子節點處的熵值為零,此時每個葉節點中的實例都屬於同一類。
3、算法特點
決策樹學習算法的最大優點是,它可以自學習。在學習的過程中,不需要使用者了解過多背景知識,只需要對訓練實例進行較好的標注,就能夠進行學習。 顯然,決策樹屬於有監督學習。從一類無序、無規則的事物(概念)中推理出決策樹表示的分類規則。
4、生成算法
建立決策樹的關鍵,即在當前狀態下選擇哪個屬性作為分類依據。根據不同的目標函數,建立決策樹主要有一下三種算法。ID3、C4.5、CART
5、信息增益
概念:當熵和條件熵中的概率由數據估計(特別是極大似然估計)得到時,所對應的熵和條件熵分別稱為經驗熵和經驗條件熵。
信息增益表示得知特征A的信息而使得類X的信息的不確定性減少的程度。
定義:特征A對訓練數據集D的信息增益g(D,A),定義為集合D的經驗熵H(D)與特征A給定條件下D 的經驗條件熵H(D|A)之差,即: g(D,A)=H(D)–H(D|A) (即為訓練數據集D和特征A的互信息)
計算方法:計算數據集D的經驗熵

6、選擇分裂點的方法
遍歷所有特征,對於特征A:
a. 計算特征A對數據集D的經驗條件熵H(D|A)
b. 計算特征A的信息增益:g(D,A)=H(D)–H(D|A)
c. 選擇信息增益最大的特征作為當前的分裂特征
注意:經驗條件熵

(設訓練集為D,|D|表示樣本的個數。設有K個類
,
為屬於類
的樣本個數;設特診A有n個不同的取值
,根據特征A的取值將D划分為n個子集
,
為樣本個數。記子集
中屬於類
的樣本集合為
,
為樣本個數。)
7、三種決策樹學習算法
ID3:使用信息增益/互信息g(D,A)進行特征選擇。
C4.5:信息增益率 gr(D,A) = g(D,A) / H(A)。
CART:基尼指數![]()
一個屬性的信息增益(率)/gini指數越大,表明屬性 對樣本的熵減少的能力更強,這個屬性使得數據由不確定性變成確定性的能力越強
二、決策樹的擬合過程
If 所有樣本屬於同一分類 then 返回標號為概分類的葉結點
Else if 屬性值為空 then 返回標號為最普通分類的葉結點
Else 取一個屬性,A作為根節點;
For A的每一個可能值Vi
令examples i 為具有A=Vi的樣本子集;
從根節點出發增加分支(A=Vi);
If examples i為空 then 創建標號為最普通分類的葉結點
Else
遞歸創建子樹DTree(examples i, attributes-{A});
三、解決過擬合方法
1、剪枝
由完全樹T0開始,剪枝部分結點得到T1,再次剪枝部分結點得到T2…直到僅剩樹根的樹Tk;
在驗證數據集上對這k個樹分別評價,選擇損失函數最小的樹Tα
2、隨機森林
n 從所有屬性中隨機選擇k個屬性,選擇最佳分割屬性作為節點建立CART決策樹;
n 重復以上兩步m次,即建立了m棵CART決策樹
n這m個CART形成隨機森林,通過投票表決結果,決定數據屬於哪一類
Bootstrap采樣采用一種有放回重采樣方式,既假設有N個樣本,每次取一個樣本統計后再放回,重復n次。這種方法有時候會導致某些樣本取了不知一次而有些樣本一次也取不到。
四、提升
1、概念
提升是一個機器學習技術,可以用於回歸和分類問題,它每一步產生一個弱預測模型(如決策樹),並加權累加到總模型中;
2、梯度提升
如果每一步的弱預測模型生成都是依據損失函數的梯度方向,則稱之為梯度提升(Gradient boosting)。
梯度提升算法首先給定一個目標損失函數,它的定義域是所有可行的弱函數集合(基函數);提升算法通過迭代的選擇一個負梯度方向上的基函數來逐漸逼近局部極小值。這種在函數域的梯度提升觀點對機器學習的很多領域有深刻影響。
提升的理論意義:如果一個問題存在弱分類器,則可以通過提升的辦法得到強分類器。
3、Adaboost
AdaBoost算法可以看做是采用指數損失函數的提升方法,其每個基函數的學習算法為前向分步算法;
AdaBoost的訓練誤差是以指數速率下降的;
AdaBoost算法不需要事先知道下界γ,具有自適應性(Adaptive),它能自適應弱分類器的訓練誤差率。
詳情請參考:http://blog.csdn.net/v_JULY_v/article/details/40718799
