咱们在机器学习中一直会遇到两种问题,一种是回归问题,一种是分类问题。咱们从字面上理解,很容易知道分类问题实际上是将咱们现有的数据分红若干类,而后对于新的数据,咱们根据所分得类而进行划分;而回归问题是将现有数据拟合成一条函数,根据所拟合的函数来预测新的数据。 这二者的区别就在于输出变量的类型。回归是定量输出,或者说是预测连续变量;分类问题书定量输出,预测离散变量。Po一张我在知乎上看到的一张图片,解释的很好:算法
如何区分分类与回归,看的不是输入,而是输出。举个例子,预测明天晴或是雨,是分类问题,而预测明天多少度,则是回归问题。机器学习
在决策树中,也有回归树与分类树的概念。 在两者的区别中,回归树是采用最大均方偏差来划分节点,而且每一个节点样本的均值做为测试样本的回归预测值;而分类树是采用信息增益或者是信息增益比来划分节点,每一个节点样本的类别状况投票决定测试样本的类别。咱们能够看到,这二者的区别主要在于划分方式与工做模式。回归树采用最大均方偏差这种对数据精确处理的方式,输出连续变量,能够更好地给咱们的数据进行预测;而分类树使用一个很是宽泛的信息增益这个变量,更好的从总体把握这个数据集的分类。函数
这是信息增益的定义。可能理解起来很是之简单,新加的一个节点与原来系统的互信息。也就是多考虑一个特征值给咱们整个决策环节多提供的信息量。可是咱们必定要注意信息增益的计算过程,这里我贴上《统计学习方法》中的例子,来给你们参考:学习
在《数学之美》这本书里,吴军博士曾经告诫过:对于更好地判断一件事物是正确仍是错误,惟一方法是引入更多的信息量。那咱们对于这个判决树,固然倾向于选择自身不肯定性更大的特征,由于自身不肯定性越大,一旦被肯定下来,引入的信息量就越多。这样的话,对于整个系统判决更加有效。测试
信息增益比,有的书也叫信息增益率。资料比信息增益少不少。区别就是在信息增益的基础上再除以一个总的熵。具体有什么好处呢,咱们在下面C4.5算法中会提到。 不过一样的,咱们依旧最须要注意这个信息增益比的计算过程,信息增益咱们都会计算了,这个总的熵咱们与上面讲的H(D)一致。再相除就获得了咱们所想要的结果了。3d
ID3算法的核心实在决策树上的各个节点上用 信息增益 选择特征。在ID3算法生成树的时候,是先计算全部备选特征的信息增益,而后再选择下一个节点是哪个特征。cdn
在这个信息增益的定义及公式中,咱们必定要注意这个H(D)的算法。咱们求解一整个集合的熵,通常是求解 信息增益直接影响了咱们选择什么节点来做为下一个特征的操做,而且设置一个阈值e,当信息增益小于这个阈值的时候中止循环。 为了避免影响你们理解,我将这个算法完整的写在这:blog
ID3: 输入:训练数据集D,特征集A,阈值e; 输出 : 决策树T 一、 若D中国全部实例属于同一类Ck,则T为单结点树,并将Ck做为该结点的类标记,返回T; 二、 若A=空集,则T为单结点树,并将D中的实例数最大的类Ck做为该结点的类标记,返回T; 三、 不然,计算A中各特征对D的信息增益,(具体怎么计算请看我前一条关于决策树基础的博客)选择信息增益最大的特征Ag; 四、 若是Ag的信息增益小于阈值e,则置T为单结点树,并将D中实例数最大的类Ck做为该结点的类标记,返回T; 五、 不然,对Ag的每个可能值ai;依Ag=ai将D分割为若干非空子集Di;将Di中实例数最大的类做为标记,构建子结点,由结点及其子结点构成树T,返回T; 六、 对第i个子结点,以Di为训练集,以A-{Ag}为特征集,递归调用(1)~(5),获得子树Ti,返回Ti。递归
为了加深你们的理解,我贴上李航著的《统计学习方法》里面的例子: 图片
ID3算法只有树的生成,并无对于拟合程度的控制或者是削减分支,因此该算法产生的树容易产生过拟合。
C4.5算法与ID3算法很是类似,是对其的一种改进。惟一与ID3不一样的是 C4.5采用信息增益比 而不是信息增益来选择特征。
贴出C4.5算法:
输入:训练数据集D,特征集A,阈值e; 输出:决策树T
- 若D中全部实例属于同一类Ck,则T为单结点树,并将Ck做为该结点的类标记,返回T;
- 若A=空集,则T为单结点树,并将D中的实例数最大的类Ck做为该结点的类标记,返回T;
- 不然,计算A中各特征对D的信息增益,(具体怎么计算请看我前一条关于决策树基础的博客)选择信息增益最大的特征Ag;
- 若是Ag的信息增益小于阈值e,则置T为单结点树,并将D中实例数最大的类Ck做为该结点的类标记,返回T;
- 不然,对Ag的每个可能值ai;依Ag=ai将D分割为若干非空子集Di;将Di中实例数最大的类做为标记,构建子结点,由结点及其子结点构成树T,返回T;
- 对第i个子结点,以Di为训练集,以A-{Ag}为特征集,递归调用(1)~(5),获得子树Ti,返回Ti。
咱们为何说C4.5是对ID3的一种改进呢?这个问题咱们得从两者区别也就是信息增益与信息增益比提及。 咱们再次贴上信息增益与信息增益比的定义:
经过对比咱们能够看出,信息增益就是特征与训练集的互信息,或者说原来数据集的不肯定性与肯定其中一个特征以后的不肯定性之差,称作信息增益。也就是肯定这个特征所引入的信息量。而信息增益比则是这一个互信息与D的不肯定性的比值。
当咱们遇到一个取值不少的属性的时候,好比西瓜的品种这个属性,会有好几十种品种,也就是好几十种取值。经过计算咱们会发现,这类属性的不肯定性要比那些只有一两个取值的属性要大(由于取值不少使得整个数据集的混乱程度很大), 因此计算机若是处理的时候优先选择取值多的属性。
因此C4.5在ID3的基础上,采用了信息增益比这个判决方法,来惩罚取值不少的属性。