[TOC] 更新、更全的《機器學習》的更新網站,更有python、go、數據結構與算法、爬蟲、人工智能教學等着你:<a target="_blank" href="https://www.cnblogs.com/nickchen121/p/11686958.html">http://www.javashuo.com/article/p-vozphyqp-cm.html</a>html
決策樹(decision tree)是一種基本的分類與迴歸方法,同時因爲自身是弱分類器特別適合集成學習,例如隨機森林、XgBoost。python
本文將經過ID3算法帶你們入門決策樹,以後會另寫文章談談C4.5算法和CART分類迴歸樹。算法
假設銀行須要構造一個徵信系統用來發放貸款,若是你是構建該系統的人,你會如何構建該系統呢?數據結構
我說說我將如何構建一個銀行的徵信系統,首先,我會判斷徵信人的年收入有沒有50萬,若是有我直接斷定他能夠貸款,若是沒有我會再作其餘的判斷;其次,判斷徵信人有沒有房產,若是有房產也就是說他有了能夠抵押的不動產,既能夠斷定他能夠貸款,若是沒有,則不能貸款……機器學習
上述整個過程其實就是決策樹實現的一個過程,接下來將從理論層面抽象的講解三種形式的決策樹。學習
如上一節的徵信系統構建同樣,決策樹ID3算法的思想其實很簡單,當你在使用$if\ldots{elif}\ldots{else}$敲代碼的時候其實就是在使用決策樹的思想,可是你有沒有想過把哪一個判斷條件放在$if$上回更好,是先判斷年收入仍是先判斷有沒有房產呢?其實在1970年的時候就有一位叫昆蘭的大牛使用信息論上熵的概念來思考過這個問題,並在此基礎上使用信息增益這個概念構建了決策樹決策的過程。網站
具體的方法是:從根節點開始,計算全部可能特徵的信息增益,選擇信息增益最大的特徵做爲根節點的特徵,由該特徵的不一樣特徵值做爲不一樣的子節點;再對子節點遞歸調用上述方法,構建決策樹;直到全部特徵的信息增益都很小或者沒有特徵能夠選擇爲止,最後獲得一顆完整的決策樹$T$。人工智能
上述方法構建的決策樹則會如上圖所示相似於算法中的二叉樹,可是須要注意的是ID3算法的決策樹是多叉樹,而且決策樹的各個節點使用信息增益選擇特徵,而後遞歸構建決策樹。spa
在《熵與信息增益》一文中提到:熵$H(X)$度量了隨機變量$X$的不肯定性;條件熵$H(Y|X)$度量了知道$X$之後$Y$剩下的不肯定性;$H(X)-H(X|Y)$度量了$Y$在知道$X$以後不肯定性的減小程度,這個度量記做$g(Y,X)$,而且在決策樹ID3算法中稱爲信息增益。htm
今後處能夠看出,信息增益越大的特徵,$Y$在知道$X$以後不肯定性的減小程度會越大,所以更適合用來分類。
假設現有一個訓練集$D$,特徵集$A$,閾值$\epsilon$。
ID3算法決策樹。
決策樹ID3算法是最原始的決策樹算法,因爲它較好的解釋型在當時也是火了一段時間。可是他的缺點也是特別明顯的,樹深度大了則容易過擬合,而且沒法處理迴歸問題,沒法處理連續值的問題等等一系列問題。
決策樹ID3算法因爲它自身的缺陷目前已較少使用,也由於這些缺點有了咱們下一篇要介紹的算法——決策樹C4.5算法。