《机器学习实战》第三章:决策树(1)基本概念

1. CH2-kNN(1)        
2. CH2-kNN(2)
3. CH2-kNN(3)
4. CH3-决策树(1)    
5. CH3-决策树(2)
6. CH3-决策树(3)
7. CH4-朴素贝叶斯(1)
8. CH4-朴素贝叶斯(2)
9. CH5-Logistic回归(1)
10. CH5-Logistic回归(2)
======== No More ========

 

决策树(Decision Tree)

(1)是个基本的【分类】算法。

(2)基本思想:决策树是一种树结构,其中的每个内部节点代表对某一特征的一次测试,每条边代表一个测试结果,叶节点代表某个类类的分布。决策树的决策过程需要从决策树的根节点开始,待测数据与决策树中的特征节点进行比较,并按照比较结果选择选择下一比较分支,直到叶子节点作为最终的决策结果。

(3)举个例子吧:

比如,两个同班同学A和B,玩一个游戏。A头脑中想着班上的一个同学,让B来猜是谁。B可以不断地通过向A提问,来逐渐缩小猜测范围,比如“这个人是男生还是女生”,“这个人身高是160以下,是160-170,是170-180,还是180以上”,“这个人有没拿过国家奖学金”等等,直到剩下一个或很有限个几个候选人。

嗯...这个过程其实类似于决策树的决策过程,也就是拿到一条待分类的数据,给他进行分类:从决策树的根节点开始,按照一定顺序验证这条数据的特征。在每个特征节点上,按照该数据特征值对应的分类,顺着决策树的边,进入下一层节点,直到到达叶节点,得到最终的决策结果(即标签)。例如...有一家贷款机构拿到了一个人的个人信息(可能是信息泄露了),然后想根据下面这棵决策树,判断这个人有没贷款意向,从而决定要不要给他打骚扰电话:

决策树的构造过程,其实就是他的“机器学习过程”,也就是机器根据数据集创建规则的过程。什么规则?就是在树的每一个节点上,究竟该选择哪一个数据属性,来把这个节点中的数据集分开呢?比如上面那个猜同学的游戏,是先问“性别”,还是先问“身高”,才能达到缩小猜测范围的最佳效果呢?

等下会介绍。

(4)优点:复杂度不高

 缺点:可能会产生过度匹配的问题

 适用数据类型:离散型连续型。

------------------------------------------------------------------------------------------------

信息增益(Information Gain)、熵(Entropy)

回到刚才那个问题,在决策树的每个节点上,究竟是选择哪个特征来把这个节点里的数据集划分开呢?

划分数据集的大原则是:将无序的数据变得更加有序。

那么,怎样度量数据有序还是无序?一种方法就是使用信息论来度量。

在划分数据集之前之后,信息发生的变化称为信息增益。我们希望计算出每个特征值划分数据集获得的信息增益。那么,信息增益最高的特征就是最好的选择。坠吼滴!

对于一个数据集合而言,信息的度量方式称为香农熵,或简称为。熵越大,说明数据集越混乱、越无序。一个数据集合,再划分前、划分后,熵的变化,就是信息增益了。信息增益越大,说明数据集合划分之后,有序程度的增加量越大。

那么怎样计算熵呢?定义为信息的期望值。如果待分类的事务可能划分在多个分类之中,假设 Xi是其中的一个类则符号 Xi 信息定义为:

其中,p(Xi) 是选择该分类的概率。

为了计算熵,我们需要计算所有类别的所有可能值所包含的信息期望值:

其中,n是分类的数目。

还是来举个栗子:

这个例子取自于《数据挖掘:概念与技术》。前4列:age(年龄)、income(收入)、student(是否是学生)、credit_rating(信用评级)是特征值。最后一列:buys_computer(是否买电脑)是分类(也就是标签)。

这里有14条数据,他们现在处于同一个节点之中,我们先用4个特征中的某一个,来划分它们。先算当前没划分时的熵:

根据最后一列的标签,这对数据有两个分类:yes / no。这14条数据里,有9条的分类是yes,5条是no。那么按上面的公式计算,当前数据集合的熵就是0.940。

接下来,我们看看按照4种特征划分这个数据集合后,熵变成了多少。

首先是age(年龄)。如果按照age来分,那么会分出3个子数据集,因为age有3种不同的特征值:<=30,31-40,>40。

 <=30:一共5条数据,其中2条yes,3条no

30-40:一共4条数据,其中4条yes,0条no

>40:一共5条数据,其中3条yes,2条no

那么,按照age来分的话,划分后的熵就是:

注意,这里计算的是划分后3个子数据集的熵的总和,每个数据集的熵之前还乘上了一个权重,也就是这个数据集的概率。

然后,拿划分的熵划分的熵,就得到了信息增益:

接下来算按照income、student、credit_rating来划分的情况,过程一样的:

 

Infoincome(D) = 4/14 * [ -2/4*log(2/4) - 2/4*log(2/4)] + 6/14* [ -4/6*log(4/6) - 2/6*log(2/6)] + 4/14* [ -3/4*log(3/4) - 1/4*log(1/4)]

Gain(income) =0.029

 

Infostudent(D) = 7/14 * [ -3/7*log(3/7) - 4/7*log(4/7)] + 7/14* [ -1/7*log(1/7) - 6/7*log(6/7)]

Gain(student) =0.151

 

Infocredit_rating(D) =  6/14 * [ -3/6*log(3/6) - 3/6*log(3/6)] + 8/14 * [ -6/8*log(6/8)- 2/8*log(2/8)]

Gain(credit_rating) = 0.048

 

比较之后,发现按照 age 划分,信息增量是最大的。所以在这个节点,我们决定按照 age 来进行划分。

哦对了,以上的算法是ID3算法。它倾向于选择具有大量值的属性,即值比较分散的属性。除此之外还有C4.5算法。它引入了增益率(gain ratio)的概念,具体就不介绍了。

嗯,决策树最核心的部分应该就是这些了。下一篇博客上代码。

 

 

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python机器学习编程与实战第8章《通信运营商客户流失分析与预测》介绍了如何使用Python进行通信运营商客户流失的分析和预测。 该章节主要分为以下几个部分: 1. 数据预处理:通过对客户数据进行清洗和处理,包括处理缺失值、异常值和重复值等,使数据能够被正确地应用于机器学习模型。 2. 特征工程:根据业务需求和问题目标,构建合适的特征集。通过使用Python的特征选择技术和特征工程方法,选择和构建与客户流失相关的特征。 3. 数据可视化和探索性分析:使用Python的数据分析和可视化工具,如matplotlib和seaborn等,对客户数据进行可视化和探索性分析。可以通过可视化手段来发现数据的分布情况、相关性等,为后续建模做准备。 4. 模型建立与评估:使用Python的机器学习算法对客户数据进行建模和预测。常用的模型包括逻辑回归、决策树、随机森林等。通过交叉验证等技术对模型进行评估和选择,找出预测准确率较高的模型。 5. 模型调优和部署:对选定的机器学习模型进行参数调优和特征选择,以提高模型的预测性能。最后,将优化后的模型进行部署,以便在实际业务环境中进行客户流失的预测和应用。 该章节的案例实战主要围绕通信运营商的客户流失问题展开,通过对数据的分析和建模,帮助运营商提前预测和识别可能流失的客户,从而采取相应措施进行客户保持和挽留,提高运营商的业务效益。 通过本章的学习,读者可以了解到如何使用Python进行客户流失分析和预测,同时对数据处理、特征工程、模型建立和评估等关键环节有一定的了解和实践经验。这对于从事数据分析和挖掘工作的人员和相关从业者具有重要的参考价值。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值