决策树介绍和使用
现在生活中,越来越多的时候 需要进行判断和决策,因此关于怎么去判断和决策,需要根据一定的依据进行判断和决策,并不是凭空的按照自己的意愿去判断和决策,就比如举个例子;
假如甲同学准备结婚,但是在准备结婚之前,甲的女朋友需要甲买一套房子,但是甲去买房子的过程中,开发商进会对甲是否能够购买方法进行评估和决策:
如下图:
分析:
①开发商对于你是否能够购买房子 进行判断的第一个依据是 “能否购买” 如果你又现金 OK,可以购买,如果你没有现金 会对再次判断;
②判断你是否有工作,如果没有工作 ,直接不让你买,如果有工作,还不一定能让你买,还要继续判断你 的工资是多少。
③如果工资 大于4K的 OK,你可以购买,如果你工资不大于4K的,还要看你的职业;
④如果职业是 公务员的 ,OK 你可以购买,如果你不是公务员的,不让你购买;
这个例子中,就形成了一个决策树;
那什么是决策树:决策树(decision tree):是一个树形结构,决策树从根开始进行决策,直到到叶子节点,得到决策结果,当然这个决策树不是分支越多越好,而是决策的分支越少越好,并且有些不必要的分支,我们最终的时候,还要进行剪枝;
但是这个决策树,不是凭空形成的,在形成这个决策树的过程中,我们会想到一些问题?
①为什么是第一个按照 “能否购买” 来进行判断决策;
②为什么是第二个按照 “是否有工作” 来进行判断决策;
③为什么是第三个按照 “工资多少”来进行判断决策;
④这些顺序能够进行调整?
要分析清楚这样的分类问题,我们需要了解一些分类的算法
ID3算法,C4.5算法,CART算法
ID3算法是早期的算法,存在一些问题,而C4.5算法和CART算法 都是从
ID3算法 演变而来的,而且ID3算法 和 C4.5算法 是同一个人提出的;
那ID3算法是什么?
ID3是贪心算法,用来构造决策树的,ID3算法的核心思想是以信息增益最大的属性来进行分类的;
这里有提到一个概念,信息增益:
它是ID3算法中用于进行属性选择度量,一般是拥有最高信息增益的的属性来作为节点N的分裂属性;
其中Info(D) 叫 总数的信息熵
InfoA(D)表示 具体A这个属性的信息熵
Gain(A) 表示 A这种划分的信息增益
A这种的信息信息增益的结果等于 总数的信息熵Info(D) 减去具体某项的信息熵InfoA(D) ;
这是算出A的划分的的增益 ,同理,其他的增益 也是这样算出了,增益越多,就优先选择作为分类的标准;
ID3算法的缺点:
这种ID3算法的信息增益有个缺点,就是它会偏向具有大量值得属性,因为作为分母的D 越大 越多,整体的值就越小, 总数减去越大的小的值,信息增益就越大,这样就存在问题,假如我一个分类的属性 我分的越细,它的D就会越大,
但是只是根据分类的越细 来获取大的增益,这种是没有实际意义的;
基于ID3算法的缺点,后面出现C4.5算法和CART算法
C4.5算法:
C4.5算法核心采用信息增益率
C4.5 采取得是分裂信息的量,当因子数比较多 ,数值比较大,在使用信息增益除以这个大的数,使得到小的数,这样就可以抵消掉倾向于ID3的缺点。
感谢 源码时代Java 学科讲师提供此文章!
本文为原创文章,转载请注明出处!
还没有评论,来说两句吧...