【机器学习】通过ID3,C4.5,CART算法构建决策树

本文详细介绍了决策树的三种构造方法:ID3算法基于信息增益,C4.5算法采用信息增益率避免偏好取值多的特征,CART算法则使用基尼指数。通过比较,展示了不同算法在训练模型精度上的差异,C4.5算法表现最优。

(一)、决策树的简介

决策树(decision tree)是一种基本的分类与回归方法。决策树模型呈树形结构,在分类问题中,表示基于特征对实例进行分类的过程。它可以认为是if-then规则的集合,也可以认为是定义在特征空间与类空间上的条件概率分布。其主要优点是模型具有可读性,分类速度快。学习时,利用训练数据,根据损失函数最小化的原则建立决策树模型。预测时,对新的数据,利用决策树模型进行分类。决策树学习通常包括3个步骤:特征选择、决策树的生成和决策树的修剪。这些决策树学习的思想主要来源于由Quinlan在1986年提出的ID3算法和1993年提出的C4.5算法,以及由Breiman等人在1984年提出的CART算法。

决策树是一种树形结构,其中每个内部节点表示一个属性上的测试,每个分支代表一个测试输出,每个叶节点代表一种类别。决策树是一种十分常用的分类回归方法

简单来说决策树就是一棵树,其中跟节点和内部节点是输入特征的判定条件,叶子结点就是最终结果。

优点:计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关特征数据。
缺点:可能会产生过度

(二)、构造决策树的三种构造方法

1.基于信息增益生成决策树(ID3算法)

信息增益是相对于特征而言的,信息增益越大,特征对最终的分类结果影响也就越大,我们就应该选择对最终分类结果影响最大的那个特征作为我们的分类特征。
提到信息增益必须先解释一下什么是“信息熵”,因为信息增益是基于信息熵而定义的。
信息熵的公式定义:
在这里插入图片描述
D:表示当前的数据集合。
k:表示当前数据集合中的第k类,也就是我们目标变量的类型。
这里根据公式算法得出一个数据集的信息熵

def calcShannonEnt(dataSet): 
    numEntries = len(dataSet)
    labelCounts = {
   
   }
    for featVec in dataSet:
        currentLabel = featVec[-1]
        if currentLabel not in labelCounts.keys():
            labelCounts[currentLabel] = 0
        labelCounts[currentLabel] += 1
    shannonEnt = 0.0
    for key in labelCounts:
        prob = float(labelCounts[key]) / numEntries
        shannonEnt -= prob * log(prob, 2)
    return shannonEnt

在这里插入图片描述
信息增益公式:在这里插入图片描述
这里通过ID3算法选择信息增益最大的特征,结果返回信息增益的最大索引。

def splitdataSet(dataSet, axis, value):  # 分类数据
    retdataSet = []
    for featVec in dataSet:
        if featVec[axis] == value:
            reducedFeatVec = featVec[:axis]
            reducedFeatVec.extend(featVec[axis + 1:])
            # 去掉对应位置的特征
            retdataSet.append(reducedFeatVec)
    return retdataSet

def chooseBestFeatureToSplit(dataSet):  
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

打代码能当饭吃?

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值