数据挖掘概念与技术 - chapter 8 - 分类:基本概念
分类器:用预测类标号
数据分类:学习阶段(构建分类模型)与分类阶段(使用模型预测给定数据的类标号)
训练集:由数据库元组和与它们相关联的类标号组成。元组X用n维属性向量X=(x1,x2,...,xn)表示。分别描述元组在n个数据库属性A1,A2,... ,An上的度量。假定每个元组X都属于一个预先定义的类,由一个称为类标号属性的数据库确定。类标号是离散值与无序的。他是分类的。
训练元组
监督学习:提供训练元组的类标号
无监督学习:训练元组类标号是未知的
如果没有用于训练集loan_decision数据,可以使用聚类尝试确定相似元组的组群
如果使用训练集来度量分类器准确率,评估可能是乐观的;(在学习期间可能包含了训练数据中某些特定的异常,这些异常不在一般的数据集中出现。
需要使用检测元组和他们相关联的类标号组成的检验集
分类器在给定检测集上的准确率是分类器正确分类的检验元组所占的百分比,检验元组的类编号与学习模型对该元组的类预测进行比较。
决策树归纳
从有类标号的训练元组中学习决策树,每个内部节点表示在一个属性上的测试,每一个分支代表测试的一个输出,每个树叶节点存放一个类标号。
树的最顶层是根节点
给定一个类编号未知的元组X,在决策树上测试该元组的属性值,跟踪一条由根到叶节点的路径,该叶节点存放该元组的类预测,决策树容易转换成分类的规则。
决策树分类器构造不需要任何领域知识或者参数设置,适合探测式知识发现。
在决策树构造的时候,使用属性选择度量来选择元组最好划分成不同类的属性,许多分支可能反应训练数据中的噪点或者离群点。
决策树算法:迭代的二分器
差别:如何选择属性与用于剪枝的机制
对于树的每一层建造时,需要扫描一遍D中的元组,在处理大型数据库时可能会导致很长训练时间与内存不足。
属性选择度量
一种分裂准则,把给定类标记的训练元组的数据分区D最好地划分为单独类启发式的方法。根据分裂准则输出把D划分成比较小的分区,理想情况每个分区应当是纯的(既落在一个给定分区的所有元组都属于相同的类)。从概念上看,最好的分裂准则是导致最接近这种情况的划分,属性选择度量称为分裂规则,决定给定节点上的元组如何分裂。
常用的属性选择度量
1、信息增益
ID3算法使用信息增益作为属性的选择度量。该度量基于香农在研究消息的值或者信息内容、信息论方面的先驱工作。设节点N代表或者存放分区D的元组,选择具有最高信息增益的属性作为节点N的分裂属性。该属性使得结果分区中对于元组分类所需要的的信息量最小,并反映这些分区中最小随机性、不纯性。
*计算表达式使用以2为底是因为信息用二进制编码(?)
Gain(A)=Info(D)-Info a(D)
告诉我们在A上的划分我们得到了多少,它是知道A的值而导致的信息需求期望减少,具有最高信息增益Gain(A)的属性A作为结点N的分裂属性,等价于在“能做最佳分类"的属性A上划分,使得 完成元祖分类还需要的信息最小 最小化Info a(D)
偏向于多值属性
2、增益率
偏向具有许多输出的测试。倾向于选择具有大量值的属性。考虑充当唯一标识符的属性
C4.5 使用 克服对唯一标识符属性的偏倚。
使用分裂信息值 将信息增益规范化
特征量分布的熵/对应特征与目标值关联的熵
增益率和信息增益是在决策树算法中常用的指标,用于选择最佳的划分属性。它们的应用场景、区别以及优缺点如下:
-
应用场景:
-
决策树算法:增益率和信息增益常用于决策树算法中,用于选择最佳的划分属性。
-
特征选择:增益率和信息增益也可以应用于特征选择问题,用于评估特征对目标变量的重要性。
-
-
区别:
-
信息增益:信息增益是根据划分前后的信息熵差异来评估划分属性的重要性。它偏向于选择具有较多取值的属性,容易导致选择取值较多的属性作为划分属性。
-
增益率:增益率是在信息增益的基础上引入了对划分属性取值数目的惩罚项,以解决信息增益偏向取值较多属性的问题。增益率通过除以划分属性的熵来进行归一化,可以更好地平衡属性取值数目对划分属性选择的影响。
-
-
优缺点:
-
信息增益:
-
优点:简单直观,易于计算。
-
缺点:偏向于选择具有较多取值的属性,容易导致选择取值较多的属性作为划分属性。
-
-
增益率:
-
优点:通过引入对划分属性取值数目的惩罚项,可以更好地平衡属性取值数目对划分属性选择的影响。
-
缺点:在某些情况下,增益率可能会偏向于选择取值较少的属性。
-
-
倾向于产生不平衡的划分
3、基尼指数(Gini)
使用于CART
度量数据分区或者训练元组D的不纯度
考虑二元划分裂时,计算每一个结果分区的不纯度与加权和,选取降低不纯度最大的子集划分方式作为分裂准则。
偏向于多值属性,但是类数量很大时有困难,倾向于导致相等大小的分区与纯度
树剪枝
在决策树创建的过程里,由于数据的噪声与离群点,许多分枝反映的是训练数据中的异常。剪枝方法处理这种过分拟合数据的问题。
常用剪枝方法:先剪枝 后剪枝
先剪枝:提前停止树的构建;一旦停止 结点就变成树叶
可以选定一个阈值,当划分时一个结点的元组导致低于预定义的阈值划分,给定子集进一步划分会停止。选取一个适当的阈值很困难,高阈值可能会导致过分简化的书,低阈值可能会使得树简化的太少。
后剪枝:通过完全生长的树去剪去子树,删除结点分支并用树叶替换而减掉给定结点上的子树。
CART:使用代价复杂度剪枝算法
C4.5:使用悲观剪枝算法
贝叶斯分类方法
统计学分类方法,可以预测隶属关系的概率,一个给定元组属于一个特定类的概率。
假定 属性值在给定的类上影响独立其他属性的值,假定成为类条件独立性。
X n个属性集的测量值描述
H 某种假设 ,如数据元组 X属于某个特定类C
假设 H成立的概率是 P(H|X)。
P(H|X) 是后验概率,或在条件X的情况下,H的后验概率。如加黑色数据元组世界限于分别由属性age与income描述的顾客,而X是一名35岁的顾客,收入为4万美元。令H为某种假设,如顾客将购买计算机,P(H|X)为我们知道顾客年龄与收入时,顾客X将购买计算机的概率。
P(H) 是先验概率。对于上述例子,假定任意顾客将购买计算机的概率,不管年龄、收入或者任何其他信息。
后验概率有比先验概率更多的信息,P(H)独立于X。
由P(X)、P(H)、P(X|H)给定计算后验概率的方法
P(H|X)=P(X|H)P(H)/P(X)
朴素贝叶斯
(1)设D是训练元组和他们相关联的类标号集合,通常每一个元组用n维属性向量X={x1,x2,...,xn}表示,描述由n个属性A1,A2,...,An对元组的n个测量。
(2)假定有m个类C1,C2,...Cm;给定元组X,分类法将预测X属于具有最高后验概率的类;
也就是说 朴素贝叶斯分类法 预测X类属于类Ci,当且仅当 P(Ci|X)>P(Cj|X) 1<=j<=m,j!=i
最大化P(Ci|X),P(Ci|X)的最大类Ci称为最大后验假设,根据贝叶斯定理
P(Ci|X)=P(X|Ci)P(Ci)/P(X)
(3)由于P(X)对所有类为常数,只需要P(X|Ci)P(Ci)最大即可。若先验概率未知,假定这些类是等概率的,即P(c1)=P(c2)=..=P(cm)
根据此对P(X|Ci)最大化。
(4)计算P(X|Ci)的开销可能非常大,为了降低计算开销,可以做类条件独立的朴素假定。给定元组的类标号,假定属性值有条件地相互独立。
-a 如果Ak是分类属性,P(xk|Ci)是D中属性Ak的值为Xk的Ci类的元组数除以D中Ci类的元组数|Ci,D|
-b 如果是连续值属性,需要基于高斯分布计算平均值与标准差后带入P(xk|Ci)进行计算。
(5)为了预测X的类标号,对于每个类Ci,计算P(X|Ci)P(Ci)该分类法预测输入元组X的类为Ci
当且仅当 P(Ci|X)>P(Cj|X) 1<=j<=m,j!=i,被预测的类标号是使得P(X|Ci)P(Ci)最大的类ci
拉普拉斯校准:q计数+1 避免计算0概率值
基于规则的分类器:决策树提取
顺序覆盖算法:每学习一个规则,删除该规则覆盖的元组,在剩下的元组上重复该过程
结合准确率 束状选择规则
可以使用确定规则效果是否出于偶然性
模型评估与选择
用于评估分类预测元组类标号的性能or准确率。
准确率accuracy、识别率
TP+TN / P+N
错误率error rate、误分类率
FP+FN / P+N
敏感度sensitivity、真正例率、召回率recall:完全性的度量
TP / P
特效性specificity、真负例率
TN / N
精度precision:精确性的度量
TP / TP+FP
F F1 F分数 精度与召回率的调和均值
2 * 精度 *召回 / 精度+召回
Fβ (β是非负实数)
(1+β²)*精度召回 / β²*精度 + 召回
其中,T 、F 对应分类器的正确、错误标记结果 P 、N对应样本的正、负。
混淆矩阵 一个至少m*m的表
精确率与召回率是逆关系,有可能以降低一个为代价提高另一个。
其他考虑分类器的比较:速度、鲁棒性、可伸缩性、可解释性
保持:将给定的数据随机划分为两个独立的集合 训练集与检验集 一般按照2:1分配
随机二次抽样:保持方法的变形,将保持方法重复k次,总准确率取每一次迭代准确率的平均值。
交叉验证
k折交叉验证 初始数据随机划分为k份互不相交的子集,每一份大小大致相等,训练迭代与检验 进行k次,在第i次迭代使用分区Di作为检验集,其余分区一起用训练模型。
留一法:k=1
一般建议使用10折交叉验证
自助法
有放回抽样训练
最常用的方法:.632自助法 假定数据集包含d个元组,该数据集有放回地抽样d次,产生的d个样本自助集或者训练集,元数据元组中的某些元组可能在该样本集中出现多次。没有进入该训练集的数据元组最终形成检验集,
在平均情况下,63.2%的数据元组将出现在自助样本中,剩余38.8%的元组将形成检验集。
原理:
可以重复抽样过程k次,每次迭代中,使用当前的检验集得当从当前自助样本得到的模型准确率估计。
模型总体准确率估计方法
Acc(Model) = ∑(i=1,1~k) ( 0.632 * Acc(Mi)test_set + 0.368 * Acc(Mi) train_set)
Acc(Mi)test_set 是自助样本i得到模型用于检验集i的准确率
Acc(Mi)train_set是自助样本i得到的模型用于原数据元组集的准确率
对于小数据集,自助法效果很好。
通过统计模型的平均错误率判定模型的好坏
ROC曲线:接收者操作特征
比较两个分类模型有用的可视化工具,给定模型真正例率TPR与FPR之间的权衡。
纵轴 TPR 水平 FPR
提高分类准确率的技术
袋装
提升
把多个学习器组合 在一起
通过返回基分类器的预测投票 往往比基分类器更准确。
袋装 bagging
最终结果是多数表决决定的
对于d个元组集合D,袋装:
对于迭代i(i∈1,..,k) d个元组的训练集Di采用有放回抽样,由原始元组集D进行抽取;每一个训练集都是自助样本。
由于使用有放回抽样,D的某些元组可能不在Di中出现,其他元组可能出现很多次。由每个训练集Di学习,得到一个分类模型Mi。
为了对一个未知元组X分类,每个分类器Mi返回它的类预测算作一票。袋装分类器M*统计得票,将最高的票赋予X。通过给定预测平均值,也可以进行连续值的预测。
袋装分类器准确率通常显著高于从原训练集D导出的单个分类器准确率,对于噪声数据与过分拟合的影响通常不会很差 ,并且更加鲁棒。
提升 boosting
权重赋予每一个训练元组,迭代学习k个分类器。学习得到分类器Mi之后,更新权重,使得其后的分类器Mi+1更加关注Mi误分类的训练元组。
最终提升的分类器M*组合每个个体分类器的表决,其中每个分类器投票的权重是其准确率的函数。
Adaboost(adaptive boosting)是一种流行的提升算法,假设我们想提升某种学习方法的准确率,给定数据集D,包含d个类标记的元组(x1,y1),(x2,y2)..(Xd,yd)
yi是元组Xi的类标号
开始时,Adaboost对每一个训练元组赋予相等的权重1/d,为组合分类器产生k个基分类器需要执行算法的其余部分k轮。
第i轮,从D元组,形成大小为d的训练集Di。使用有放回抽样,同一个元组可能被选中多次。每个元组被选中的机会由权重决定,从训练集Di导出分类器Mi,然后由D作为检验集计算Mi的误差,元组的权重根据他们分类情况进行调整。如果元组不能正确分类 则权重增加 如果正确分类,则权重减少。
元组的权重反应他们分类的困难程度,权重越高说明越可能错误分类;然后使用这些权重为下一轮分类器产生训练样本。
每一轮分类,更关注上一轮错误分类的元组
错误率:加权和
如果分类器Mi性能太差错误率超过0.5则丢掉它,从新产生训练集Di,由它导出新的Mi。
如何组合预测元组X的类标号?
根据分类器的分类情况,每个分类器的表决赋予一个圈子,分类器的错误率越底,准确率越高,表决权重就应当越高。
分类器Mi的表决权重
log( 1-error(Mi) / error(Mi) )
分析:log 单调增, 准确率/错误率,准确率越高 该权重越大
对于每一个类C,将类C指派给X的分类器权重求和。具有最大权重的类是赢家,返回作为元组X的类预测。
提升与袋装相比,提升关注错误分类的元组,它存在结果复合模型对数据过分拟合的危险。因此,有时候结果模型可能没有从相同数据导出的单一模型的准确率高。
袋装不太受过分拟合的影响,尽管与单个模型相比,两者都可以显著提高准确率,提升往往有更高的准确率。
随机森林
每个分类器是决策树,所以分类器的集合是一个森林。
个体决策树在每个节点使用随机算则属性划分,每一棵树依赖于独立抽样,与森林所有书局有限共同分布的随机向量的值。
分类时,每棵树都投票并且返回得票最多的类。
随机森林可以使用袋装与随机属性选择来构建。
对于d个元组的训练集合D,为组合分类器产生k棵决策树一般过程如下:
1、每次迭代使用有放回抽样,由D产生的d个元组的训练集Di。每个Di都是D的一个自助样本。某些元组可能会在Di出现多次,另一些可能不出现。设F为每一个节点决定划分的属性数,F可能远小于可用属性数。
每个节点随机选择F属性作为该节点划分的候选属性,使用CART的算法来增长树。(Forest-RI)
随机森林的另一种形式使用输入属性的随机线性组合,不是随机地选择一个属性子集,而是用已有的线性组合创建一些新的属性。一个属性由指定的L个原属性组合产生,每一个给定的节点随机选择L个属性,并且从【-1,1】中随机选取数为系数相加,产生F个线性组合,并在其中搜索找到最佳的划分。只有少量属性可用的时候降低个体分类器之间的相关性,这种形式的随机森林是有用的。
随机森林的准确率与Adaboost可以相互媲美,对错误与离群点更加鲁棒。
随机森林的准确率依赖于个体分类器的实力与它们之间的依赖性。理想情况:保持个体分类器能力而不提高相关性,对每一次划分的属性都很敏感。
通常选用log2d+1个属性
由于每一次划分只考虑很少的属性,在大型数据库上非常有效。可能比袋装、提升更快。
随机森林给出变量重要性的内在估计。
传统分类算法旨在最小化分类的误差。他们假定假正例与假负例的错误代价是相等的。由于假定类平衡分布与相等错误,传统的分类算法并不适合不平衡的数据。
在处理不平衡问题的方法中,准确率度量假定各类的代价都相等,可以使用不同类型分类的其他评估度量。如灵敏度、召回率、特效性都有助于评估分类器正确预测类不平衡的数据标号能力。
不平衡数据分类准确率的一般方法:1、过抽样 2、欠抽样 3、阈值移动 4、组合技术
前三种不涉及对分类模型结构的改变,过抽样与欠抽样改变训练集中的元组分布,阈值移动影响对新数据分类时模型如何决策。组合技术则包括袋装与提升。
过抽样、欠抽样都改变训练集的分布,使得稀有类可以很好地被代表,过抽样对正元组重复采样,使得结果训练集包含相同个数的正元组与负元组。欠抽样减少负元组的数量,随机从多数负类中删除元组,直到正元组与负元组的数量相等。
过抽样与欠抽样
假定原训练集有100个正元组与1000个负元组。
在过抽样中,复制稀有类元组,形成1000个正、1000个负。
欠抽样则随机删除负元组,到100个正、100个负。
阈值移动:对给定输入元组返回的连续输出值分类器(如ROC曲线绘制),对于输入元组X返回一个映射f(X)→[0,1]作为输出。基于输出值返回分类决策。如对于某一个阈值t,大于t为正、小于t为负。
分类是一种数据分析形式,提取数据类的模型,分类或者预测类别标号,数值预测是建立连续值函数模型。
决策树归纳:ID3\C4.5\CART,使用不同的属性进行度量。
树剪枝:试图减去反应数据噪声的分支,提高准确率。
朴素贝叶斯属于后验概率的贝叶斯定理,假定条件独立
基于规则的分类器 使用if then进行分类,规则可以从决策树提取。
混淆矩阵可以用于评估分类器的质量。对于两类问题,显示真正例、真负例、假正例、假负例。评估分类器的预测能力度量包括准确率、灵敏度、召回率、特效性、精度、Fβ等。当感兴趣的主类为少数时,过分依赖准确率可能会被骗。
分类器的构造与评估 将数据划分为训练集与检验集,保持、随机抽样、交叉验证、自助法
显著性检验用来评估两个分类器准确率的差别是否处于偶然。ROC曲线用于绘制一个或者多个分类器的真正例率与假正利率。
组合方法可以通过学习与组合一系列个体基分类器模型来提高总体的准确率。袋装、提升、随机森林都是流行的组合方法。
类的不平衡问题 处理策略包括过抽样、欠抽样、阈值移动与组合技术
朴素贝叶斯
朴素贝叶斯是一种基于贝叶斯定理的分类算法,它被称为"朴素"是因为它做了一个"朴素"的假设,即特征之间相互独立。这个假设使得朴素贝叶斯算法的计算变得简单且高效。
朴素贝叶斯算法的核心思想是通过已知的特征来预测未知样本的类别。它基于贝叶斯定理,利用已知的特征和类别的先验概率,计算出给定特征情况下每个类别的后验概率,然后选择具有最高后验概率的类别作为预测结果。
朴素贝叶斯算法的优点是简单、易于实现和高效。它对于处理大规模数据集和高维特征空间具有较好的性能。然而,由于朴素贝叶斯算法假设特征之间相互独立,因此在某些情况下可能会导致分类结果不准确。
先验概率和后验概率
先验概率是指在考虑任何新的证据或信息之前,根据以往的经验或已知的信息对事件发生概率的估计。它是基于先前的知识和假设得出的概率。
后验概率是在考虑了新的证据或信息之后,根据贝叶斯定理计算得出的概率。它是在先验概率的基础上,结合新的证据进行修正后得到的概率。
计算先验概率和后验概率的方法是使用贝叶斯定理。贝叶斯定理表示为:
P(A|B) = (P(B|A) * P(A)) / P(B)
其中,P(A|B)表示在给定B发生的条件下A发生的概率,P(B|A)表示在给定A发生的条件下B发生的概率,P(A)和P(B)分别表示A和B独立发生的概率。
具体计算步骤如下:
-
根据已知信息或经验,计算先验概率P(A)和P(B)。
-
根据已知信息或经验,计算条件概率P(B|A)。
-
使用贝叶斯定理计算后验概率P(A|B)