[size=0.8]1. 决策树的简介
[size=0.8]决策树是一种基本的分类与回归方法,学习通常包含三个步骤:特征选择、决策树的生成和决策树的剪枝。
[size=0.8]决策树学习本质是从训练数据集中归纳出一组分类规则;决策树学习的损失函数通常是正则化的极大似然函数,学习策略是由训练数据集估计条件概率模型。
[size=0.8]决策树学习的算法通常是一个递归地选择最优特征,并根据该特征进行分割。这一过程对应着决策树的构建,也对应着特征空间的划分。使得划分之后的各个子集能够被基本分类,那么构建叶节点;否则继续递归划分。
[size=0.8]决策树可能发生过拟合,因此需要剪枝,从下而上进行,减去过于细分的结点,使其会退到父结点。
[size=0.8]根节点
[size=0.8]非叶子节点(决策点):代表测试的条件,对数据属性的测试
[size=0.8]叶子节点:代表分类后所获得的分类标记
[size=0.8]分支:代表测试的结果
[size=0.8]先构建决策树(训练阶段),再使用决策树(分类阶段)
[size=0.8]2. 特征选择
[size=0.8]特征选择的准则:信息增益或信息增益比。我们选择信息增益最大的那个分割。
[size=0.8]A. 熵(entropy)与基尼(Gini)系数
[size=0.8]熵:物体内部的混乱程度或不确定性,熵值越大,则物体内部的混乱程度越大;反之,熵值越低,物体内部纯净度越高。
[size=0.8]由熵的公式可知,当物体内部某个类的概率 较小时,则 (负数)的绝对值就越大。由此可知,当物体或集合内部的类别非常多时(即物体内部混乱程度很高),每个类别的概率就会很小,就会导致物体的熵值很高。
[size=0.8]3. 决策树的生成(目的:得到熵值降低速度最快的决策树)
[size=0.8]构造决策树的基本思想:随着树深度的增加,节点的熵迅速地降低。熵降低的速度(引入信息增益和信息增益比的概念)越快越好,以便得到一棵高度最矮的决策树
[size=0.8]案例
[size=0.8]首先,确定根节点,分别假设outlook、temperature、humidity、windy为根节点,求出对应的熵,从而得到信息熵;
[size=0.8]然后,再与原始熵对比,得到信息增益或信息增益率,从而确定根节点;
[size=0.8]其次,通过递归的方法构造出决策树的其他节点;
[size=0.8]最后,决策树构造完成后,通过评价函数(目标函数)来判断当前的决策树的好坏程度。
[size=0.8]下面计算假设outlook为根节点时对应的熵值
[size=0.8]outlook=sunny时,entropy==0.971
[size=0.8]outlook=overcast时,entropy=0
[size=0.8]outlook=rainy时,entropy==0.971
[size=0.8]根据历史统计数据,outlook取sunny、overcast、rainy的概率分别为5/14、4/14、5/14,所以当outlook为根节点时的信息熵为:
[size=0.8]根据历史数据,新的一天打球的概率是9/14,不打的概率是5/14,则原始熵值(固有熵值):
[size=0.8]信息增益为:
[size=0.8]gain(outlook):0.940-0.693=0.247
[size=0.8]同理可以计算出:
[size=0.8]gain(temperature)=0.029
[size=0.8]gain(humidity)=0.152
[size=0.8]gain(windy)=0.048
[size=0.8]综上所述,gain(outlook)最大(即outlook在第一步使得系统的信息熵下降得最快),所以决策树的根节点取outlook
[size=0.8]ID3算法:信息增益(传统算法)
[size=0.8]--通常情况下,仅仅根据信息增益判断是不靠谱的
[size=0.8]--缺点:当某个特征下的属性非常稀疏(即类别很多),每个属性对应样本的个数又很少时,选用该节点计算熵值时,显然可以使得熵值下降最快,但是该属性很有可能与问题无关,从而引出信息增益率
[size=0.8]C4.5算法:信息增益率
[size=0.8]--
[size=0.8]-- C4.5算法是ID3算法的扩展
[size=0.8]CART算法:Gini系数
[size=0.8]评价函数(目标函数):
[size=0.8]--越小越好,类似损失函数
[size=0.8]-- Nt:每个叶子节点包含的样本数
[size=0.8]-- H(t):叶子节点的自身熵值
[size=0.8]决策树构造完成后,通过评价函数(目标函数)来判断当前的决策树的好坏程度。
[size=0.8]决策树不仅可以处理像上述的离散型属性,也能够处理连续型的属性。首先将连续型属性离散化,把连续型属性的值分成不同的区间,依据是比较各个分裂点的信息增益值的大小。
[size=0.8]4. 决策树的剪枝(目的:得到高度最矮的决策树)
[size=0.8]如果决策树考虑了所有的训练数据集,得到的决策树将会过于庞大。虽然这个决策树对于训练数据集的拟合概率为100%,但是由于过分考虑所有的数据,将数据切得太碎太碎了,这样就会使得决策树学习到一些噪音点、错误点,出现过拟合的现象。
[size=0.8]过拟合的主要原因在于构建决策树时过于复杂。
[size=0.8]决策树的剪枝通过极小化决策树整体的损失函数或代价函数来实现。
[size=0.8]预剪枝:在构建决策树的过程时,提前停止。
[size=0.8]--最小样本数
[size=0.8]--最大深度
[size=0.8]后剪枝:决策树构建好后,然后开始裁剪。
[size=0.8]--
[size=0.8]--叶子节点数越多,损失越大
[size=0.8]-- a:人工设置,该值越大,说明叶子节点数的权重越大;该值越小,叶子节点数影响较小
[size=0.8]-- Tleaf:叶子节点数
[size=0.8]5. 随机森林
[size=0.8]采样方式
[size=0.8]Bootstraping:有放回采样
[size=0.8]Bagging:有放回采样n个样本
[size=0.8]对于一个测试数据,将它投入到随机森林中的不同决策树中,会得到不同的测试结果。若问题是一个分类问题,则可以通过求众数来得出测试数据的类别;若问题是一个回归问题,则可以通过求平均值得出测试数据的值。
[size=0.8]双重随机性
[size=0.8]数据样本采样的随机性:通过从训练数据集中有放回的随机采样,构造出很多的、不同的决策树
[size=0.8]--目的:使得某些决策树选不到异常样本
[size=0.8]数据特征采样的随机性:通过从特征中的随机采样(无放回,特征不能重复)构造随机森林
[size=0.8]--目的:使得某些决策树选不到异常特征
|
|