[关闭]
@Billy-The-Crescent 2019-06-13T09:15:23.000000Z 字数 11853 阅读 749

数据挖掘第三章 分类和回归

数据挖掘 分类 回归


数据挖掘技术与原理主目录:
目录

第三章目录:


3.1 分类和回归概念

分类是数据挖掘中的一种主要分析手段。
分类的任务是对数据集进行学习并构造一个拥有预测功能的分类模型,用于预测未知样本的类标号。

分类和回归都有预测的功能,但是:

  • 分类预测的输出为离散或标称的属性;
  • 回归预测的输出为连续属性
    它们的共同点是它们都是有监督的预测模型

分类的步骤:
1. 首先将数据集划分为两部分:训练集和测试集。
2. 对训练集进行学习,构建分类模型
3. 用建好的分类模型对测试集分类。
4. 最后,使用分类准确度高的分类模型对类标号位置的未来样本数据进行分类。

分类和聚类的分类是有监督的学习方法,而聚类是无监督的学习方法。

分类模型的学习方法:

  • 基于决策树的分类方法
  • 贝叶斯分类方法
  • k-最邻近分类方法
  • 神经网络方法
  • 支持向量机方法
  • 集成学习方法
回归分析:
可以对预测变量和响应变量之间的联系建模。
预测变量是已知的描述样本的感兴趣的属性,响应变量是要预测的值。当响应变量和所有预测变量都是连续值时,回归分析是一个好的选择。
包括:线性回归、非线性回归、逻辑回归

3.2 基于决策树的分类方法

3.2.1 决策树的基本概念

决策树(Decision Tree)是一种树型结构,包括:决策节点(内部节点)、分支和叶节点三个部分。
内部节点(决策节点)存放的是属性,而内部节点引出来的是属性可能的取值,也即是分支叶节点存放的某个类标值(也就是一种可能的分类结果)。

决策树可以用来对未知样本进行分类,分类过程如下:从决策树的根节点开始,从上往下沿着某个分支往下搜索,直到叶节点,也就知道分类的类标是什么了。

3.2.2 决策树的构建

重点解决两个问题:
1. 如何选择合适的属性作为决策树的节点去划分训练样本。
2. 如何在适当位置停止划分过程,从而得到大小合适的决策树。

决策树的属性选择:
虽然可以采用任何一个属性对数据集进行划分,但最后形成的决策树会差异很大。需要寻找合适的属性选择方法。
属性选择是决策树算法中重要的步骤,常见的属性选择标准包括信息增益(information gain)和Gini系数。

在树的每个结点上选择具有最高信息增益的属性作为当前结点的划分属性。Gini系数用来度量数据集的数据关于类的纯度。

决策树学习的目的是希望生成能够解释数据集结构并且预测能力强的一棵树,在树完全生长的时候有可能预测能力反而降低, 为此通常需要获得大小合适的树。选择尽量短的

有两种避免过度拟合的方法:

  • 定义树的停止生长条件,常见条件包括最小划分实例数、划分阈值和最大树深度等。
  • 对完全生长决策树进行剪枝,方法是对决策树的子树进行评估,若去掉该子树后整个决策树表现更好,则该子树将被剪掉。

决策树构建的经典算法
Hunt算法是许多经典决策树算法如ID3、C4.5

3.2.3 ID3分类算法

使用信息增益作为属性的选择标准
首先检测所有属性,选择信息增益最大的属性产生决策树结点,由该属性的不同取值建立分支,再对各分支的子集递归调用该方法建立决策树结点的分支,直到所有子集仅包括同一个类别的数据为止。

信息熵:
信息熵用来度量一个属性的信息量。

假定S为训练集,S的目标属性C具有m个可能的类标号值,C = {C1,C2,...Cm},假定训练集S中,Ci在所有样本中出现的频率为,则该训练集S所包含的信息熵定义为:


熵越小表示样本对目标属性的分布约纯,反之熵越大表示样本对目标属性分布约混乱。

信息增益:
划分前样本数据集的不纯程度(熵)和划分后样本数据集的不纯程度(熵)的差值。
假设样本划分前数据集为S,并用属性A划分样本集S,则按属性A划分S的信息增益Gain(S,A)为样本集S的熵减去按属性A划分S后样本子集的熵:


按属性A划分S的样本集的熵定义如下:假定属性A有k个不同的取值,从而将S划分为k个样本子集{S1,S2,...,Sk)},则按属性A划分S的样本自己的信息熵为:

计算出所有属性的信息熵,选出最大的属性A作为该层的决策节点。

算法优点:
理论清晰,方法简单,学习能力较强。
算法缺点:
算法只能处理分类属性数据,无法处理连续型数据。
算法对测试属性的每个取值相应产生一个字集,如果字集过多会造成统计特征不充分(极端例子:使用学号进行划分)。
信息增益天生倾向于子集个数多的属性。

3.2.4 C4.5分类算法

继承了ID3算法的优点,但是进行了一些改进:

  • 能够处理连续性属性数据和离散型属性数据。
  • 能够处理具有缺失值的数据。
  • 使用信息增益率作为决策树的属性选择标准。
  • 对生成树进行剪枝处理,以获取简略的决策树。

C4.5算法描述:

对连续型属性的处理:
如果属性A是连续型数据,则按照属性A的取值递增,将每对相邻值的中点看做可能的分裂点,对每个可能的分裂点,计算:

其中,对应该分裂点划分的左右两部分子集,选择最小的分裂点作为属性A的最佳分裂点,并以该最佳分裂点按属性A对集合S的划分熵值作为属性A划分S的熵值。

比如属性A的记录为:34, 45, 56, 66, 67, 87, 92, 95. 这个时候将34和45的中间值39.5作为阈值进行划分计算信息熵,然后对45和56的中间值50.5作为阈值计算信息熵······最后计算出最小的信息熵的阈值作为真正的划分阈值。

C4.5算法只能分成两类,但是可以在子集中再进行划分,因此可以隐式地划分成多个类别。(先前使用过的连续属性可以再次使用)

信息增益率:
不仅考虑信息增益的大小程度,还兼顾为获得信息增益所付出的 “代价”。
分裂信息来调节信息增益,定义为:

分裂信息越大,熵越大。

信息增益率定义为:

如果某个属性的分类取值较多,则它的信息熵会偏大,但信息增益率由于考虑了分裂信息而降低,进而消除了属性取值数目所带来的的影响。

选择信息增益率最大的属性作为分类属性。

对缺失数据的处理:
方法1:抛弃数据集中具有缺失值的数据。
方法2:以某种方式填充缺失的数据。

C4.5算法采用概率的方法,为缺失值的每个可能值赋予一个概率,而不是简单地将最常见的值替代该缺失值。

C4.5算法过程可以分为两个过程:
1. 产生完全生长树。
2. 进行后剪枝操作。

C4.5算法的优点:
产生的分类规则易于理解,准确率较高。
C4.5算法的缺点:
在构造树的过程中,需要对数据集进行多次的顺序扫描和测序,因而导致算法的低效。
此外,只适合于驻留于内存的数据集,不然需要进行多次I/O操作。
为适应大数据集,出现SCLIQ和SPRINT的算法。

3.3 贝叶斯分类方法

贝叶斯分类方法是一种基于统计的学习方法。
是一种利用概率统计知识进行学习分类的方法

如:预测一个数据对象属于某个类别的概率。
如:计算邮件是垃圾邮件和合法邮件的概率,取概率大的位预测结果。

主要的算法有:

  • 朴素贝叶斯分类方法。
  • 贝叶斯信念网络分类算法。

3.3.1 贝叶斯定理

假定X为类标号位置的一个数据样本,H为样本X属于类别C的一个假设。
分类问题就是计算概率P(H|X)的问题,即给定观察样本X下假设H成立的概率有多大。

  • P(H)表示假设H的先验概率
  • P(X)表示样本数据的先验概率。
  • P(H|X)表示在条件X下,假设H的后验概率。
  • P(X|H)表示在给定假设H的前提条件下,样本X的后验概率。

比如,P(H)表示数据集中购买电脑的概率,P(X)表示数据集中收入为10000的人的概率,P(H|X)表示数据集中收入为10000的人购买电脑的概率。从而可以预测哪些人比较可能购买计算机。

贝叶斯定理:

3.3.2 朴素贝叶斯分类算法

计算中最大的那个作为类标号。

由于对于所有分类是一样的,因此比较就可以了。而在数据集中出现的次数一定是很少的,因此无法直接统计。在这种情况下,可以假设每一个属性之间相互独立,这样就可以用概率的乘积代替联合概率。

朴素贝叶斯分类方法的“朴素”就朴素在用了独立性的假设。

在所有的中求出最大的那个作为最终的类标号。

其中表示数据集D中属于类的样本的个数,而s是数据集D的样本总数。

是属性的取值,若是离散的随机变量,则和上一个一样;如果是连续型随机变量,则将其看成正态分布。

这里的分别是数据集中属于的样本属于的值的平均值和标准差。

最大,则选取作为分类结果。

朴素贝叶斯分类算法在计算概率的时候存在概率为0及概率值可能很小的情况,因此在某些情况下需要考虑条件概率的Laplace估计以及解决小概率相乘溢出问题。

3.3.3 条件概率的Laplace估计

其中n是类的实例总数,是类的训练样例中取值为的样例数,l是称为等价样本大小的参数,而p是用户定义的参数,但是大小等于,k是属性A的取值个数。

3.4 k-最近邻分类方法

k-最近邻分类算法是一种基于实例的学习算法,它不需要先使用训练样本进行分类器的设计,而是直接用训练集对数据样本进行分类,确定其类别标号。

k-最近邻算法的基本思想:寻找邻居,并进行投票

KNN算法根据得到的最近邻列表中样本的多数类进行分类,实现方法是通过投票进行多数表决得到最终类标号y'。

算法缺点:
最近邻分类对每个属性指定相同的权重
算法的时间负责度是

3.5 神经网络分类方法

神经网络(Neural Network)是模拟人脑思维方式的数学模型,它是在现在生物学研究人脑组织成果的基础上提出的,用来模拟人类大脑神经网络的结构和行为。

典型神经网络模型
1. 神经元的特性
2. 神经元之间相互连接的形式——拓扑结构
3. 为适应环境而改善性能的学习规则

卷积神经网络、循环神经网络、递归神经网络

3.5.1 感知器模型:

是一种具有单层计算神经元的神经网络,网络的传递函数是线性阈值单元。原始的感知器神经网络只有一个神经元,因此只能输出两个值,适合简单的模式分类问题。
单层感知器进行模式识别的判决超平面由下式决定:


需要求得合适的向量来进行分类。
位于超平面上面和下面的训练集被分为两类。

感知器学习要考虑的候选假设空间H就是所有可能的实数值权向量的集合:

感知器训练法则:

其中。t是目标输出,o是感知器输出,是感知器训练参数。

如果训练样例是线性可分,则可以找到这个超平面。

梯度下降和delta法则
克服了感应器法则的不足,在线性不可分的训练样本上,收敛到最佳近似。
使用梯度下降来搜索可能的权向量的假设空间,以找到最佳拟合训练样例的权向量。

把delta法则理解为训练一个无阈值的感知器:

指定一个度量标准来衡量假设相对于训练样例的训练误差:

其中,d是训练集D的样例,是标好的标签,而是训练得到的结果。
寻找使得训练误差达到最小的训练参数。

其中

梯度下降法则的推导:
选取初始的随机权向量
应用线性单元到所有的训练样例,根据公式计算每一个权值的更行权向量

因为误差曲面仅包含一个全局的最小值,所以无论训练样例是否线性可分,算法都会收敛到具有最小误差的权向量,条件是使用足够小的学习速率。

算法的一种常用改进方法是随着梯度下降步数的增加逐渐减小学习速率。

3.5.2 随机梯度下降:

根据某一个单独样例的误差增量计算权值更新,得到近似的梯度下降搜索(随机取一个样例)。
可以看作为每一个单独的训练样例定义不同的误差函数。
下降速度足够小时,误差接近于原来的梯度下降法。

梯度下降法 vs 随机梯度下降法 vs mini-batch 随机梯度下降法:
梯度下降法在对训练模型的权值进行每次更新时,都利用了全部训练集的数据,计算出平均的权值更新值,再进行更新;而随机梯度下降法则是每次从训练集中随机抽取一个样本进行更新;mini-batch随机梯度下降法是梯度下降法和随机梯度下降法的折衷,每次更新既不是使用所有数据集,也不是只抽取一个样本,而是抽取一定数目的小样本集进行权值更新。
多层网络和反向传播算法
多层网络能够表示种类繁多的非线性曲面。
可微阈值单元:
sigmoid单元先计算它的输入的线性组合,然后应用到一个阈值上,阈值输出是输入的连续函数

其中,,将的值映射到[0,1]之间。

sigmoid函数单调递增,是一个挤压函数,将输出范围限定在0到1中,结果的导数很容易用函数本身表示。

反向传播算法:
采用梯度下降方法试图最小化网络输出值和目标值之间的误差平方。
网络的误差定义公式,对所有网络输出的误差求和:

其中,d表示训练样例,D是数据集,k是输出的向量分量,是训练样例d在k分量上的类标值,而是训练样例d在k分量上的预测结果。

损失函数:交叉熵函数 vs 均方误差函数:
神经网络经典损失函数-交叉熵和均方误差
损失函数用来根据正向传播算法得到的输出值和类标值对权值的调整。交叉熵损失函数主要用于描述概率分布向量之间的差异,因此常用于多分类问题使用概率分布表示分类可能性的情况,使用交叉熵损失函数需要正向传播的结果是概率分布,因此需要使用softmax函数将输出转变为概率分布;均方误差损失函数计算的是数值向量之间的误差,因此常用于输出节点个数为1的神经网络,即在回归问题中有比较广泛的应用。

均方误差损失函数的导数是;而交叉熵损失函数的导数为,乘以sigmoid函数的导数刚好等于

过度拟合解决方法:
交叉验证方法在可获得额外的数据提供验证集合时工作得很好,但是小训练集的过度拟合问题更为严重。
k-fold交叉方法:
把训练样例分为k份,然后进行k次交叉验证过程,每次使用不同的一份作为验证集合,其余k-1份合并作为训练集合。
3.5.3 BP模型:

也称为反向传播模型,是一种用于前向多层的反向传播学习算法。
在修改各人工神经元的连接权值时,所依据的是该网络的实际输出与其期望输出之差,将这一差值反向一层一层地向回传递。

BP模型的优缺点:
缺点:
学习算法的收敛速度慢。
网络中隐含节点个数的选取尚无理论的指导。
从数学角度上,BP算法是一种梯度最速下降法,可能陷入局部最小的情况,而不是全局最小。

3.6 支持向量机

支持向量机(Support Vector Machine)分类器的特点是能够同时最小化经验误差与最大化几何边缘区。因此支持向量机也被称为最大边缘区分类器。

支持向量机将向量映射到一个更高维的空间,在这个空间里建立一个最大间隔超平面。在分开数据的超平面的两边建有两个互相平行的超平面。平行超平面间的距离或差距越大,分类器的总误差越小。

训练样例:

支持向量机期望找到一个函数(超平面):

使得:

并且,SVM需要找到一个最大间隔的超平面,保证分类的结果具有最高的鲁棒性。也是因为鲁棒性的考虑,更改函数,使得:

间隔的定义如下:

image_1d9h9toa4h0k1ucc1mqfo871lqn9.png-76.3kB

如果训练集是线性可分的
目的:
求最小的

求解代条件的最小化问题:

标准拉格朗日方法


其中,都是向量。

如何训练集是非线性可分的,需要放松约束
引入松弛变量
目的:
求最小的

和线性可分的训练集的求解方式类似。

的取值的意义如下:

解决非线性可分的现象:

利用变换函数将输入数据映射到一个高维空间,使得数据在高维空间内线性可分。

转化后的空间被称为:feature space
转换前的空间被称为:input space

非线性映射将原始空间映射到特征空间:

在计算过程中将所有的都替换为,进行同样的运算。

比如:

这样会造成支持向量机的维数变得非常巨大,在时间和空间上需要的资源很庞大。
因为在计算过程中只使用了特征空间向量的点积,因此可以不需要进行现实地空间转换,而是只需要一个函数可以输出两个点在特征空间的点积即可,这个函数就是核函数。这样就节约了空间。

K表示了x和z在三维空间的点积

推导:

常用的核函数:
线性核函数、高斯核函数

支持向量机的困难:
1. SVM对大规模数据难以处理
2. SVM难以处理多分类问题(改进的SVM可以用于多分类)

3.7 集成学习

集成学习方法(Ensemble learning)通过将多个分类学习方法聚集在一起来提高分类准确率。

集成学习法由训练数据构建一组基分类器,然后通过对每个基分类器的预测进行投票来进行分类,即综合多种分类方法的结果然后做出决策。

构建分类器的过程中,一般有两种方法:

  • 使用训练集的不同子集训练得到不同的基分类器
  • 使用同一个训练集的不同属性子集训练得到不同的基分类器

构建集成分类器的方法包括:

  • 装袋 Bagging
  • 提升 Boosting

3.7.1 装袋(Bagging)

装袋又称为自助聚集,是一种根据均匀概率分布从数据中重复抽样(有放回)的技术。每一个自助样本集都和原数据集一样大。在每一个自助样本集上训练一个基分类器。

实质就是:有放回的随机抽样。

3.7.2 提升(Boosting)

提升是一种迭代的过程,用于自适应地改变训练样本的分布,使得基分类器聚焦在那些很难分的样本上。不像装袋,提升该每一个训练样本赋予一个权值,而且可以在每一轮提升过程结束时自动地调整权值。

提升训练时分类错误的训练样例的权值。

训练样本的权值可以用于以下方面:

  • 可以用作抽样分布,从原数据集中提取出自助样本集(权值越高的采样概率越高)
  • 基分类器可以使用权值学习有利于高权值样本的模型

3.7.3 AdaBoost

是对提升算法的一个具体实现。

  1. 首先给所有的训练样本分配相同的权值,并制定第t轮提升的权值为,通过调用基分类器,AdaBoost从训练集和中产生一个弱学习器,
  2. 然后使用训练样本来测试,并增加分类错误的样本的权重。这样就获得了一个更新的权重值
  3. AdaBoost从训练集和中通过再次调用基分类器产生另一个弱学习器。
  4. 这样反复执行T轮,最终的模型是由T个弱学习器基于权重的投票结果,这里每一个弱学习器的权重是在训练阶段产生的。每一轮的决策是根据不同分类器的加权投票结果。分类结果和类标的差值影响了权值,权值的改变和差值有关。

3.8 不平衡数据分类

不平衡数据:
是指在同一数据集中某些类的样本数远大于其他类的样本值,其中样本少的类为少数类(以下称为正类),样本多的类为多数类(以下称为负类)。

具有不平衡类分布的数据集出现在许多实际应用中,很多重要信息隐藏在少数类中。比如入侵行为、垃圾邮件等等。

3.9 分类模型的评价

  • 分类准确率
  • 计算复杂度
  • 可解释性
  • 可伸缩性
  • 稳定性
  • 鲁棒性
分类准确度
分类模型的性能常根据模型正确预测和错误预测的比率来衡量。
Confusion Matrix
描述二元分类问题

正确的正例(TP)、错误的正例(FP)、错误的负例(FN)、正确的负例(TN)

分类模型的误差大致分为两种,训练误差(training error)和泛化误差(generalization error)。

训练误差是在训练记录上错误预测分类样本的比例,泛化误差是模型在未知样本上的期望误差。

分类模型过度拟合
指对训练数据拟合太好,即训练误差很低,但泛化误差很高,这导致对分类模型未知记录分类的误差较高。
评估分类模型性能的方法
为了使分类结果更好地反映数据的分布特征,已经提出许多评估分类准确率的方法。
保持方法:
默认方法。在这种方法中,给定数据随机地划分为两个独立的集合,作为训练集和检验集,用于构造分类器,而测试集用于测试分类器的性能。

3.10 回归

回归分析可以对预测变量和响应变量之间的联系建模。

预测变量:
描述样本的感兴趣的属性
响应变量:
响应变量是预测的那个属性。

许多问题可以使用线性回归解决,而且很多问题可以通过对变量进行变换,将非线性问题转换为线性问题来解决。

3.10.1 线性回归

一元线性回归
一元线性回归分析涉及到一个响应变量y和一个预测变量x,它是最简单的回归形式,并用x的线性函数对y建模。即

这些系数可以通过最小二乘法进行求解,它将最佳拟合直线估计为最小化实际数据与直线的估计值的误差的直线。

对loss求最小值(求梯度等于[0,0]时的w和b),即可得到w和b的值。

多元线性回归
多元线性回归是一元线性回归的扩展,涉及多个预测变量。它允许响应变量y用表述样本的m个预测变量或属性的线性函数建模。

这时候使用最小二乘法,误差可以表示为

其中,表示第i个样例的第j个属性的值

3.10.2 非线性回归

响应变量y对预测变量x不是线性的。如:,

可以将看成另一个变量,将函数变为y关于z的线性函数。

3.10.3 逻辑回归

逻辑回归拓展了多元线性回归的思想,处理因变量y是二值的情形,自变量可以使分类变量、连续变量或二者的混合类型。
实质是使用sigmoid、交叉熵进行的分类问题

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注