六、集成学习一、决策树

决策树(Decision Tree)

    比较适合分析离散型数据,若数据是连续型数据,则先将其转成离散型数据再做分析。

一、概念

信息熵(entropy):

    一条信息的信息量大小和它的不确定性有直接的关系,要搞清楚一件非常不确定的事或者一无所知的事,需要了解大量的信息。而信息量的度量就等于不确定性的多少。  信息熵越大(越小),不确定性越大(越小)。

    信息熵公式:

    eg:假设骰子A,扔出1-6的概率为1/6;骰子B,扔6的概率为50%,扔1-5的概率为10%;骰子C,扔6概率为100%

A的信息熵: 

B的信息熵:

C的信息熵:

条件熵:

    在给定随机变量Y的条件下,随机变量X的不确定性

    条件熵公式:

信息增益:

    信息增益 = 熵 - 条件熵,表示在一个条件下,信息不确定性减少的程度。

    信息增益公式:

信息增益率:

    信息增益率公式:

    其中                   :

基尼系数(Gini):

    基尼指数又7称Gini不纯度,表示在样本集合中一个随机选中的样本被分错的概率。(Gini指数越小表示集合中被选中的样本被分错的概率越小,也就是说集合的纯度越高,反之,集合越不纯。当集合中所有样本为一个类时,基尼指数为0)

    基尼系数公式:

    这里Pk表示选中的样本属于第k个类别的概率

    加权Gini系数公式:

    Gini增益:

二、相关算法

ID3算法:

    决策树会选择最大化信息增益来对结点进行划分


    ID3算法对于连续数据的处理,可根据某个数据作为分界线,将数据分为不同的部分,将不同的部分看作离散值,可计算

C4.5算法:

    信息增益的方法倾向于首先选择因子数较多的变量,使用信息增益的改进,即增益率

Cart算法:

    Cart决策树的生成就是递归地构建二叉决策树的过程;

    Cart使用Gini系数取最小化原则来进行特征选择,生成二叉树

    # 创建决策树模型

    model = tree.DecisionTreeClassifier()#criterion参数默认为gini,即为CART算法

    # 输入数据建立模型

    model.fit(x_data ,y_data)

三、剪枝

    剪枝(pruning)是决策树学习算法对付“过拟合”的主要手段。在决策树学习中,为了尽可能正确分类训练样本,结点划分过程将不断重复,有时会造成决策树分支过多,这时就可能因为对训练样本学习得“太好”了,以致于把训练集自身的一些特点当作所有数据都具有的一般性质而导致过拟合。因此,可通过主动去掉一些分支来降低过拟合的风险。决策树剪枝的基本策略有预剪枝和后剪枝。

预剪枝

预剪枝是指在决策树生成过程中,对每个结点在划分前先进行估计,若当前结点的划分不能带来决策树泛化性能提升,则停止划分并将当前结点标记为叶结点。停止决策树生长常用方法:

1、定义一个高度,当决策树达到该高度时就停止决策树的生长

2、达到某个节点的实例具有相同的特征向量,即使这些实例不属于同一类,也可以停止决策树的生长。这个方法对于处理数据的数据冲突问题比较有效。

3、定义一个阈值,当达到某个节点的实例个数小于阈值时就可以停止决策树的生长

4、定义一个阈值,通过计算每次扩张对系统性能的增益,并比较增益值与该阈值大小来决定是否停止决策树的生长。

后剪枝

    后剪枝则是先从训练集生成一棵完整的决策树,然后自底向上地对非叶结点进行考察,若将该结点对应的子树替换为叶结点能带来决策树泛化性能提升,则将该子树替换为叶结点。相比于预剪枝,后剪枝更常用,因为在预剪枝中精确地估计何时停止树增长很困难。

错误率降低剪枝(REP,Reduced-Error Pruning)

    错误率降低剪枝方法是一种比较简单的后剪枝的方法。在该方法中,可用的数据被分成两个样例集合:首先是训练集,它被用来形成学习到的决策树,另一个是与训练集分离的验证集,它被用来评估这个决策树在后续数据上的精度,确切地说是用来评估修剪这个决策树的影响。学习器可能会被训练集中的随机错误和巧合规律所误导,但验证集合不大可能表现出同样的随机波动。所以验证集可以用来对过度拟合训练集中的虚假特征提供防护检验。

错误率降低剪枝方法考将树上的每个节点作为修剪的候选对象,再决定是对该节点进行剪枝:

1、删除以此结点为根的子树

2、使其成为叶子结点

3、当修剪后的树对于验证集合的性能不比修剪前的树的性能差时,则确认删除该结点,否则恢复该节点

    因为训练集合的过拟合,使得验证集合数据能够对其进行修正,反复进行上面的操作,从底向上的处理结点,删除那些能够提高验证集合的精度的结点,直到进一步修剪会降低验证集合的精度为止。

    错误率降低剪枝方法是最简单的后剪枝方法之一,不过由于使用独立的测试集,原始决策树相比,修改后的决策树可能偏向于过度修剪。这是因为一些不会再次在测试集中出现的很稀少的训练集实例所对应的分枝在剪枝过程中往往会被剪枝。尽管错误率降低剪枝方法有这个缺点,不过错误率降低剪枝方法仍然作为一种基准来评价其它剪枝算法的性能。它对于两阶段决策树学习方法的优点和缺点提供了一个很好的学习思路。由于验证集合没有参与决策树的构建,所以用错误率降低剪枝方法剪枝后的决策树对于测试样例的偏差要好很多,能够解决一定程度的过拟合问题。

悲观错误剪枝(PEP,Pesimistic-Error Pruning)

代价复杂度剪枝(CCP,Cost-Complexity Pruning)

(剪枝资料详见深入理解机器学习——基于决策树的模型(一):分类树和回归树_人工智能_洪远的博客-CSDN博客)

四、决策树的优缺点

优点:小规模数据集有效

缺点:处理连续变量效果不好

           类别较多时,错误增加的比较快

           不能处理大量数据

你可能感兴趣的:(六、集成学习一、决策树)