热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

机器学习_机器学习决策树的基本思想

机器学习-决策树的基本思想决策树算法是最早的机器

机器学习-决策树的基本思想

决策树算法是最早的机器学习算法之一。

算法框架

1.决策树主函数

各种决策树的主函数都大同小异,本质上是一个递归函数。该函数的主要功能是按照某种规则生长出决策树的各个分支节点,并根据终止条件结束算法。一般来讲,主函数需要完成如下几个功能。

(1)输入需要分类的数据集和类别标签

(2)根据某种分类规则得到最优的划分特征,并创建特征的划分节点--计算最优特征子函数

(3)按照该特征的每个取值划分数据集为若干部分--划分数据集子函数

(4)根据划分子函数的计算结果构建出新的节点,作为树生长出的新分支

(5)检验是否符合递归的终止条件

(6)将划分的新节点包含的数据集和类别标签作为输入,递归执行上述步骤。

2.计算最优特征子函数

计算最优特征子函数是除主函数外最重要的函数。每种决策树之所以不同,一般都是因为最优特征选择的标准上有所差异,不同的标准导致不同类型的决策树。如:ID3的最优特征选择标准是信息增益、C4.5是信息增益率、CART是节点方差的大小等。

在算法逻辑上,一般选择最优特征需要遍历整个数据集,评估每个特征,找到最优的那一个特征返回。

3.划分数据集函数

划分数据集函数的主要功能是分隔数据集,有的需要删除某个特征轴所在的数据列,返回剩余的数据集;有的干脆将数据集一分为二。

4.分类器

所有的机器学习算法都要勇于分类或回归预测。决策树的分类器就是通过遍历整个决策树,使测试集数据找到决策树中叶子节点对应的类别标签。这个标签就是返回的结果。

 

信息熵测度

特征集中的数据常常表现为定性字符串数据,称为标称数据,使用这些数据的算法缺乏泛化能力,在实际计算中需要将这些数据定量化为数字,也就是所谓的离散化。

数据特征的划分过程是一个将数据集从无序变为有序的过程。这样我们就可以处理特征的划分依据问题,即对于一个由多维特征构成的数据集,如何优选出某个特征作为根节点,如何每次都选出特征集中无序度最大的那列特征作为划分节点。

为了衡量一个事物特征取值的有(无)序程度,引入信息熵。

 

信息熵拆分:信息和熵

熵(Entropy)是德国物理学家克劳修斯在1850年创造的一个术语,用来表示任何一种能量在空间中分布的均匀程度。能量分布的越均匀,熵就越大。

信息就是对不确定性的消除。现实中,信息可以理解为系统从信源的消息转换的状态。在概率中我们称它是一个随机事件。通常,一个信源发送出什么事件是不确定的,可以根据其出现的概率来度量。概率越大,出现机会越多,不确定性小;概率越小,出现机会越少,不确定性越大。

不确定性函数I就称为事件的信息量,是事件U发生概率p的单调递减函数;两个独立事件所差生的不确定性应等于各自不确定性之和,即I(p1,p2) = I(p1) + I(p2),这称为可加性。同时满足这两个条件的函数I是对数函数,即

I(U) = log(1/p) = -log(p)

在一个信源中,不能仅考虑某一单个事件发生的不确定性,而需要考虑信源所有可能情况的平均不确定性。若信源事件有n种取值:U1...Ui....Un,对应概率为p1...pi...pn,且各个事件的出现彼此独立。这时,信源的平均不确定性应当为单个符号不确定性-log pi的统计平均值(E),可称为信息熵,即

技术图片

信息熵是事物不确定性的度量标准,也称为信息的单位或测度。在决策树中,它不仅能用来度量类别的不确性,也可以用来度量包含不同特征的数据样本与类别的不确定性。即某个特征列向量的信息熵越大,就说明该向量的不确定性程度越大,即混乱程度越大,就应优先考虑从该特征向量着手来进行划分。信息熵为决策树的划分提供了最重要的依据和标准。

首先,我们使用信息熵来度量类别标签对样本整体的不确定性。设Ss个数据样本的集合。假定类别标签具有m个不同值,定义m个不同类Ci(i=1,2,...,m)。设si是类Ci中的样本数。对一个给定的样本分类所需要的信息熵由下式给出

 技术图片

其中pi是任意样本属于Ci的概率,并用pi = si/|S|估计

 

接下来,我们使用信息熵来度量每种特征不同取值的不确定性。

A具有v个不同值{a1,a2,...,av}。可以用特征AS划分为v个子集{S1,S2,...Sv}。其中,Sj包含S中这样一些样本:它们在A上具有值aj。如果选A作测试特征,即最优划分特征,那么这些子集就是S节点中生长出来的决策树分支。设sij是子集Sj中类Ci的样本数。由A划分成子集的熵或期望信息由下式给出:

技术图片

 

其中技术图片是第j个子集的权,并且等于子集中的样本个数除以S中的样本总数。其信息熵值越小,子集划分的纯度越高。

技术图片

 

其中,pij = sij/|Sj|Sj中的样本属于类Ci的概率。

 

最后,我们使用信息增益来确定决策树分支的划分依据。它是决策树某个分支上整个数据集信息熵与当前节点信息熵的差值,用Gain(A)表示,那么在A上的分支将获得的信息熵增益就是

Gain(A) = I(s1,s2,...,sm) - E(A)

它是由于知道属性A的值而导致的熵的期望压缩。具有最高信息增益的特征就可选作给定集合S的测试属性。创建一个节点,并以该特征标记,对特征的每个值创建分支,并据此划分样本。

 


推荐阅读
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 无损压缩算法专题——LZSS算法实现
    本文介绍了基于无损压缩算法专题的LZSS算法实现。通过Python和C两种语言的代码实现了对任意文件的压缩和解压功能。详细介绍了LZSS算法的原理和实现过程,以及代码中的注释。 ... [详细]
  • HTML学习02 图像标签的使用和属性
    本文介绍了HTML中图像标签的使用和属性,包括定义图像、定义图像地图、使用源属性和替换文本属性。同时提供了相关实例和注意事项,帮助读者更好地理解和应用图像标签。 ... [详细]
  • 第四章高阶函数(参数传递、高阶函数、lambda表达式)(python进阶)的讲解和应用
    本文主要讲解了第四章高阶函数(参数传递、高阶函数、lambda表达式)的相关知识,包括函数参数传递机制和赋值机制、引用传递的概念和应用、默认参数的定义和使用等内容。同时介绍了高阶函数和lambda表达式的概念,并给出了一些实例代码进行演示。对于想要进一步提升python编程能力的读者来说,本文将是一个不错的学习资料。 ... [详细]
  • 本文介绍了使用哈夫曼树实现文件压缩和解压的方法。首先对数据结构课程设计中的代码进行了分析,包括使用时间调用、常量定义和统计文件中各个字符时相关的结构体。然后讨论了哈夫曼树的实现原理和算法。最后介绍了文件压缩和解压的具体步骤,包括字符统计、构建哈夫曼树、生成编码表、编码和解码过程。通过实例演示了文件压缩和解压的效果。本文的内容对于理解哈夫曼树的实现原理和应用具有一定的参考价值。 ... [详细]
  • 本文介绍了响应式页面的概念和实现方式,包括针对不同终端制作特定页面和制作一个页面适应不同终端的显示。分析了两种实现方式的优缺点,提出了选择方案的建议。同时,对于响应式页面的需求和背景进行了讨论,解释了为什么需要响应式页面。 ... [详细]
  • 统一知识图谱学习和建议:更好地理解用户偏好
    本文介绍了一种将知识图谱纳入推荐系统的方法,以提高推荐的准确性和可解释性。与现有方法不同的是,本方法考虑了知识图谱的不完整性,并在知识图谱中传输关系信息,以更好地理解用户的偏好。通过大量实验,验证了本方法在推荐任务和知识图谱完成任务上的优势。 ... [详细]
author-avatar
十万个蓝色天空_917
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有