1. 程式人生 > >機器學習: 決策樹(Decision Tree)

機器學習: 決策樹(Decision Tree)

1. 理論

  1. 概述:

    決策樹的內部節點表示一個特徵或屬性,葉子節點表示一個類別。輸入一個新樣本,從根節點開始按照節點說示的特徵劃分,直到劃分到葉子節點,該葉子節點即為類別。

  2. 關於熵的基礎知識

    熵:定義式如下,衡量隨機變數X的不確定性,也可以用於衡量一個集合的混亂度。

    p(x=x|y=c)

    條件熵:H(Y|X)表示在已知隨機變數X的條件下隨機變數Y的不確定性,也可以理解為集合按照特徵X劃分以後的混亂度。

    p(x=x|y=c)

    資訊增益:表示在得知X的資訊而使得Y的資訊的不確定性減少的程度, 也就是按照特徵X劃分以後的混亂度。

    g(Y,X) = H(Y) - H(Y|X)

  3. 關於決策樹

    決策樹用好的話是一個很好的分類演算法,還可以歸納出一組劃分規則。但是決策樹對資料的預處理要求較高,最好能夠提前進行特徵降維,選取關鍵特徵。如果決策樹過擬合,還需要用剪枝演算法進行剪枝。當然,除了用熵,還有一個衡量集合混亂度的指標是基尼不純度(gini)

2. 演算法

  1. 學習演算法

    ID3演算法

    從根結點開始,對訓練集計算所有特徵的資訊增益,選取資訊增益最大的特徵作為該節點的分類特徵,按照該特徵劃分建立子節點。再對子節點遞迴呼叫以上步驟,知道所有特徵的資訊增益小於設定值e或者沒有特徵可以選取為止。決策樹構建完畢。
    

    C4.5演算法

    使用資訊增益劃分存在偏向於選擇取值較多特徵的問題。C4.5與ID3演算法相同,只是將資訊增益換成資訊增益比。
    
    gr(Y,X)=g(Y,X)/H(X)
    
  2. 剪枝演算法

    確定一個函式作為剪枝的指標(例如選用代價函式),嘗試將一組葉子節點退縮回到父節點,如果退回後的指標優於退回前,者進行退回。剪枝的演算法和指標很多,這裡不做討論。

3. 實現

  1. scikit-learn:

    示例:

        #Import Library
        #Import other necessary libraries like pandas, numpy...
        from sklearn import tree
        #Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset
        # Create tree object
        model = tree.DecisionTreeClassifier(criterion='gini'
    ) # for classification, here you can change the algorithm as gini or entropy (information gain) by default it is gini # model = tree.DecisionTreeRegressor() for regression # Train the model using the training sets and check score model.fit(X, y) model.score(X, y) #Predict Output predicted= model.predict(x_test)

4. 擴充套件

決策樹還有一個同根的演算法,稱為迴歸樹(CART),可以用來做迴歸。決策樹與迴歸樹的界限不是很明顯,有人經常把這兩個概念混用。我喜歡把用來分類的樹稱為決策樹,用於迴歸的樹稱做迴歸樹。

參考:

[1]《統計學習方法》 李航 2012年3月第一版
[2]《機器學習實戰》 Peter Harrington  

相關推薦

機器學習 決策Decision Tree

1. 理論 概述: 決策樹的內部節點表示一個特徵或屬性,葉子節點表示一個類別。輸入一個新樣本,從根節點開始按照節點說示的特徵劃分,直到劃分到葉子節點,該葉子節點即為類別。 關於熵的基礎知識 熵:

機器學習決策Decision Tree

本部落格參考鄒博機器學習課件以及李航的《統計學習方法》,僅用於督促自己學習使用,如有錯誤,歡迎大家提出更正 決策樹(decision tree)是一種基本的分類與迴歸方法。在分類問題中,它可以認為是if-then規則的集合,也可以認為是定義在特徵空間與

機器學習決策Decision Tree文字演算法的精確率

目錄 背景 效果圖 整體流程 這裡用詞向量,而不是TF-IDF預處理後的向量 原始碼 背景 最近的專案中,用到了很多機器學習的演算法,每個機器學習的演算法在不同的樣本下的精準率是不同的。為了驗證每個演算法在每種不同樣本數

機器學習決策Decision Tree及其Python程式碼實現

  決策樹是一個預測模型;他代表的是物件屬性與物件值之間的一種對映關係。樹中每個節點表示某個物件,而每個分叉路徑則代表的某個可能的屬性值,而每個葉結點則對應從根節點到該葉節點所經歷的路徑所表示的物

機器學習決策Decision Tree

Decision Tree 1. 決策樹 決策樹是機器學習中最接近人類思考問題的過程的一種演算法。通過若干個節點,對特徵進行提問並分類(可以是二分類也可以使多分類),直至最後生成

機器學習-決策decision tree

機器學習中分類和預測演算法的評估: 準確率 速度 強壯性(演算法中當有噪音和某些值缺失時,演算法能否依然很好) 可規模性 可解釋性(能否很好的解釋模型) 一、什麼是決策樹? 1、判定樹(決策樹)是一個類似於流程圖的樹結構,其中,每個內部節點表示在一個屬性上的

機器學習經典演算法詳解及Python實現--決策Decision Tree

(一)認識決策樹 1,決策樹分類原理 決策樹是通過一系列規則對資料進行分類的過程。它提供一種在什麼條件下會得到什麼值的類似規則的方法。決策樹分為分類樹和迴歸樹兩種,分類樹對離散變數做決策樹,迴歸樹對連續變數做決策樹。 近來的調查表明決策樹也是最經常使用的資料探勘演算法,它

機器學習教程之13-決策decision tree的sklearn實現

0.概述 決策樹(decision tree)是一種基本的分類與迴歸方法。 主要優點:模型具有可讀性,分類速度快。 決策樹學習通常包括3個步驟:特徵選擇、決策樹的生成和決策樹的修剪。 1.決策樹模型與學習 節點:根節點、子節點;內部節點(inter

機器學習決策基尼系數

try matplot 代碼實現 sci bubuko div tro 兩種 () 一、基礎理解  1)公式 k:數據集中樣本類型數量; Pi:第 i 類樣本的數量占總樣本數量的比例  2)實例計算基尼系數 3 種情況計算基尼系數: 基尼系數的性質與信息熵

Spark2 機器學習決策分類Decision tree classifier

show(10,truncate=false) +-------+------+----+------------+--------+-------------+---------+----------+------+ |affairs|gender|age |yearsmarried|children|re

決策Decision TreeSkLearn

true predict mat ray int lec pytho next() action #!/usr/bin/env python # -*- coding: utf-8 -*- from sklearn.feature_extraction import Di

決策decision tree

方法 生成算法 ogr np完全 信息熵 cti 標記 ges 樹形 決策樹是一種基本的分類和回歸方法。本章主要討論用於分類的決策樹,決策樹模型呈樹形結構,在分類問題中,表示基於特征對實例進行分類的過程,它可以認為是if-then規則的集合,也可以認為是定義在特征空間與類空

決策Decision Tree原理

範圍 思想 選擇 規則 是我 概念 而是 tree 個人 決策樹的思想在生活中很常見,其實就是根據條件去做決定,選擇最符合我們自己東西,例如買房子,我們要考慮的有城市/地段/是否有地鐵/開發商/戶型等等這些因數,這些因數在我們決策樹中就叫做特征,我們就是根據這些特

1.決策decision tree演算法ID3

0.機器學習中分類和預測演算法的評估: 準確率 速度 強壯性 可規模性  可解釋性 1.什麼是決策樹/判定樹(decision tree)? 1.1.判定書是一個類似於流程圖的樹結構:其中,每個內部結點表示在一個屬性上的測試,每個分支代表一個屬

決策decision tree演算法

*機器學習中分類和預測演算法的評估: 準確率 速度 強壯性 可規模性 可解釋性 1.什麼是決策樹/判定樹(decision tree)?        判定樹是一個類似於流程圖的樹結:其中,每個內部節點表示在一個屬性上的測試,每個分支代表一個屬性輸出,而每個樹葉節

決策decision tree——缺失值處理

接下來,繼續,對於結點{13},因為就一個樣本了,直接把該結點標記為葉結點,類別為“壞瓜”;遞迴到結點{7,8},因為樣本類別相同,所以也標記為葉結點,類別為“好瓜”;遞迴到結點“臍部=平坦”,因為這個結點不包含任何樣本為空集,因此,把該結點標記為葉結點,類別設定為父節點中多數類的類別,即為“好瓜”。因此“紋

【Machine learning】決策decision tree

三個問題: 怎樣選擇根節點 怎樣選擇後繼節點 什麼時候停止 (一顆決策樹=》一個分類準則=》一個模型) 基本的演算法: 對一開始提出來的三個問題進行解答: 1.選擇最優屬性 ID3: 最優屬性選擇資訊增益最大的屬性來作為最優屬性 設D為用

機器學習決策過擬合與剪枝,決策程式碼實現

文章目錄 楔子 變數 方法 資料預處理 剪枝 獲取待剪集: 針對ID3,C4.5的剪枝 損失函式的設計 基於該損失函式的演算法描述 基於該損失函式的程式碼實

機器學習演算法】提升Boosting tree

提升樹是以分類樹和迴歸樹為基本分類器的提升方法。提升樹被認為是統計學習中效能最好的方法之一。Boosting方法其實本質上採用的是加法模型(基函式的線性組合)與前向分佈演算法。以決策樹為基函式的Boosting方法被稱為提升樹(Boosting tree)。對分

機器學習決策cart演算法在分類與迴歸的應用

#include #include #include #include #include #include #include #include #include #include #include using namespace std; //置信水平取0.95時的卡方表 const double CHI