決策樹和隨機森林

隨機森林和GBDT算法的基礎是決策樹

而建立決策樹的算法由很多,ID3,C4.5,CART等,

  • ID3:
    ID3算法的基本流程是:首先找出最有判別力的屬性,把樣例分成多個子集,每個子集又選擇最有判別力的屬性進行劃分,一直進行到所有子集僅包含同一類型的數據為止。最后得到一棵決策樹。
    而這個最有判別力的就是信息增益,我們用熵(entropy)這個概念來表示數據的不確定性

其中P(Ui)即是P(ui)是類別i出現概率,而計算整個屬性的信息增益則是:

具體表示為代碼:

''' 數據是一組特征值加一個lable'''
def entropy(class_probabilities):
    return sum(-p * math.log(p, 2)
        for p in class_probabilities 
        if p)

def class_probabilities(labels):
    total_count = len(labels)
    return [count / total_count
        for count in Counter(labels).values()
        ]

def data_entropy(labeled_data):        
    labels = [label for _, label in labeled_data]
    probabilities = class_probabilities(labels)
    return entropy(probabilities)

def partition_entropy(subsets):
    """find the entropy from this partition of data into subsets""" 
    total_count = sum(len(subset) for subset in subsets)
    return sum( data_entropy(subset) * len(subset) / total_count
                for subset in subsets )

然后根據取數據的信息增益最大的作為數的root節點,將其他屬性進行分支,若該分支中存在不同lable,則遞歸計算最大信息增益。

c4.5是ID3的一種改進,既能處理標稱型數據,又能連續型數據。為了處理連續型數據,該算法在相應的節點使用一個屬性的閾值,利用閾值將樣本劃分成兩部分,還有就是可以處理缺失某屬性的數據,屬性值缺失的樣本在計算熵增益時被忽略。再就是分類完成后進行剪枝。

不同于c4.5和ID3:

  • CART本質是對特征空間進行二元劃分
  • 剪枝:在CART過程中第二個關鍵的思想是用獨立的驗證數據集對訓練集生長的樹進行剪枝。

隨機森林

隨機森林是一種統計學習理論,其隨機有兩個方面:首先在訓練的每一輪中,都是對原始樣本集有放回的抽取固定數目的樣本點,形成k 個互不相同的樣本集。第二個點是:對于每一個決策樹的建立是從總的屬性中隨機抽取一定量的屬性作為分裂屬性集,這樣對于k個樹分類器均是不相同的。由隨機生成的k個決策樹組成了隨機森林。

對于每一個決策樹來說,其分裂屬性是不斷地選取具有最大信息增益的屬性進行排列。整個隨機森林建立后,最終的分類標準采用投票機制得到可能性最高的結果。

隨機森林是一個最近比較火的算法,它有很多的優點

  • 在數據集上表現良好
  • 在當前的很多數據集上,相對其他算法有著很大的優勢
  • 它能夠處理很高維度(feature很多)的數據,并且不用做特征選擇
  • 在訓練完后,它能夠給出哪些feature比較重要
  • 在創建隨機森林的時候,對generlization error使用的是無偏估計
  • 訓練速度快
  • 在訓練過程中,能夠檢測到feature間的互相影響
  • 容易做成并行化方法
    我們采用sklearn的RandomForestClassifier實際例子在我的上一篇文章中

在建立每一棵決策樹的過程中,有兩點需要注意 - 采樣與完全分裂。首先是兩個隨機采樣的過程,random forest對輸入的數據要進行行、列的采樣。對于行采樣,采用有放回的方式,也就是在采樣得到的樣本集合中,可能有重復的樣本。假設輸入樣本為N個,那么采樣的樣本也為N個。這樣使得在訓練的時候,每一棵樹的輸入樣本都不是全部的樣本,使得相對不容易出現over-fitting。然后進行列采樣,從M個feature中,選擇m個(m << M)。之后就是對采樣之后的數據使用完全分裂的方式建立出決策樹,這樣決策樹的某一個葉子節點要么是無法繼續分裂的,要么里面的所有樣本的都是指向的同一個分類。一般很多的決策樹算法都一個重要的步驟 - 剪枝,但是這里不這樣干,由于之前的兩個隨機采樣的過程保證了隨機性,所以就算不剪枝,也不會出現over-fitting。
按這種算法得到的隨機森林中的每一棵都是很弱的,但是大家組合起來就很厲害了。我覺得可以這樣比喻隨機森林算法:每一棵決策樹就是一個精通于某一個窄領域的專家(因為我們從M個feature中選擇m讓每一棵決策樹進行學習),這樣在隨機森林中就有了很多個精通不同領域的專家,對一個新的問題(新的輸入數據),可以用不同的角度去看待它,最終由各個專家,投票(vote)得到結果。
需要注意的是,隨機森林中的單個決策樹是沒有意義的

GBDT

GBRT(Gradient Boost Regression Tree)是一個應用很廣泛的算法,可以用來做分類、回歸。在很多的數據上都有不錯的效果。我們下次接著共同學習。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,698評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,202評論 3 426
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,742評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,580評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,297評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,688評論 1 327
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,693評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,875評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,438評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,183評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,384評論 1 372
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,931評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,612評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,022評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,297評論 1 292
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,093評論 3 397
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,330評論 2 377

推薦閱讀更多精彩內容