机器学习之算法决策树(分类)——通过例子说明信息熵的计算方法

决策树采用的是信息熵或者Gini系数来作为分类标准。
信息熵公式:在这里插入图片描述
Gini系数公式:在这里插入图片描述
一般构造一个分类器(sklearn.tree.DecisionTreeClassifier),默认参数criterion有{“gini”, “entropy”}, 其中default=”gini”。这两个计算公式不一样而已。

我在这里计算的是信息熵的公式,另外的一个也都一样,换一个公式而已。

我们在提到概率问题的时候都会有一个前提假设,假设这些变量或者特征都是相互之间没有关系的,就不会存在组合的情况,不然就没办法计算概率了
信息熵它是用来描述信息的紊乱程度,也就是不确定度。当所有数据都是一种类别的时候,他的紊乱度为0,也就是信息熵为0.信息熵可以大于1,通过公式可以看出,这里的log是以2为底。

比如有一组数据(1,1,1,1,0,0,0,0),四个1四个0,他的信息熵是多少?
通过公式我们先计算1出现概率为1/2,那么有  -1/2*(log(1/2)),
再计算0出现概率为1/2,那么有  -1/2*(log(1/2))。接着把他们求和就是-1.这就是这组数的信息熵。
如果是[1,1,1,1,2,2,2,2,3,3,3,3]也是一样的计算方法:
-1/3 * log(1/3) -1/3 * log(1/3) -1/3 * log(1/3)
有几个种类就计算几次,求和即可。

当我们用决策树对数据进行分类的时候,因为他基于CART算法,所以是一个二叉树。

CART(分类树和回归树)与C4.5非常相似,但是区别在于它支持数字目标变量(回归)并且不计算规则集。CART使用在每个节点处产生最大信息增益的特征和阈值构造二叉树。

可以看出我们分类的时候就是找到这个能够有最大信息增益的阈值,最大信息增益就是上一次的信息熵减去分类后的信息熵,也就是找出分类后信息熵最小化的那个阈值。那么怎么找到这个值呢?当然要一个一个试。因为就算是人都不会一眼就看出来,更别说计算机了。

我们一鸢尾花的数据为例,因为这个我们很熟悉

import numpy as np
from sklearn.tree import DecisionTreeClassifier
import sklearn.datasets as datasets
iris = datasets.load_iris()
# 我们使用全部的数据进行计算。因为我们主要不是为了做预测
X = iris["data"]
y = iris["target"]
# 构造分类器,使用entropy,也就是信息熵计算分类
clf = DecisionTreeClassifier(criterion="entropy")
clf.fit(X,y)

这时候其实决策树已经分好了。因为决策树是可以被看见的。我们把他到处到PDF文件。

from sklearn import tree
# graphviz要pip 另外还得去官网下载一个安装文件配一下环境变量
import graphviz

g = tree.export_graphviz(clf,out_file=None,filled=True)
graph = graphviz.Source
  • 4
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 《机器学习》西瓜书是机器学习领域的一本经典教材,其中的决策树算法机器学习中的一种重要分类算法决策树算法可以用于决策问题,将问题分解成多个子问题,通过构造决策树来递归地进行分类决策树算法的构建过程可以分为两个步骤,即特征选择和决策树生成。在特征选择过程中,需要根据某个评估指标对不同特征进行排序,选择最优的特征作为节点进行分割。常用的评估指标包括信息增益、信息增益比和基尼系数等。在决策树生成过程中,需要递归地生成决策树的各个节点,通过特征选择将训练样本不断划分成子集,并为每个子集生成一个新的节点,直到满足停止条件。 决策树算法具有易理解、易实现的特点,同时对部分异常数据具有一定的鲁棒性。但是,在处理高维数据或特征较多的数据集时,决策树算法可能会存在过拟合等问题。为了解决这些问题,可以使用剪枝算法、随机森林等方法进行优化和改进。 在实际应用中,决策树算法被广泛应用于数据挖掘、信用评估、医学诊断、文本分类等领域。在学习和应用决策树算法时,需要注意特征选择和决策树生成的各种细节和算法选择,以及如何利用决策树算法解决实际问题。 ### 回答2: 《机器学习》这本西瓜书是机器学习领域的经典教材之一,其中涉及了决策树算法决策树是一种基于树形结构的分类方法,可以用于处理离散型和连续型数据集。使用决策树算法建立模型的过程,可以理解为递归地将数据切割成小的子集,使得每个子集的纯度尽可能地提高,最终生成一棵有序的树型结构。 决策树算法的训练过程,通常分为三个步骤:选择最优特征、建立决策树以及剪枝。其中选择最优特征的目的是在当前样本集合中,找到对样本分类最有帮助的特征,通过衡量每个特征的信息增益或信息增益比,选出最优特征作为节点。根据节点特征将数据集分成若干互斥的子集,然后递归地对子集进行划分,生成决策树。最后,通过剪枝减少决策树的复杂度和泛化误差,得到最终的模型。 决策树算法在实际应用中具有很高的灵活性和可解释性,相对简单的分类问题中具有很好的性能。但是,当数据集过大或过于复杂时,决策树算法的计算复杂度会显著增加,生成的决策树容易过拟合,泛化能力较差。因此,在进行模型训练时需要进行特征选择、代码优化以及剪枝等操作。 ### 回答3: 决策树机器学习中一种常用的算法,它采用树状结构来进行分类和预测。在《机器学习》西瓜书中,决策树被归为监督学习中的分类算法决策树算法的主要思想是将数据按照特征属性分为不同的类别。决策树有三个关键的概念:节点、分支、叶子节点。节点包括根节点、内部节点和叶子节点。根节点代表数据集,内部节点表示特征属性,叶子节点代表不同的数据类别。 在决策树算法中,有两种常用的构建方式:ID3算法和C4.5算法。这里我们简要介绍一下C4.5算法。C4.5算法决策树算法中的一种改进算法,它不仅考虑了信息熵,还考虑了各个特征属性之间的相关性,从而提高了决策树算法的准确率。 C4.5算法主要分为三个步骤:特征选择、决策树的生成和决策树的剪枝。在特征选择阶段,C4.5算法采用信息增益比来选择最优划分属性。在决策树的生成阶段,C4.5算法采用递归方法,依次生成决策树的各个节点。在决策树的剪枝阶段,C4.5算法通过比较剪枝前后的错误率来确定是否进行剪枝。 总的来说,决策树算法是一种简单且常用的分类算法,它不仅易于理解和解释,还具有较高的分类准确率。当然,在实际应用中,我们需要根据实际情况选择合适的决策树算法,并对模型进行调参和优化,提高算法的性能和实用性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值