機器學習: 決策樹(Decision Tree)
1. 理論
概述:
決策樹的內部節點表示一個特徵或屬性,葉子節點表示一個類別。輸入一個新樣本,從根節點開始按照節點說示的特徵劃分,直到劃分到葉子節點,該葉子節點即為類別。
關於熵的基礎知識
熵:定義式如下,衡量隨機變數X的不確定性,也可以用於衡量一個集合的混亂度。
條件熵:H(Y|X)表示在已知隨機變數X的條件下隨機變數Y的不確定性,也可以理解為集合按照特徵X劃分以後的混亂度。
資訊增益:表示在得知X的資訊而使得Y的資訊的不確定性減少的程度, 也就是按照特徵X劃分以後的混亂度。
g(Y,X) = H(Y) - H(Y|X)
關於決策樹
決策樹用好的話是一個很好的分類演算法,還可以歸納出一組劃分規則。但是決策樹對資料的預處理要求較高,最好能夠提前進行特徵降維,選取關鍵特徵。如果決策樹過擬合,還需要用剪枝演算法進行剪枝。當然,除了用熵,還有一個衡量集合混亂度的指標是基尼不純度(gini)
2. 演算法
學習演算法
ID3演算法
從根結點開始,對訓練集計算所有特徵的資訊增益,選取資訊增益最大的特徵作為該節點的分類特徵,按照該特徵劃分建立子節點。再對子節點遞迴呼叫以上步驟,知道所有特徵的資訊增益小於設定值e或者沒有特徵可以選取為止。決策樹構建完畢。
C4.5演算法
使用資訊增益劃分存在偏向於選擇取值較多特徵的問題。C4.5與ID3演算法相同,只是將資訊增益換成資訊增益比。 gr(Y,X)=g(Y,X)/H(X)
剪枝演算法
確定一個函式作為剪枝的指標(例如選用代價函式),嘗試將一組葉子節點退縮回到父節點,如果退回後的指標優於退回前,者進行退回。剪枝的演算法和指標很多,這裡不做討論。
3. 實現
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'
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 Tree)SkLearn
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