決策樹演算法梳理

2021-09-08 03:05:29 字數 2828 閱讀 7012

熵(entropy):在資訊理論與概率統計中,熵(entropy)是表示隨機變數不確定性的度量。設x是乙個取有限個值的離散隨機變數,其概率分布為

則隨機變數x的熵定義為

熵只依賴於x的分布,而與x的取值無關,所以也可將x的熵記作h§,即

熵取值最大,隨機變數不確定性最大。

條件熵

設有隨機變數(x,y),其聯合概率分布為

條件熵h(y|x)表示在已知隨機變數x的條件下隨機變數y的不確定性。隨機變數x給定的條件下隨機變數y的條件熵(conditional entropy)h(y|x),定義為x給定條件下y的條件概率分布的熵對x的數學期望

資訊增益

特徵a對訓練資料集d的資訊增益g(d,a),定義為集合d的經驗熵h(d)與特徵a給定條件下d的經驗條件熵h(d|a)之差,即

一般地,熵h(y)與條件熵h(y|x)之差稱為互資訊(mutual information)。決策樹學習中的資訊增益等價於訓練資料集中類與特徵的互資訊。

聯合熵

兩個變數x和y的聯合資訊熵定義為:

基尼不純度:將來自集合的某種結果隨機應用於某一資料項的預期誤差率。

(1)基尼不純度可以作為 衡量系統混亂程度的 標準;

(2)基尼不純度越小,純度越高,集合的有序程度越高,分類的效果越好;

(3)基尼不純度為 0 時,表示集合類別一致;

(4)在決策樹中,比較基尼不純度的大小可以選擇更好的決策條件(子節點)。

熵和基尼不純度之間的主要區別在於,熵達到峰值的過程要相對慢一些。

因此,熵對於混亂集合的判罰要更重一些。

假設x與y分別為輸入和輸出變數,並且y是連續變數,給定訓練資料集

乙個回歸樹對應著輸入空間(即特徵空間)的乙個劃分以及在劃分的單元上的輸出值。假設已將輸入空間劃分為m個單元,並且在每個單元上有乙個固定的輸出值,於是回歸樹模型可表示為

當輸入空間的劃分確定時,可以用平方誤差

來表示回歸樹對於訓練資料的**誤差,用平方誤差最小的準則求解每個單元上的最優輸出值。

在進行空間劃分時採用啟發式方法,定義兩個區域:

然後尋找切分變數j和最優切分點s,求解:

對固定輸入變數j可以找到最優切分點s。

遍歷所有輸入變數,找到最優的切分變數j,構成乙個對(j,s)。依此將輸入空間劃分為兩個區域。接著,對每個區域重複上述劃分過程,直到滿足停止條件為止。這樣就生成一棵回歸樹。這樣的回歸樹通常稱為最小二乘回歸樹(least squares regression tree)

cart剪枝演算法從「完全生長」的決策樹的底端剪去一些子樹,使決策樹變小(模型變簡單),從而能夠對未知資料有更準確的**。

分類樹模型:採用通用的分類模型評估指標

回歸樹模型:採用通用的回歸模型評估指標

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

%matplotlib inline

from sklearn.datasets import load_iris

from sklearn.model_selection import train_test_split

from collections import counter

import math

from math import log

import pprint

# data

defcreate_data()

: iris = load_iris(

) df = pd.dataframe(iris.data, columns=iris.feature_names)

df['label'

]= iris.target

df.columns =

['sepal length'

,'sepal width'

,'petal length'

,'petal width'

,'label'

] data = np.array(df.iloc[

:100,[

0,1,

-1]]

)# print(data)

return data[:,

:2], data[:,

-1]x, y = create_data(

)x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=

0.3)

from sklearn.tree import decisiontreeclassifier

from sklearn.tree import export_graphviz

import graphviz

clf = decisiontreeclassifier(

)clf.fit(x_train, y_train,

)clf.score(x_test, y_test)

tree_pic = export_graphviz(clf, out_file=

"mytree.pdf"

)with

open

('mytree.pdf'

)as f:

dot_graph = f.read(

)graphviz.source(dot_graph)

決策樹演算法梳理

熵 又稱為自資訊,度量隨機變數的不確定性。純度 聯合熵 聯合熵是描述一對隨機變數平均所需要的資訊量 條件熵 h y x 表示在已知隨機變數 x 的條件下,隨機變數 y 的不確定性 資訊增益 以某特徵劃分資料集前後的熵的差值 基尼不純度 指將來自集合中的某種結果隨機應用在集合中,某一資料項的預期誤差率...

決策樹演算法梳理

1.資訊理論基礎 資訊熵 資訊熵是度量樣本的集合純度最常用的一種指標。在資訊理論和概率統計中,熵是表示隨機變數不確定性的度量。聯合熵 兩個隨機變數x,y的聯合分布,可以形成聯合熵joint entropy,用h x,y 表示。條件熵 設有隨機變數 x,y 其聯合概率分布為 條件熵h y x 表示在已...

決策樹演算法梳理

決策樹通常包括三個步驟 特徵選擇,決策樹生成和決策樹剪枝 決策樹的生成過程就是 使用滿足劃分準則的特徵不斷的將資料集劃分為純度更高,不確定性更小的子集的過程。id3 採用資訊增益劃分資料。計算使用所有特徵劃分資料集,得到多個特徵劃分資料集的資訊增益,從這些資訊增益中選擇最大的,因而當前結點的劃分特徵...