做者:櫻花豬算法
摘要:機器學習
本文爲七月算法(julyedu.com)12月機器學習第十一次次課在線筆記。隨機森林和提高都是機器學習將弱分類器融合成強分類器的方法。和咱們熟悉的另外一種機器學習模型SVM相比,這種方法更適合於大數據而且它的計算速度要比SVM快許多。函數
引言學習
由於最近作的事情須要用到隨機森林故很是仔細的看了一遍。結合我目前研究的圖像領域,彷佛隨機森林、Boosting這些比較受廣大研究者的熱愛,而曾經紅得半邊天的SVM再也不那麼主流。仔細一看,實際上隨機森林咱們能夠認爲是把SVM這種分類器屢次獲得的結果組合成起來成爲一個更加可信的估計,這種具備魯棒性的算法可能就是被廣大研究者喜好的緣由吧。然而,剛剛學習機器學習,這種總結也許不太正確,會再往後的深刻學習中加深印象。測試
本次課程從咱們熟悉的決策樹開始,而後咱們會談到Bagging策略,經過Bagging策略咱們再牽引到隨機森林和提高(boosting),最後咱們還會講一講投票策略。大數據
預備知識spa
熵;機率論.net
1、決策樹(Decision Tree)3d
一、概述:orm
決策樹是一種樹型結構,其中每一個內部結點表示在一個屬性上的測試,每一個分支表明一個測試輸出,每一個葉結點表明一種類別。決策樹學習是以實例爲基礎的概括學習。
二、基本思想
決策樹學習採用的是自頂向下的遞歸方法, 其基本思想是以信息熵爲度量構造一棵熵值降低最快的樹,到葉子節點處的熵值爲零,此時每一個葉節點中的實例都屬於同一類。
三、算法特色
決策樹學習算法的最大優勢是,它能夠自學習。在學習的過程當中,不須要使用者瞭解過多背景知識,只須要對訓練實例進行較好的標註,就可以進行學習。 顯然,決策樹屬於有監督學習。從一類無序、無規則的事物(概念)中推理出決策樹表示的分類規則。
4、生成算法
創建決策樹的關鍵,即在當前狀態下選擇哪一個屬性做爲分類依據。根據不一樣的目標函數,創建決策樹主要有一下三種算法。ID3、C4.5、CART
五、信息增益
概念:當熵和條件熵中的機率由數據估計(特別是極大似然估計)獲得時,所對應的熵和條件熵分別稱爲經驗熵和經驗條件熵。
信息增益表示得知特徵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的經驗熵
六、選擇分裂點的方法
遍歷全部特徵,對於特徵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指數越大,代表屬性 對樣本的熵減小的能力更強,這個屬性使得數據由不肯定性變成肯定性的能力越強
2、決策樹的擬合過程
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});
3、解決過擬合方法
一、剪枝
由徹底樹T0開始,剪枝部分結點獲得T1,再次剪枝部分結點獲得T2…直到僅剩樹根的樹Tk;
在驗證數據集上對這k個樹分別評價,選擇損失函數最小的樹Tα
二、隨機森林
n 從全部屬性中隨機選擇k個屬性,選擇最佳分割屬性做爲節點創建CART決策樹;
n 重複以上兩步m次,即創建了m棵CART決策樹
n這m個CART造成隨機森林,經過投票表決結果,決定數據屬於哪一類
Bootstrap採樣採用一種有放回重採樣方式,既假設有N個樣本,每次取一個樣本統計後再放回,重複n次。這種方法有時候會致使某些樣本取了不知一次而有些樣本一次也取不到。
4、提高
一、概念
提高是一個機器學習技術,能夠用於迴歸和分類問題,它每一步產生一個弱預測模型(如決策樹),並加權累加到總模型中;
2、梯度提高
如果每一步的弱預測模型生成都是依據損失函數的梯度方向,則稱之爲梯度提高(Gradient boosting)。
梯度提高算法首先給定一個目標損失函數,它的定義域是全部可行的弱函數集合(基函數);提高算法經過迭代的選擇一個負梯度方向上的基函數來逐漸逼近局部極小值。這種在函數域的梯度提高觀點對機器學習的不少領域有深入影響。
提高的理論意義:若是一個問題存在弱分類器,則能夠經過提高的辦法獲得強分類器。
三、Adaboost
AdaBoost算法能夠看作是採用指數損失函數的提高方法,其每一個基函數的學習算法爲前向分步算法;
AdaBoost的訓練偏差是以指數速率降低的;
AdaBoost算法不須要事先知道下界γ,具備自適應性(Adaptive),它能自適應弱分類器的訓練偏差率。
詳情請參考:http://blog.csdn.net/v_JULY_v/article/details/40718799