一.决策树算法
决策树就是运用树的模型,将每一个判断条件作为树的结点,每一个分支作为符合判断条件的对象,叶子结点就是符合路径上所有条件的结果。常见的决策树算法有ID3,C4.5,随机森林等。
1.ID3算法
需要知道的基础知识:
①信息熵:用来衡量一个事件发生的不确定性。熵越大,事件包含的信息量越大,事件的不确定性也越大。
(Pi表示事件发生的概率)
②信息增益:信息增益就是用一个属性对数据集进行划分后信息纯度的提升值,用来描述一个属性对区分数据样本的能力。
具体用区分前后信息熵的差值来进行计算。
(后半部分为用A属性区分S后S的信息熵)
信息增益越大,即用A属性区分后样本S的熵值越小,说明其信息的不确定性越低,即A属性区分样本的能力越大。(这个就很个人理解,我怀疑只有我自己看的懂= =)
概念:
ID3算法就是计算出每一个属性的信息增益,将信息增益最大(信息增益越大说明这个属性作为树的根节点能使这个树更加简洁)的作为当前的树节点来划分数据集。
缺点:(参考分类算法之决策树ID3详解)
①只可以处理可分类的数据,对连续的数据无效。
②划分过程会由于数据集过小而造成统计特征不充分而停止。
③在产生结点时采用信息增益作为评价标准,其会更加倾向于选择取值比较多的属性,在有些情况下这类属性可能不会提供太多有价值的信息。
2.C4.5算法
需要知道的基础知识:
①信息增益率:某个属性信息增益的值除以该属性的熵值。
②剪枝:因为有些参数对于对最终的输出结果的影响不大,就是将这些冗余的参数剪掉。主要用于解决“过拟合”问题。
分为预剪枝和后剪枝。预剪枝就是在决策树的生成的过程中,如果一个结点不能带来整棵树泛化能力(一个学习的模型对未知数据的预测能力,具体参数可参考知识③)的提升,那该结点就停止分裂,成为叶子结点。后剪枝就是对一棵树进行自下而上的考察,如果将该结点替换为叶子结点能得到树的泛化能力的提升,就将该结点转变为叶子结点。(参考周志华《机器学习》)
③决策树评价参数:
H(t)表示该结点的熵值,Nt表示该结点包含的样本数目。
如果某结点计算出来的评价参数比其所有叶结点计算出来的评价参数要低,则可进行剪枝。
因为评价参数越小越好,所以可以称其为“损失函数”。
概念:
在ID3算法上进行了优化,选择信息增益率作为产生结点的评价标准,(其实前提是该属性的信息增益要在平均水平以上),并在树的构造过程中进行了剪枝。
优缺点:
①改进了ID3算法因为信息增益而在选择属性时偏向取值多的属性的不足,但其对于取值较少的属性有所偏好。
②在构造树的过程中需要对数据集进行多次顺序扫描和排序,导致算法不够高效。
3.CART算法
需要知道的基础知识:
①Gini指数:表示在样本集合中随机选择一个样本被分错的概率。
其中表示选中的样本为k类别的概率。基尼指数越小表示样本不确定性越低。
[多余的话:基尼指数经常用在计算一个国家的贫富差距上]
概念:
CART算法采用二分递归分割,将当前样本根据特征(对于有多个特征可以划分的情况下,选择基尼指数最小的那个。)分为具有该特征与不具该特征的两个样本集,所以该算法生成的决策树是结构简介的二叉树,然后用验证数据集对生成的树进行剪枝,并选择最优子树(用损失函数最小作为剪枝标准)。
二.集成学习
集成学习就如它的名字一般,是将多个学习器集成起来,来完成最后的学习任务。它主要分成两类,一类是几个学习器具有强依赖性,必须串行,比如boosting算法,另外一类是前后依赖性不大,可以用并行,比如随机森林,bagging等。
1.boosting算法下的adaboosting
概念:
它的全名叫做adaptive boosting(适应性提升算法)。据我理解,用我星球的语言就是每一次生成一个学习器,计算其误差率,并关注那些被错误分类的选手,在下一个学习器中将错误分类的选手权值放大,正确分类的选手权值变小,努力降低误差率,依次循环往复,直到大家基本都被分对地方。然后根据误差率,对每一个学习器分配权值(具体权值参考公式其中代表误差率),串行成一个强学习器。