机器学习-算法学习笔记_2-决策树算法

机器学习-算法学习笔记_2-决策树算法

算法简介

决策树是一种常见的分类模型,在金融分控、医疗辅助诊断等诸多行业具有较为广泛的应用。决策树的核心思想是基于树结构对数据进行划分,这种思想是人类处理问题时的本能方法。例如在婚恋市场中,女方通常会先看男方是否有房产,如果有房产再看是否有车产,如果有车产再看是否有稳定工作……最后得出是否要深入了解的判断。

决策树的主要优点:

具有很好的解释性,模型可以生成可以理解的规则。
可以发现特征的重要程度。
模型的计算复杂度较低。
决策树的主要缺点:

模型容易过拟合,需要采用减枝技术处理。
不能很好利用连续型特征。
预测能力有限,无法达到其他强监督模型效果。
方差较高,数据分布的轻微改变很容易造成树结构完全不同。

原理相关

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.

2、条件熵
条件熵就是在给定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. 一般在基于数据的估计中,我们使用的基于极大似然估计出来的经验熵和经验条件熵.

3、联合熵
联合熵是相对两个及其以上的变量而言的, 两个变量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,Y)H(X))
4、信息增益
信息增益又叫互信息,它表示的是在的得知特征X的信息后,使得类Y的信息的不确定性(熵)减少的程度. g ( Y , X ) = H ( Y ) − H ( Y ∣ X ) g(Y,X)=H(Y)-H(Y|X) g(Y,X)=H(Y)H(YX)

5、基尼指数
基尼指数又称基尼系数或者基尼不纯度,基尼系数是指国际上通用的、用以衡量一个国家或地区居民收入差距的常用指标. 在信息学中,例如分类问题, 假设有K个类,样本点属于第k类的概率是 p k p_k pk,则该概率分布的基尼指数定义为: G i n i ( p ) = ∑ k K p k ( 1 − p k ) = 1 − ∑ k K p k 2 Gini(p)=\sum_k^Kp_k(1-p_k)=1-\sum_k^Kp_k^2 Gini(p)=kKpk(1pk)=1kKpk2

代码实现

#1、库函数导入
##  基础函数库
import numpy as np 

## 导入画图库
import matplotlib.pyplot as plt
import seaborn as sns

## 导入决策树模型函数
from sklearn.tree import DecisionTreeClassifier
from sklearn import tree

#2 训练模型
##Demo演示LogisticRegression分类

## 构造数据集
x_fearures = np.array([[-1, -2], [-2, -1], [-3, -2], [1, 3], [2, 1], [3, 2]])
y_label = np.array([0, 1, 0, 1, 0, 1])

## 调用决策树模型
tree_clf = DecisionTreeClassifier()

## 用决策树模型拟合构造的数据集
tree_clf = tree_clf.fit(x_fearures, y_label)


#3、数据与模型可视化
## 可视化构造的数据样本点
plt.figure()
plt.scatter(x_fearures[:,0],x_fearures[:,1], c=y_label, s=50, cmap='viridis')
plt.title('Dataset')
plt.show()

## 本段代码实际效果为本地生成PDF可视化文档,在体验过程中可以不运行,可能无法正常展示结果;
## 代码生成的可视化结果会截图展示实际效果
!pip install graphviz 
import graphviz
dot_data = tree.export_graphviz(tree_clf, out_file=None)
graph = graphviz.Source(dot_data)
graph.render("pengunis")
## 'pengunis.pdf'


以上仅为初学者学习备注,如果有不对的地方,欢迎指出,大家一起讨论,共同成长,谢谢~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值