决策树

决策树是一种基于树形结构的机器学习算法,用于分类和回归。本文介绍了决策树的基础,包括熵、信息增益和基尼指数等概念,以及sklearn接口下的决策树模型。还详细讨论了CART算法,包括回归树和分类树的构建,以及剪枝方法,旨在避免过拟合问题。
摘要由CSDN通过智能技术生成

决策树

决策树是一种树型结构的机器学习算法,它每个节点验证数据一个属性,根据该属性进行分割数据,将数据分布到不同的分支上,直到叶子节点,叶子结点上表示该样本的label. 每一条从根节点到叶子节点的路径表示分类[回归]的规则.

sklearn 接口

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris, load_boston
from sklearn import tree
from sklearn.model_selection import train_test_split
# 分类树
X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
clf = tree.DecisionTreeClassifier()
clf = clf.fit(X_train, y_train)
print ("Classifier Score:", clf.score(X_test, y_test))
tree.plot_tree(clf.fit(X, y)) 
plt.show()

在这里插入图片描述

# 回归树
X, y = load_boston(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
clf = tree.DecisionTreeRegressor()
clf = clf.fit(X_train, y_train)

print ("Regression Score:", clf.score(X_test, y_test))
tree.plot_tree(clf.fit(X, y)) 
plt.show()

决策树详解

信息论基础

首先先来几个概念,我们后面介绍决策树原理的时候会提到,这里可以先扫一眼,用到的时候再回来看.

  1. 熵和信息熵

熵,热力学中表征物质状态的参量之一,用符号S表示,其物理意义是体系混乱程度的度量. 可以看出,熵表示的是体系的不确定性大小. 熵越大, 物理的不确定性越大. 1948年,香农提出了“信息熵”的概念,才解决了对信息的量化度量问题. 同理, 信息熵越小,数据的稳定性越好,我们更加相信此时数据得到的结论. 换言之, 我们现在目的肯定熵越小,机器学习得到的结果越准确.

信息熵表示随机变量不确定性的度量,设随机标量X是一个离散随机变量,其概率分布为:
P ( X = x i ) = p i , i = 1 , 2 , . . . , n P(X=x_i)=p_i, i=1,2,...,n P(X=xi)=pi,i=1,2,...,n
则随机变量X的熵定义为:
H ( X ) = − ∑ i = 1 n p i l o g p i H(X)=-\sum_{i=1}^{n}p_ilog{p_i} H(X)=i=1npilogpi
熵越大,随机变量的不确定性就越大,当 p i = 1 n p_i=\frac{1}{n} pi=n1时,
随机变量的熵最大等于logn,故 0 ≤ H ( P ) ≤ l o g n 0 \leq H(P) \leq logn 0H(P)logn.

  1. 条件熵

条件熵就是在给定X的条件的情况下,随机标量Y的条件,记作 H ( Y ∣ X ) H(Y|X) H(YX),可以结合贝叶斯公式进行理解,定义如下
H ( Y ∣ X ) = ∑ i = 1 n p i H ( Y ∣ X = x i ) H(Y|X)=\sum_{i=1}^{n}p_iH(Y|X=x_i) H(YX)=i=1npiH(YX=xi)
这里 p i = P ( X = x i ) , i = 1 , 2 , . . . , n p_i=P(X=x_i),i=1,2,...,n pi=P(X=xi),i=1,2,...,n.
一般在基于数据的估计中,我们使用的基于极大似然估计出来的经验熵和经验条件熵.

  1. 联合熵

联合熵是相对两个及其以上的变量而言的, 两个变量X和Y的联合信息熵为:

H ( X , Y ) = − ∑ x ∑ y P ( x , y ) l o g 2 [ P ( x , y ) ] H(X,Y)=-\sum_x \sum_y P(x,y)log_2[P(x,y)] H(X,Y)=xyP(x,y)log2[P(x,y)]

其中: x和y是X和Y的特定值, 相应地, 是这些值一起出现的联合概率, 若为0, 则定义为0.

对于两个以上的变量 X 1 , . . . , X n X_1,...,X_n X1,...,Xn,一般形式位:
H ( X 1 , . . . , X n ) = − ∑ x 1 ⋅ ⋅ ⋅ ∑ x n P ( x 1 , . . . , x n ) l o g 2 [ P ( x 1 , . . . , x n ) ] H(X_1,...,X_n)=-\sum_{x_1}\cdot \cdot \cdot\sum_{x_n}P(x1,...,x_n)log_2[P(x_1,...,x_n)] H(X1,...,Xn)=x1xnP(x1,...,xn)log2[P(x1,...,xn)]

性质:

  • 大于每个独立的熵
    H ( X , Y ) ≥ m a x ( H ( X ) , H ( Y ) ) H(X,Y) \geq max(H(X),H(Y)) H(X,Y)max(H(X),H(Y))
    H ( X 1 , . . . , X n ) ≥ m a x ( H ( X 1 ) , . . . , H ( X n ) ) H(X_1,...,X_n) \geq max(H(X_1),...,H(X_n)) H(X1,...,Xn)max(H(X1),...,H(Xn))
  • 小于独立熵的和
    H ( X 1 , . . . , X n ) ≤ s u m ( H ( X 1 ) , . . . , H ( X n ) ) H(X_1,...,X_n) \leq sum(H(X_1),...,H(X_n)) H(X1,...,Xn)sum(H(X1),...,H(Xn))
  • 和条件熵的关系
    H ( Y ∣ X ) = H ( X , Y ) − H ( X ) H(Y|X)=H(X,Y)-H(X) H(YX)=H(X,Y)H(X)
  • 和互信息的关系
    I ( Y ; X ) = H ( X ) + H ( Y ) − H ( X , Y ) = H ( Y ) − ( H ( X , Y ) − H ( X ) ) I(Y;X)=H(X)+H(Y)-H(X,Y)=H(Y)-(H(X,Y)-H(X)) I(Y;X)=H(X)+H(Y)H(X,Y)=H(Y)(H(X<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值