数挖——基本分类

2018-04-18  本文已影响37人  EvanForEver

构造决策树有多种算法:
1、Hunt算法 (决策树归纳算法框架)
2、CART
3、ID3, C4.5 (重点)
4、SLIQ,SPRINT

Hunt算法:

设Dt是与当前结点t相关联的记录集,处理t的递归过程:

重点难点:

如何划分训练集?

何时停止划分?

属性测试条件

划分 基于标称属性的划分 基于序数属性的划分 基于数值属性的划分
多路划分 输出个数取决于该属性不同属性值的个数 输出个数取决于该属性不同属性值的个数(不违背序数属性值的有序性) 离散化成序数属性。静态 – 开始建树时一次性离散化;动态 – 扩展当前结点时再离散化
二路划分 将属性值划分成两个子集 将属性值划分成两个子集 (A < v) or (A > v),考虑所有可能的划分点v,寻找最佳的划分点

基于Gini指标的划分

不纯性度量: Gini

(注: p( j | t) 是类j在结点t的出现概率)

Gini指标的取值范围:
最大1 - 1/nc,出现的情况是t对应的记录集在所有类中均匀分布(nc表示类的个数)
最小0,出现的情况是t对应的所有记录都属于同一个类

基于Gini指标的划分在树归纳算法CART, SLIQ, SPRINT中使用,当一个结点p输出k个子女时,该划分的总Gini指标计算为:

其中,ni = 子女结点i对应的记录个数,n = 结点p对应的记录个数

基于熵的划分标准

结点t的熵定义为:

(注意: p( j | t) 是类j在结点t的出现概率)

熵的取值范围:
最大log2nc,出现的情况是t对应的记录集在所有类中均匀分布
最小0,出现的情况是t对应的所有记录都属于同一个类

信息增益——ID3算法引入:

结点p输出k个子女;ni是第i个子女对应的记录个数

由于划分导致熵减少;选择熵减少量最大的划分点,即信息增益最大的划分点
与Gini指标的共同缺点: 倾向于产生很多分区的划分点,因为每个分区更纯

增益率——C4.5算法引入:

使用划分信息(SplitInfo)调整信息增益,惩罚更高的划分信息(即更多的小分区)

基于误分率的划分标准

结点t的误分率定义为:

(注意: p( j | t) 是类j在结点t的出现概率,max指所有类中最大的概率值)

误分率的取值范围
最大1 - 1/nc,出现的情况是t对应的记录集在所有类中均匀分布
最小0,出现的情况是t对应的所有记录都属于同一个类

对于二类问题: 三种不纯性度量的比较

分类的两大实际问题

1、过分拟合(Overfitting)
2、遗漏值(Missing Values)

过分拟合(Overfitting)

估计误差的新方法:泛化误差(generalization error)

悲观误差估计:Occam剃刀原则

最小描述长度(MDL)原则

最小描述长度( MDL) 原理是 Rissane 在研究通用编码时提出的。其基本原理是对于一组给定的实例数据 D,如果要对其进行保存,为了节省存储空间, 一般采用某种模型对其进行编码压缩(对误分类记录),然后再保存压缩后的数据。同时, 为了以后正确恢复这些实例数据,将所用的模型也保存起来。所以需要保存的数据长度( 比特数) 等于这些实例数据进行编码压缩后的长度加上保存模型所需的数据长度,将该数据长度称为总描述长度。最小描述长度( MDL) 原理就是要求选择总描述长度最小的模型。
如果将贝叶斯网络作为对实例数据进行压缩编码的模型, MDL原理就可以用于贝叶斯网络的学习。该度量被视为网络结构的描述长度和在给定结构下样本数据集的描述长度之和。一方面,用于描述网络结构的编码位随模型复杂度的增加而增加 ; 另一方面, 对数据集描述的编码位随模型复杂度的增加而下降。因此,贝叶斯网络的 MDL总是力求在模型精度和模型复杂度之间找到平衡。构建贝叶斯网络首先定义一个评分函数, 该评分函数描述了每个可能结构对观察到的数据拟合, 其目的就是发现评分最大的结构,这个过程连续进行到新模型的评分分数不再比老模型的高为止。
公式:
Cost(Model,Data) = Cost(Data|Model) + Cost(Model)
其中:Cost(Data|Model)是对误分类记录编码所需的比特数;
Cost(Model)是对模型编码所需的比特数

如何处理过分拟合

遗漏值

遗漏值在三个方面影响决策树的构造:
1、影响不纯性度量的计算
2、影响带遗漏值的训练记录分配给子女结点
3、影响带遗漏值的测试记录的归类

产生原因:数据难于获取、历史数据遗失
基于决策树的解决办法
1、不纯性度量的计算(完整记录数占全部记录数的比例作为权重)
2、训练记录的分配(将缺失记录按完整记录的分类比例划分进不同类别)
3、测试记录的归类(根据已知条件算出属于不同类别的可能性)

模型评估

性能评估的度量

考虑的度量:着重于模型的预测能力,而不是模型构造或应用的效率(efficiency)和可伸缩性(scalability)等等

混淆矩阵(Confusion Matrix)

a: TP (true positive);b: FN (false negative);c: FP (false positive);d: TN (true negative)

最常用的度量——准确率(Accuracy)

准确率的局限性
考虑一个二类问题
类0的样本数 = 9990;类1的样本数 = 10
若模型预测所有记录为类0,则准确率就是9990/10000 = 99.9 %
该模型不能检测任何类1的样本,准确率是误导的
因此,准确率可能不适合分析不平衡的数据集

代价矩阵和分类代价

C( i | j ): 将类 j 的样本错误划分为类 i 的代价
分类代价:Cost = TP*C(Yes|Yes) + FN*C(No|Yes) + FP*C(Yes|No) + TN*C(No|No)

分类代价的计算

Accuracy = 80% Cost = 3910;Accuracy = 90% Cost = 4255

其他常用度量

如何得到可靠的估计?

1、保持方法(holdout)
2、随机二次抽样(random subsampling)
3、交叉验证(cross validation)
4、自助法/自举法(bootstrapping)

保持方法

随机二次抽样

多次重复保持方法

k 次重复
acci 是第i次执行保持方法得到的准确率
缺点:没有控制每个记录用于训练和检验的次数

交叉验证(k折(k-fold)交叉验证)

将数据集划分成k个不相交的子集,根据既有实验结果,k一般取10较好
将k-1个分区的记录用作训练,将余下1个分区的记录用作测试,重复k次

特点:每个记录用于训练的次数相同用于测试恰好一次
留一(leave-one-out)法
k折交叉验证的一个特例,k=N,N是数据集的大小

自助法/自举法

采用有放回的抽样产生大小为N的样本集,N是数据集大小
每个记录被抽中的概率是1-(1-1/N)N,当N充分大时,该概率逼近1-e-1=0.632
抽中的记录构成训练集,没抽中的记录构成测试集
抽样过程重复b次,每次在测试集上的准确率是

总准确率

accs是由包含所有样本的训练集计算的准确率

Rapidminer中简化成
上一篇 下一篇

猜你喜欢

热点阅读