机器学习——三种决策树及python代码实现

本文介绍了决策树中的关键概念,如信息增益、信息熵和基尼指数。通过实际例子演示了如何计算信息增益并应用在特征选择中。作者以《机器学习:公式推导与代码实践》中的内容为依托,深入浅出地展示了决策树模型的构建过程。
摘要由CSDN通过智能技术生成

《机器学习:公式推导与代码实践》鲁伟著读书笔记。
决策树(Decision tree)是一种最基础的机器学习方法。决策树的原理是基于特征对数据实例按照条件不同进行不断划分,最终达到分类或者回归的目的。决策树模型的核心概念包括:特征选择方法、决策树构造过程和决策树剪枝。

特征选择

特征选择从本质上讲就是依据训练集数据从多个特征中选取出具有分类能力的特征。通常情况下,在决策树模型中,我们有三种方式来选取最优特征:信息增益、信息增益比和基尼指数。

信息增益

为了更好地解释信息增益的概念,我们需要引入**信息熵(Information entropy)**概念。假设当前样本数据集D中第k个类所占比例为 p k , k = 1 , 2 , . . . , n p_{k},k=1,2,...,n pk,k=1,2,...,n,其中n为类别个数那么样本数据集的熵可以定义为: E ( D ) = − ∑ k = 1 n p k l o g ( p k ) E(D)=-\sum_{k=1}^{n}p_{k}log(p_{k}) E(D)=k=1npklog(pk)信息熵越低,样本不确定性越小,相应的纯度就越高。
假设离散随机变量(X,Y)的联合概率分布为: P ( X = x i , Y = y j ) = p i j , i = 1 , 2 , . . . , m ; j = 1 , 2 , . . . , n P(X=x_{i},Y=y_{j})=p_{ij} ,i=1,2,...,m;j=1,2,...,n P(X=xi,Y=yj)=pij,i=1,2,...,m;j=1,2,...,n条件熵 E ( Y ∣ X ) E(Y|X) E(YX)表示在已知随机变量X的条件下Y的不确定性的度量。 E ( Y ∣ X ) E(Y|X) E(YX)可以定义为在给定X的条件下,Y的条件概率分布的熵对X的数学期望。条件熵可以表示为: E ( Y ∣ X ) = ∑ i = 1 m p i E ( Y ∣ X = x i ) E(Y|X)=\sum_{i=1}^{m}p_{i}E(Y|X=x_{i}) E(YX)=i=1mpiE(YX=xi)其中 p i = P ( X = x i ) , i = 1 , 2 , . . . , m p_{i}=P(X=x_{i}),i=1,2,...,m pi=P(X=xi),i=1,2,...,m E ( Y ∣ X = x i ) E(Y|X=x_{i}) E(YX=xi)为在 X = x i X=x_{i} X=xi的大前提下,Y事件的信息熵。
信息增益定义如下:由于得到特征X的信息而使得类Y的信息不确定性减小的程度。即信息增益是一种描述特征X对特征Y确定性的影响量。特征的信息增益越大,代表对应的特征分类能力越强。在经典决策树中,ID3算法便是基于信息增益进行特征选取的。
假设训练集D的经验熵为E(D),给定特征A的条件下,D的经验条件熵为E(D|A),信息增益可以定义为经验熵E(D)与经验条件熵E(D|A)之差。信息增益的公式如下:
g ( D ∣ A ) = E ( D ) − E ( D ∣ A ) g(D|A)=E(D)-E(D|A) g(DA)=E(D)E(DA)eg1:
表1 是否打高尔夫

95

计算该数据集的经验熵:
E ( 是 否 打 高 尔 夫 ) = E ( 5 , 9 ) = E ( 5 14 , 9 14 ) = − 5 14 × l o g 2 ( 5 14 ) − 9 14 × l o g 2 ( 9 14 ) E(是否打高尔夫)=E(5,9)=E(\frac {5}{14},\frac {9}{14})=-\frac {5}{14}\times log_{2}(\frac {5}{14})-\frac {9}{14}\times log_{2}(\frac {9}{14}) E()=E(5,9)=E(145,149)=145×log2(145)149×log2(149)我们给出在天气这个特征的前提下,是否打高尔夫球的情况。
表2 不同天气下是否打高尔夫的情况统计

天气总计
235
404
325
总计14

计算在不同天气条件下的条件熵: E ( 是 否 打 高 尔 夫 ∣ 天 气 ) = p ( 晴 ) × E ( 2 , 3 ) + p ( 阴 ) × E ( 4 , 0 ) + p ( 雨 ) × E ( 3 , 2 ) = 5 14 × E ( 2 5 , 3 5 ) + 4 14 × E ( 1 , 0 ) + 5 14 × E ( 3 5 , 2 5 ) = 5 14 × ( − 2 5 × l o g 2 ( 2 5 ) − 3 5 × l o g 2 ( 3 5 ) ) + 4 14 × ( − 1 × l o g 2 ( 1 ) − 0 × l o g 2 ( 0 ) ) + 5 14 × ( − 3 5 × l o g 2 ( 3 5 ) − 2 5 × l o g 2 ( 2 5 ) ) = 5 14 × 0.97 + 4 14 × 0 + 5 14 × 0.97 = 0.69 E(是否打高尔夫|天气)=p(晴)\times E(2,3)+p(阴)\times E(4,0)+p(雨)\times E(3,2)=\frac {5}{14}\times E(\frac {2}{5},\frac {3}{5})+\frac {4}{14}\times E(1,0)+\frac {5}{14}\times E(\frac {3}{5},\frac {2}{5})=\frac {5}{14}\times (-\frac {2}{5}\times log_{2}(\frac {2}{5})-\frac {3}{5}\times log_{2}(\frac {3}{5}))+\frac {4}{14}\times (-1\times log_{2}(1)-0\times log_{2}(0))+\frac {5}{14}\times (-\frac {3}{5}\times log_{2}(\frac {3}{5})-\frac {2}{5}\times log_{2}(\frac {2}{5}))=\frac {5}{14}\times 0.97+\frac {4}{14}\times 0+\frac {5}{14}\times 0.97=0.69 E()=p()×E(2,3)+p()×E(4,0)+p()×E(3,2)=145×E(52,53)+144×E(1,0)+145×E(53,52)=145×(52×log2(52)53×log2(53))+144×(1×log2(1)0×log2(0))+145×(53×log2(53)52×log2(52))=145×0.97+144×0+145×0.97=0.69
天气特征的信息增益为:
g ( 是 否 打 高 尔 夫 ∣ 天 气 ) = E ( 是 否 打 高 尔 夫 ) − E ( 是 否 打 高 尔 夫 ∣ 天 气 ) = 0.94 − 0.69 = 0.25 g(是否打高尔夫|天气)=E(是否打高尔夫)-E(是否打高尔夫|天气) =0.94-0.69=0.25 g()=E()E()=0.940.69=0.25eg2:
计算下图的信息增益:
决策树案例
父辈信息熵为: E ( P a r e n t ) = E ( 70 , 30 ) = E ( 7 10 , 3 10 ) = − 7 10 × l o g 2 ( 7 10 ) − 3 10 × l o g 2 ( 3 10 ) = 0.88129 E(Parent)=E(70,30)=E(\frac {7}{10},\frac {3}{10})=-\frac {7}{10}\times log_{2}(\frac {7}{10})-\frac {3}{10}\times log_{2}(\frac {3}{10})=0.88129 E(Parent)=E(70,30)=E(107,103)=107×log2(107)103×log2(103)=0.88129子辈的条件熵为: E ( P a r e n t ∣ C h i l d ) = p ( C h i l d 1 ) × E ( 50 , 20 ) + p ( C h i l d 2 ) × E ( 20 , 10 ) = 7 10 × E ( 5 7 , 2 7 ) + 3 10 × E ( 2 3 , 1 3 ) = 7 10 × ( − 5 7 × l o g 2 ( 5 7 ) − 2 7 × l o g 2 ( 2 7 ) ) + 3 10 × ( − 2 3 × l o g 2 ( 2 3 ) − 1 3 × l o g 2 ( 1 3 ) ) = 0.87967 E(Parent|Child)=p(Child1)\times E(50,20)+p(Child2)\times E(20,10)=\frac {7}{10}\times E(\frac {5}{7},\frac {2}{7})+\frac {3}{10}\times E(\frac {2}{3},\frac {1}{3})=\frac {7}{10}\times (-\frac {5}{7}\times log_{2}(\frac {5}{7})-\frac {2}{7}\times log_{2}(\frac {2}{7}))+\frac {3}{10}\times (-\frac {2}{3}\times log_{2}(\frac {2}{3})-\frac {1}{3}\times log_{2}(\frac {1}{3}))=0.87967 E(ParentChild)=p(Child1)×E(50,20)+p(Child2)×E(20,10)=107×E(75,72)+103×E(32,31)=107×(75×log2(75)72×log2(72))+103×(32×log2(32)31×log2(31))=0.87967 g ( P a r e n t ∣ C h i l d ) = E ( P a r e n t ) − E ( P a r e n t ∣ C h i l d ) = 0.00162 g(Parent|Child)=E(Parent)-E(Parent|Child) =0.00162 g(ParentChild)=E(Parent)E(ParentChild)=0.00162
信息增益的python实现如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值