目錄
四、決策樹id3演算法流程
五、決策樹id3演算法優缺點
六、小結
人工智慧從入門到放棄完整教程目錄:
決策樹(decision tree)是一種基本的分類與回歸方法,同時由於自身是弱分類器特別適合整合學習,例如隨機森林、xgboost。
資訊增益
決策樹id3演算法流程
決策樹id3演算法優缺點
假設銀行需要構造乙個徵信系統用來發放貸款,如果你是構建該系統的人,你會如何構建該系統呢?
我說說我將如何構建乙個銀行的徵信系統,首先,我會判斷徵信人的年收入有沒有50萬,如果有我直接判定他可以貸款,如果沒有我會再做其他的判斷;其次,判斷徵信人有沒有房產,如果有房產也就是說他有了可以抵押的不動產,既可以判定他可以貸款,如果沒有,則不能貸款……
上述整個過程其實就是決策樹實現的乙個過程,接下來將從理論層面抽象的講解三種形式的決策樹。
如上一節的徵信系統構建一樣,決策樹id3演算法的思想其實很簡單,當你在使用\(if\ldots\ldots\)敲**的時候其實就是在使用決策樹的思想,但是你有沒有想過把哪個判斷條件放在\(if\)上回更好,是先判斷年收入還是先判斷有沒有房產呢?其實在2023年的時候就有一位叫昆蘭的大牛使用資訊理論上熵的概念來思考過這個問題,並在此基礎上使用資訊增益這個概念構建了決策樹決策的過程。
具體的方法是:從根節點開始,計算所有可能特徵的資訊增益,選擇資訊增益最大的特徵作為根節點的特徵,由該特徵的不同特徵值作為不同的子節點;再對子節點遞迴呼叫上述方法,構建決策樹;直到所有特徵的資訊增益都很小或者沒有特徵可以選擇為止,最後得到一顆完整的決策樹\(t\)。
上述方法構建的決策樹則會如上圖所示類似於演算法中的二叉樹,但是需要注意的是id3演算法的決策樹是多叉樹,並且決策樹的各個節點使用資訊增益選擇特徵,然後遞迴構建決策樹。
在《熵與資訊增益》一文中提到:熵\(h(x)\)度量了隨機變數\(x\)的不確定性;條件熵\(h(y|x)\)度量了知道\(x\)以後\(y\)剩下的不確定性;\(h(x)-h(x|y)\)度量了\(y\)在知道\(x\)之後不確定性的減少程度,這個度量記作\(g(y,x)\),並且在決策樹id3演算法中稱為資訊增益。
從此處可以看出,資訊增益越大的特徵,\(y\)在知道\(x\)之後不確定性的減少程度會越大,因此更適合用來分類。
假設現有乙個訓練集\(d\),特徵集\(a\),閾值\(\epsilon\)。
id3演算法決策樹。
初始化資訊增益的閾值\(\epsilon\)
如果\(d\)中的所有樣本都屬於同一類\(c_k\),則返回單節點樹\(t\),標記類別為\(c_k\)
如果\(a\)為空集,則返回單節點樹\(t\),標記類別為\(d\)中樣本數最大的類\(c_k\)
計算\(a\)中各個特徵對輸出\(d\)的資訊增益,選擇資訊增益最大的\(a_g\)
如果\(a_g\)小於閾值\(\epsilon\),則返回單節點數\(t\),標記類別為\(d\)中樣本數最大的類\(c_k\)
如果\(a_g\)大於閾值\(\epsilon\),則按照特徵\(a_g\)的不同取值\(a_\)把\(d\)分割成若干個子集\(d_i\),每個子集生成乙個子節點,子節點對應特徵值為\(a_\),遞迴呼叫\(2-6\)步,得到子樹\(t_i\)並返回
理論清晰,方法簡單
學習能力強
沒有考慮到特徵連續值的情況,即如人的身高、體重都是連續值,無法在id3演算法中應用,即id3演算法更適合做分類
以資訊增益作為劃分訓練資料集的特徵,存在於偏向於選擇取值較多的特徵的問題。因為相同條件下,取值比較多的特徵的資訊增益大於取值較少的特徵
沒有考慮過擬合問題
沒有考慮特徵中含有缺失值的情況
決策樹id3演算法是最原始的決策樹演算法,由於它較好的解釋型在當時也是火了一段時間。但是他的缺點也是特別明顯的,樹深度大了則容易過擬合,並且無法處理回歸問題,無法處理連續值的問題等等一系列問題。
決策樹 ID3演算法
id3演算法通過計算每個屬性的資訊增益,認為資訊增益越大屬性越優,每次劃分選取資訊增益最大的屬性為劃分標準,重複這個過程,直到構成一棵決策樹。資訊熵是描述事件給我們的驚訝程度,如果所有事件的概率均等,那熵值大,驚訝程度低。如果有一事件的概率極高而其他極低,熵值便低,驚訝程度大。其計算公式如下 資訊增...
決策樹 ID3演算法
一 決策樹基本概念 在機器學習中,決策樹是乙個 模型,它代表的是物件屬性與物件值之間的一種對映關係。本質上決策樹是通 過一系列規則對資料進行分類的過程。下圖為經典決策樹例項。如圖所示,例項是由 屬性 值 對表示的 例項是用一系列固定的屬性和他們的值構成。目標函式具有離散的輸出值 上圖給每個例項賦予乙...
決策樹ID3演算法
typeerror dict keys object does not support indexing 9.typeerror dict keys object does not support indexing 這個問題是python版本的問題 如果使用的是python2 firststr my...