在機器學習演算法中,最初始人們用決策樹
可以說是思路最自然的乙個門派了。也正因為思路自然,所以門派內部根據不同的問題,不斷細化,形成了多種分支。比較出名的,有
id3
,c4.5
,cart
等。這幾種決策樹演算法,在之後的文章中都會說明。本文中,我們首先了解一下決策樹的基本資訊。
決策樹
來輔助決策,用機器學習的行話來說,即用來做分類。那麼,自然就屬於監督學習
的範疇了。
決策樹最開始只能處理離散值的特徵。後來,隨著研究的深入,人們發現來處理連續值特徵也沒有問題;進而甚至可以用來做回歸問題。於是,決策樹演算法便一步一步的變身為「全能」型的演算法了。
決策樹的演算法種類雖然多,但是基本都是根據訓練(即決策樹構建)方法的不同劃分的。而在實際使用時,所有的樹
都是一模一樣的推理方法。
紅樓銀行的新員工林黛玉,接到一組貸款申請,她的工作是判斷是否應該批准這些貸款申請。客戶的資料如下:
姓名時代
家產年齡
趙雲三國
5萬兩28
賈寶玉清朝
100萬兩
20李逵
北宋50兩
35賈雨村
清朝1000兩
47黛玉手裡,有一套審批流程,銀行通過該流程(下圖)來判斷是否應該發放貸款。下圖所表示的結構,即是一棵決策樹
。
從上面的例子中可以發現,決策樹不就是一堆if-else
規則的巢狀嗎?是的,實際上的確是這樣。
決策樹演算法,本質上是將乙個複雜的大問題,不斷地拆分為更小粒度但更簡單的子問題,直至最終解決。決策樹是一種以計算量換難度的方法
。這就類似分段函式。在擬合一條複雜的曲線時,雖然很難顯式地寫出乙個整體表示式,但是利用合理的分段,在每一段上甚至可以用線性函式很好地擬合。
\雖然決策樹演算法已經 「很老」 了,但是由於近年kaggle等競賽上xgboost等所謂「神器」的興起,決策樹也跟著沾光煥發第二春了。
其實,決策樹演算法還是有一些自己獨特的東西的。比如,可解釋性強(一堆if-then
);比如,天然支援多分類(如果你了解svm的多分類是多麼不美,估計會對我這句話感同身受……)。
不過,要從樣本集自動構建出一棵決策樹,並不是乙個顯而易見的問題。這個演算法,看起來應該是用遞迴來描述比較合適,但細節也很多。比如,根節點為什麼選擇時代
而不是家產
?
另外,非葉子節點分叉的條件如何確定呢?
試想一下,如果林妹妹想給寶玉哥哥開個後門,將決策樹中第三層的年齡
分叉條件從24歲改到18歲,我們有什麼理由說她不對呢?顯然,靠人的經驗說不清楚,必須有定量的科學描述,來證明18歲不可以。
帶著這些問題,進入後面的章節,就能對決策樹演算法有更加深刻和系統性的認識。
本節完。
機器學習系列之決策樹
最近想把每個機器學習的演算法,重新學習一遍。最好能自己編寫一遍,但是一方面程式設計能力欠缺,另一方面時間有限。所以大本分 都是跟著別人的技術部落格,照葫蘆畫瓢。無論是程式設計能力,還是機器學習演算法,都有待進一步提公升。請注意下面的 不完整,完整 請參照下面分享的大牛的技術部落格。usr bin e...
機器學習之決策樹1
好久沒來寫過部落格了,最近忙一些個人的事情終於有一點空閒的時間了,所以決定還是繼續自己喜歡的東西,已經把python的基礎都學得差不多了 雖說有三個月不用我現在又忘得差不多了 然後又看了看方向,感覺還是直接上機器學習比較好 ruby了,高數線代什麼的,邊看邊學再補課吧,要不然需要補得太多,我怕自己看...
機器學習筆記(1) 決策樹
機器學習中分類和 演算法的評估 準確率速度 強壯性可規模型 可解釋性 決策樹決策樹是乙個類似於流程圖的結構 節點表示判斷,將連續變數離散化,規定閾值歸類 資訊熵 變數的的不確定性越大,熵也就越大 計算公式 p x 為單個事件的概率 決策樹歸納演算法 id3 選擇屬性判斷結點 資訊獲取量 inform...