决策树算法

决策树是一种树型结构,其中每个内部结点表示在一个属性上的测试,每个分支代表一个测试输出,每个叶结点代表一种类别。决策树学习是以实例为基础的归纳学习,采用的是自顶向下的递归方法,其基本思想是以信息熵为度量构造一棵熵值下降最快的树,到叶子结点处的熵值为零,此时每个叶节点中的实例都属于同一类。决策树学习算法的最大优点是,它可以自学习。在学习的过程中,不需要使用者了解过多背景知识,只需要对训练实例进行较好的标注,就能够进行学习。

我们看一个有趣的例子,下面是一位女士准备去相亲时根据男方的条件选择见或不见的决策树示意图:
这里写图片描述

从上图可以看出该女士首先选择年龄这个属性作为分类依据,年龄大于30岁的直接不见,不超过30岁的再看相貌这个属性,如果丑就不见,如果帅或中等的话再看收入…… 直到最终可以判定所有实例的类别。

建立决策树的关键就是在当前状态下选择哪个属性作为分类依据,因此要选择适当的目标函数。目标函数可以选择信息增益信息增益率基尼系数,分别对应ID3C4.5CART这三种决策树学习算法。下面分别介绍:

1. ID3:

ID3算法是以信息增益作为其特征选择的目标函数的。当熵和条件熵中的概率由数据估计(特别是极大似然估计)得到时,所对应的熵和条件熵分别称为经验熵和经验条件熵。特征A对训练数据D的信息增益g(D,A)定义为:数据集D的经验熵H(D)与特征A给定条件下数据集D的经验条件熵H(D|A)之差,即g(D,A) = H(D) - H(D|A)。信息增益表示得知特征A的信息而使得数据集D的分类的不确定性减少的程度。
下面详述信息增益的计算方法
设训练数据集为D,|D|表示其样本个数。设有K个类 Ck k=1,2,3,...,K |Ck| 为属于类 Ck 的样本个数,显然有 Kk=1|Ck|=|D| 。设特征A有 n 个不同的取值{a1,a2,a3,...,an},根据A的取值将数据集D划分为 n 个子集D1,D2,D3,...,Dn |Di| 表示子集 Di 的样本个数,显然也有 ni=1|Di|=|D| 。子集 Di 中属于类 Ck 的样本的集合记为 Dik |Dik| Dik 的样本的个数。

(1)计算数据集D的经验熵:

H(D)=k=1K|Ck||D|log|Ck||D|

(2)计算特征A对数据集D的经验条件熵:

H(D|A)=i=1nk=1Kp(Dk,Ai)logp(Dk|Ai)=i=1nk=1Kp(Ai)p(Dk|Ai)logp(Dk|Ai)=i=1np(Ai)k=1Kp(Dk|Ai)logp(Dk|Ai)=i=1n|Di||D|k=1K|Dik||Di|log|Dik||Di|

(3)计算信息增益:

g(D,A)=H(D)H(D|A)

根据信息增益的特征选择方法是对训练数据集(或子集)D,计算每个特征的信息增益,选择信息增益最大的特征做为当前状态下的分类依据。

ID3算法的过程如下:
输入:训练数据集 D ,特征集A,阈值 ϵ
输出:决策树 T
① 若D中所有实例属于同一类 Ck ,则 T 为单结点树,并将类Ck作为该结点的类标记,返回 T
② 若A为空,则 T 为单结点树,并将D中实例数最大的类 Ck 作为该结点的类标记,返回 T
③ 否则,计算各特征A1,A2,... D 的信息增益,选择信息增益最大的特征Am
④ 如果 Am 的信息增益小于阈值 ϵ ,则置 T 为单节点树,并将D中实例数最大的类 Ck 作为该结点的类标记,返回 T
⑤ 否则,对Am的每一个可能值 ai ,依 Am=ai D 分割为若干非空子集Di,将 Di 中实例数最大的类作为标记,构建子结点,由结点及其子结点构成树 T ,返回T
⑥ 对第 i 个子结点,以Di为训练集,以 A -{Am}为特征集,递归调用步骤①~⑤,得到子树 Ti ,返回 Ti

2. C4.5:

在使用信息增益 g(D,A) 进行特征选择时,取值多的属性更容易使数据更纯,其信息增益更大,训练得到的是一棵庞大且深度浅的数,这样是不合理的。因此用信息增益率对这一问题进行校正。C4.5算法正是以信息增益率作为其特征选择的目标函数的。
信息增益比为:

gR(D,A)=g(D,A)HA(D)

其中, g(D,A) 为信息增益, HA(D) 为训练数据集D关于特征A的值的熵,
HA(D)=i=1n|Di||D|log|Di||D|
n 是特征A取值的个数。
C4.5算法和ID3算法类似,只是把特征选择目标函数换成信息增益率,其算法过程参照ID3。

3. CART:

CART算法是以基尼系数作为其特征选择的目标函数的。
在分类问题中,假设由K个类,样本点属于第k类的概率为 pk ,则概率分布的基尼系数定义为:

Gini(p)=k=1Kpk(1pk)=1k=1Kp2k=1k=1K(|Ck||D|)2
与ID3算法和C4.5算法有所不同的是,CART算法是要选择基尼系数最小的特征做为当前状态下的分类依据。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Python中,有多种可用的决策树算法。其中一种常用的算法是基于ID3(Iterative Dichotomiser 3)的决策树算法。该算法通过选择最大信息增益的特征来进行节点划分。另一种常用的算法是CART(Classification and Regression Trees),它使用基尼系数或均方差来进行节点划分。 决策树算法可以应用于分类问题和回归问题。对于分类问题,决策树算法可以根据特征将数据集划分为不同的类别。对于回归问题,决策树算法可以根据特征预测数值型的输出。 下面是一个使用Python中的决策树算法构建决策树的示例代码: ```python from sklearn import tree # 创建特征矩阵 X = [[0, 0], [1, 1]] # 创建目标向量 y = [0, 1] # 创建决策树分类器 clf = tree.DecisionTreeClassifier() # 使用训练数据拟合分类器模型 clf = clf.fit(X, y) # 进行预测 prediction = clf.predict([[2., 2.]]) ``` 这段代码使用了scikit-learn库中的决策树分类器。首先,我们创建了一个特征矩阵X和一个目标向量y作为训练数据。然后,我们创建了一个决策树分类器clf,并使用训练数据拟合分类器模型。最后,我们使用训练好的模型进行预测。 决策树算法的优缺点如下所示: 优点: - 算法具有可解释性,可以生成可视化的决策树模型。 - 可以处理数值型和类别型的数据。 - 对缺失值和异常值具有较好的鲁棒性。 - 算法学习过程中不需要用户了解过多的背景知识。 缺点: - 容易过拟合,特别是在处理复杂数据集时。 - 对于连续型特征,可能会产生过多的分裂点,导致决策树过于复杂。 - 对于不平衡的数据集,可能会导致决策树出现偏差。 希望这些信息能够帮助到您!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值