每日一个机器学习算法——信息熵

1 定义

2 直观解释

信息熵用来衡量信息量的大小

若不确定性越大,则信息量越大,熵越大

若不确定性越小,则信息量越小,熵越小

比如A班对B班,胜率一个为x,另一个为1-x

则信息熵为 -(xlogx + (1-x)log(1-x))

求导后容易证明x=1/2时取得最大,最大值为2

也就是说两者势均力敌时,不确定性最大,熵最大。

3 应用

数据挖掘中的决策树。

构建决策树的过程,就是减小信息熵,减小不确定性。从而完整构造决策树模型。

所以我们需要在每一次选择分支属性时,计算这样分类所带来的信息熵的增益,增益越大,不确定性越小,最终也就是我们要选择的分支属性。

首先我们会在未进行任何分类前求取一个信息熵,这个信息熵涉及到只是简单的求取样本标签的分布,然后按照公式求解信息熵。

之后在选用某一个属性作为分支属性后,我们需要计算每一个子分支中的样本标签的分布,然后计算每个子样本的信息熵,最后加权平均(期望),求得总的信息熵。

计算前后两个信息熵的差值,选择最大的增益属性作为分支属性。

一直递归下去,对每一个子样本套用上述方法。直到所有的样本都被归类于某个叶节点,即不可再分为止。

以上方法是ID3方法,还有更好的C4.5方法

C4.5方法选用信息增益比,克服了ID3使用信息增益选择属性时偏向取值较多的属性的不足。

除了可以处理离散类型的属性,还可以处理连续型。

处理连续型属性时,最重要的一步确定分割点。这里同样需要用到信息增益比。

我们可以人工的为选择一系列的分割点,然后分别计算被分割点分割的前后两个区间的信息熵,最后加权求得该分割点情况下的信息熵。

最后取信息增益最大的分割点作为分割条件。

简而言之,和ID3相比,就是在计算分割点的时候,需要额外用到一次信息增益法。

时间: 2025-01-10 21:33:58

每日一个机器学习算法——信息熵的相关文章

每日一个机器学习算法——机器学习实践

知道某个算法,和运用一个算法是两码事儿. 当你训练出数据后,发觉模型有太大误差,怎么办? 1)获取更多的数据.也许有用吧. 2)减少特征维度.你可以自己手动选择,也可以利用诸如PCA等数学方法. 3)获取更多的特征.当然这个方法很耗时,而且不一定有用. 4)添加多项式特征.你在抓救命稻草么? 5)构建属于你自己的,新的,更好的特征.有点儿冒险. 6)调整正则化参数lambuda. 以上方法的尝试有些碰运气,搞不好就是浪费大把时间. machine learning diagonostic. 机器

每日一个机器学习算法——正则化

在对数据进行拟合,学习模型的过程中,会出现以下情况: 1)high variance, overfitting.过拟合 2)high bias, underfiiting.欠拟合 过拟合出现的原因 1)太多的特征. 2)过少的训练数据. 如何解决? 1)减少特征数 2)模型选择算法(model selection algorithm) 3)正则化:保留特征参数,但尽可能减小其幅值为0. lambuda为正则化参数:看做是一个tradeoff.用于平衡以下两项 1)更好的适应模型 2)将特征的系数

每日一个机器学习算法——adaboost

在网上找到一篇好文,直接粘贴过来,加上一些补充和自己的理解,算作此文. My education in the fundamentals of machine learning has mainly come from Andrew Ng’s excellent Coursera course on the topic. One thing that wasn’t covered in that course, though, was the topic of “boosting” which

每日一个机器学习算法——k近邻分类

K近邻很简单. 简而言之,对于未知类的样本,按照某种计算距离找出它在训练集中的k个最近邻,如果k个近邻中多数样本属于哪个类别,就将它判决为那一个类别. 由于采用k投票机制,所以能够减小噪声的影响. 由于KNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,KNN方法较其他方法更为适合. 一个不足之处是计算量较大,因为对每一个待分类的样本都要计算它到全体已知样本的距离,才能求得它的K个最近邻点.

程序员初学机器学习算法

英文原文:4 Self-Study Machine Learning Projects 学习机器学习有很多方法,大多数人选择从理论开始. 如果你是个程序员,那么你已经掌握了把问题拆分成相应组成部分及设计小项目原型的能力,这些能力能帮助你学习新的技术.类库和方法.这些对任何一个职业程序员来说都是重要的能力,现在它们也能用在初学机器学习上. 要想有效地学习机器学习你必须学习相关理论,但是你可以利用你的兴趣及对知识的渴望,来激励你从实际例子学起,然后再步入对算法的数学理解. 通过本文你可以学习到程序员

机器学习算法总结

感知机:这是最简单的一个机器学习算法,不过有几点还是要注意一下. 首先是损失函数的选取,还有为了使损失函数最小,迭代过程采用的梯度下降法,最后得到最优的w,b 直观解释就是,调整w,b的值,使分离超平面向误分类点移动,以减小误分点与超平面的距离,直至超平面 越过误分类点使其被正确分类. K近邻: 给定一个训练数据集,对新输入的实例,在训练数据集中找到与该实例最近的K个实例,这K个实例多数属于某个 类,就把该输入实例分为某个类. 值得注意的是为了实现K近邻算法所采用的KD树.它是为了减小计算距离的

【机器学习算法-python实现】决策树-Decision tree(1) 信息熵划分数据集

(转载请注明出处:http://blog.csdn.net/buptgshengod) 1.背景 决策书算法是一种逼近离散数值的分类算法,思路比較简单,并且准确率较高.国际权威的学术组织,数据挖掘国际会议ICDM (the IEEE International Conference on Data Mining)在2006年12月评选出了数据挖掘领域的十大经典算法中,C4.5算法排名第一.C4.5算法是机器学习算法中的一种分类决策树算法,其核心算法是ID3算法. 算法的主要思想就是将数据集依照特

斯坦福CS229机器学习课程笔记七:算法诊断、误差分析以及如何开始一个机器学习问题

这一节是Andrew对应用机器学习给出的建议,虽然没有数学公式,但却是十分重要的一课. Debugging Learning Algorithms 假设要做一个垃圾邮件分类的模型,已经从海量的词汇表中选出一个较小的词汇子集(100个单词)作为特征. 用梯度上升算法实现了贝叶斯逻辑回归,但测试集的错误率达到了20%,这显然太高了. 如何解决这个问题? 收集更多的训练样本 进一步减少特征数 增加特征数 改变特征(考虑邮件标题/正文) 将梯度上升多运行几个迭代 尝试牛顿方法 使用不同的λ 改用SVM

【转】常见面试之机器学习算法思想简单梳理

转:http://www.chinakdd.com/article-oyU85v018dQL0Iu.html 前言: 找工作时(IT行业),除了常见的软件开发以外,机器学习岗位也可以当作是一个选择,不少计算机方向的研究生都会接触这个,如果你的研究方向是机器学习/数据挖掘之类,且又对其非常感兴趣的话,可以考虑考虑该岗位,毕竟在机器智能没达到人类水平之前,机器学习可以作为一种重要手段,而随着科技的不断发展,相信这方面的人才需求也会越来越大. 纵观IT行业的招聘岗位,机器学习之类的岗位还是挺少的,国内