目录
第一节 分类技术介绍
1.分类技术
1.非监督式(unsupervised learning)的机器学习法-----聚类分析法(又叫集群分析(Cluster Analysis))
2. 监督式(supervised learning)的机器学习法------ 决策树(Decision Tree)
2.分类的目的
1.寻找影响某一重要变量的因素
2.了解某一族群的特征(通过聚类分析可以实现)
3.建立分类规则
3.分类的步骤
1.模型建立(Model Building)
2.模型评估(Model Evaluation)
3.使用模型(Use Model)
第二节 决策树(Decision Tree)介绍
1.决策树(Decision Tree)相关概念
二叉树: 若树中除叶子节点外其他每个节点最多只能生长出两个分支,即 父节点只能有两个子节点,称这样的树为二叉树 。
多叉树 : 若树中除叶节点外其他每个节点能 长出不止两个分支,即父节点有两个以上的子节点,则称这样的树为多叉树 。
2.决策树分类
根据目标变量的类型将决策树分为两大类型
分类决策树:用于实现对定类或定序目标变量的分类及预测
回归决策树:完成对定距目标变量取值的预测
第三节 决策树算法
决策树的构建需要重点解决两个核心问题:
(1)决策树的生长,即利用训练样本集完成决策树的建立过程 最大限度增加样本集的纯度,而且不要产生样本数量太少的分支 常见的属性选择标准包括信息熵、信息增益、信息增益率和Gini系数 定义树的停止生长条件(最小划分实例数、划分阈值、最大树的深度)
(2)决策树的剪枝 ,即利用测试样本集对所形成的决策树进行精简。 对决策树的子树进行评估,若去掉该子树后整个决策树的表现更好,则该子树将被剪枝。
1.决策树的生成
2.决策树主要算法
决策树算法 | 算法描述 |
ID3算法 | 其核心是在决策树的各级节点上,使用信息增益作为属性的选择标准,来帮助确定生成每个节点时所应采用的合适属性。只能处理离散数据 |
C4.5算法 | 使用信息增益率来选择节点属性,该算法既能适用于离散属性,也能处理连续属性数据 |
CART算法 | 该算法是一种非参数分类和回归方法,通过构建树、修剪树、评估子树来构建二叉树。当目标变量为连续变量时,该树为回归树,当目标变量为分类变量时,该树为分类树。 |
信息增益Information Gain——ID3算法使用
信息增益率——C4.5算法使用
基尼指数Gini index——CART算法使用
3.ID3算法
在ID3算法中,所有属性的取值均为离散值。若有取值为连续值的属性,就需要先将其离散化
1.信息熵
熵(entropy,也称信息熵)用来度量一个属性的信息量。 假定S为训练集,S的目标属性C具有m个可能的类标号值,C={C1,C2,…,Cm},假定训练集S中,Ci在所有样本中出现的频率为 pi(i=1,2,3,…,m),则该训练集S所包含的信息熵定义为:
熵越小表示样本对目标属性的分布越纯,反之熵越大表示样本对目标属性分布越混乱。
2.信息增益
信息增益是划分前样本数据集的不纯程度(熵)和划分后样本数据集的不纯程度(熵)的差值。
假设划分前样本数据集为S,并用属性A来划分样本集S,则按属性A划分S的信息增益Gain(S,A)为样本集S的熵减去按属性A划分S后的样本子集的熵:
按属性A划分S后的样本子集的熵定义如下:假定属性A有k个不同的取值,从而将S划分为k个样本子集{S1,S2,…,Sk},则按属性A划分S后的样本子集的信息熵为:
其中|Si|(i,=1,2,…k)为样本子集Si中包含的样本数,|S|为样本集S中包含的样本数。信息增益越大,说明使用属性A划分后的样本子集越纯,越有利于分类。
(1)Gain(S,A)是指知道属性A的值后导致的熵的期望压缩。Gain(S,A)越大,说明选择测试属性A对分类提供的信息越多。
(2)熵越小代表节点越纯。
(3)由信息增益的定义,信息增益越大,说明使用属性A划分后的样本子集越纯,越有利于分类
结论:综上所述,可以对每个属性按照它们的信息增益大小排序,再选择信息增益最大的属性为分枝属性。
3.例题讲解
4.模型优点和缺点
优点:
ID3算法在搜索的每一步都使用当前的所有训练样本,大大降低了对个别训练样本错误的敏感性。因此,通过修改终止准则,可以容易地扩展到处理含有噪声的训练数据。
缺陷:
4.C4.5算法
C4.5算法是从ID3算法演变而来,除了拥有ID3算法的功能外,C4.5算法引入了新的方法和增加了新的功能:
(1)能够处理连续型属性数据和离散型属性数据;
(2)能够处理具有缺失值的数据;
(3)使用信息增益率作为决策树的属性选择标准;
(4)对生成的树进行剪枝处理,以获取简略的决策树;
(5)从决策树到规则的自动产生。
1.C4.5算法的概念描述
假定S为训练集,目标属性C具有m个可能的取值,C={C1,C2,…,Cm},即训练集S的目标属性具有m个类标号值C1,C2,…,Cm,C4.5算法所涉及的概念描述如下:
(1)假定训练集S中,Ci在所有样本中出现的频率为pi(i=1,2,3,…,m),则该集合S所包含的信息熵为:
(2)设用属性A来划分S中的样本,计算属性A对集合S的划分熵值EntropyA(S)定义如下:
若属性A为离散型数据,并具有k个不同的取值,则属性A依据这k个不同取值将S划分为k个子集{S1,S2,…,Sk},属性A划分S的信息熵为:
如果属性A为连续型数据,则按属性A的取值递增排序,将每对相邻值的中点看作可能的分裂点,对每个可能的分裂点Ai,计算:
其中SL和SR分别对应于该分裂点划分的左右两部分子集,选择EntropyA(S)值最小的分裂点作为属性A的最佳分裂点,并以该最佳分裂点按属性A对集合S的划分熵值作为属性A划分S的熵值。
(3) C4.5以信息增益率作为选择标准,不仅考虑信息增益的大小程度,还兼顾为获得信息增益所付出的“代价”:
C4.5通过引入属性的分裂信息来调节信息增益,分裂信息定义为:
信息增益率定义为:
这样如果某个属性有较多的分类取值,则它的信息熵会偏大,但信息增益率由于考虑了分裂信息而降低,进而消除了属性取值数目所带来的影响。
2.C4.5对于连续数据的处理
连续型的属性变量进行离散化处理,形成决策树的训练集,分三步:
1. 把需要处理的样本(对应根节点)或样本子集(对应子树)按照连续变量的大小从小到大进行排序
2. 假设该属性对应的不同的属性值一共有N个,那么总共有N-1个可能的候选分割阈值点,每个候选的分割阈值点的值为上述排序后的属性值中两两前后连续元素的中点
3. 用熵选择最佳划分
3.C4.5对缺失数据的处理
由于决策树中节点的测试输出决定于单个属性的不同取值,当训练集或测试集中的某个样本数据的测试属性值未知,就无法得到当前节点的测试输出,因此ID3算法不允许训练集和测试集中存在缺失数据。
对数据缺失值的处理,通常有两种方法:
方法一:抛弃数据集中具有缺失值的数据。 当数据集中只有少量缺失值数据的情况下,可以抛弃具有缺失值的数据,但是当数据集中存在大量缺失值时不能采用这种方法。
方法二:以某种方式填充缺失的数据。 如以该属性中最常见值或平均值替代该缺失值,或者以与缺失值样本所对应的类标号属性值相同的样本中该缺失值属性的最常见值或平均值来代替。
在C4.5算法中采用概率的方法,为缺失值的每个可能值赋予一个概率,而不是简单地将最常见的值替代该缺失值。
例题讲解:
5.后剪枝
后剪枝是在决策树构建完成之后,对那些置信度不达标的节点子树用叶子结点代替,该叶子结点的类标号用该节点子树中频率最高的类标记。
后剪枝方法又分为两种,一类是把训练数据集分成树的生长集和剪枝集;
另一类算法则是使用同一数据集进行决策树生长和剪枝。常见的后剪枝方法有CCP(Cost Complexity Pruning)、REP(Reduced Error Pruning)、PEP(Pessimistic Error Pruning)、MEP(Minimum Error Pruning)。
悲观剪枝PEP(Pessimistic Error Pruning)
悲观剪枝就是递归式的计算每个内部节点所覆盖样本节点的误判率。剪枝后该内部节点会变成一个叶子节点,该叶子节点的类别为原内部节点的最优叶结点所决定。
然后比较剪枝前后该节点的错误率来决定是否进行剪枝。该方法关键在于如何估计剪枝前后分类树内部节点的错误率。
单个叶子节点的分类错误率 计算公式:(E+0.5)/N
0.5就是惩罚因子,一棵树的一个叶子结点,覆盖了N个样本(有正确分类的有错误分类的),其中错误分类的是E个。
如果剪枝前一颗子树有L个叶子节点,每个叶子节点都有可能会拿来去替代这个子树,那么这个子树的误判率计算得e_1
假设误判次数就是伯努利分布,我们可以估计出该树的误判次数均值和标准差:
当子树的误判个数大过对应叶节点的误判个数一个标准差之后,就决定剪枝(当然这是经过惩罚因子处理之后的计算值):
E(subtree_err_count)+ var(subtree_err_count) >E(leaf_err_count)
3.例题说明:
6.CART算法
1.CART算法的主要差别
(1)CART为二叉树,而C4.5可以为多叉树。
(2)CART中的输入变量和输出变量可以是分类型也可以是数值型,而C4.5的输出变量只能是分类型。
(3)CART使用Gini系数作为变量的不纯度量,而C4.5使用信息增益率。
(4)如果目标变量是标称的,并且具有两个以上的类别,则CART可能考虑将目标类别合并成两个超类别。
(5)如果目标变量是连续的,则CART算法找出一组基于树的回归方程来预测目标变量。
(6)对于缺失值的处理方法不同,CART采用代理测试(surrogate)来估计测试的输出值,而C4.5直接将其分配到该分支中概率最大的分类。
(7)对决策树的剪枝方法不同。
2.构建最大树
给定训练样本集,构建最大树就是使决策树充分生长,最终产生描述训练样本集的最大二叉树。 我们从以下三方面来介绍CART算法的构建最大树步骤:
(1)CART的数据准备工作
降低属性的势
属性的势的定义:属性的势又称属性的基数,样本的每个属性的所有取值构成一个有限集合,这个有限集合中元素的个数即为此集合的势。
降低属性的势:为每一个属性分配一组离散值,将属性的实际值映射到这组离散值上。要求:选定的离散值的个数少于属性的实际取值的个数。 构造属性的标准问题集:所有候选的分枝方案的集合 数值属性的标准问题 分类属性的标准问题
(1)数据准备——数值属性的标准问题
数值属性的标准问题:属性A是数值属性,则A的标准问题是由形如“Is A <=d?” 的分枝测试构成的集合。
构建属性标准问题的三个步骤:
取出训练样本中属性A的所有不同取值,将这些值按照从小到大的顺序排序A;
计算排序后的数值序列中每相邻两个数值的中间值,得到一个新的序列 A‘ ;
根据A’生成属性A的标准问题集
(2)Gini指标
ID3使用信息增益作为属性选择标准,C4.5使用信息增益率作分类树为属性选择标准。
CART算法使用Gini系数来度量对某个属性变量测试输出的两组取值的差异性,理想的分组应该尽量使两组中样本输出变量取值的差异性总和达到最小,即“纯度”最大,也就是使两组输出变量取值的差异性下降最快,“纯度”增加最快。
设t为分类回归树中的某个节点,称函数: 为Gini系数,k为当前属性下测试输出的类别数,p(j|t)为节点t中样本测试输出取类别j的概率。
设t为一个节点,ξ为该节点的一个属性分枝条件,该分枝条件将节点t中样本分别分到左分支SL和右分支SR中,称:
为在分枝条件ξ下节点t的差异性损失。其中,G(t)为划分前测试输出的Gini系数,|SR|和|SL|分别表示划分后左右分枝的样本个数。为使节点t尽可能的纯,我们需选择某个属性分枝条件ξ使该节点的差异性损失尽可能大。用ξ(t)表示所考虑的分枝条件ξ的全体,则选择分枝条件应为:
如果属性A为连续型数据,则按属性A的取值递增排序,将每对相邻值的中点看作可能的分裂点,对每个可能的分裂点,计算:
其中SL和SR分别对应于该分裂点划分的左右两部分子集,选择GiniA(S)值最小的分裂点作为属性A的最佳分裂点,并以该最佳分裂点按属性A对集合S的划分Gini值作为属性A划分S的Gini值。