@Billy-The-Crescent
2019-06-13T09:15:23.000000Z
字数 11853
阅读 749
数据挖掘
分类
回归
数据挖掘技术与原理主目录:
目录
第三章目录:
分类是数据挖掘中的一种主要分析手段。
分类的任务是对数据集进行学习并构造一个拥有预测功能的分类模型,用于预测未知样本的类标号。
分类和回归都有预测的功能,但是:
- 分类预测的输出为离散或标称的属性;
- 回归预测的输出为连续属性
它们的共同点是它们都是有监督的预测模型
分类的步骤:
1. 首先将数据集划分为两部分:训练集和测试集。
2. 对训练集进行学习,构建分类模型。
3. 用建好的分类模型对测试集分类。
4. 最后,使用分类准确度高的分类模型对类标号位置的未来样本数据进行分类。
分类和聚类的分类是有监督的学习方法,而聚类是无监督的学习方法。
分类模型的学习方法:
- 基于决策树的分类方法
- 贝叶斯分类方法
- k-最邻近分类方法
- 神经网络方法
- 支持向量机方法
- 集成学习方法
决策树(Decision Tree)是一种树型结构,包括:决策节点(内部节点)、分支和叶节点三个部分。
内部节点
(决策节点)存放的是属性,而内部节点引出来的边
是属性可能的取值,也即是分支
。叶节点
存放的某个类标值(也就是一种可能的分类结果)。
决策树可以用来对未知样本进行分类,分类过程如下:从决策树的根节点开始,从上往下沿着某个分支往下搜索,直到叶节点,也就知道分类的类标是什么了。
重点解决两个问题:
1. 如何选择合适的属性作为决策树的节点去划分训练样本。
2. 如何在适当位置停止划分过程,从而得到大小合适的决策树。
决策树的属性选择:
虽然可以采用任何一个属性对数据集进行划分,但最后形成的决策树会差异很大。需要寻找合适的属性选择方法。
属性选择是决策树算法中重要的步骤,常见的属性选择标准包括信息增益
(information gain)和Gini系数。
在树的每个结点上选择具有最高信息增益的属性作为当前结点的划分属性。Gini系数用来度量数据集的数据关于类的纯度。
决策树学习的目的是希望生成能够解释数据集结构并且预测能力强的一棵树,在树完全生长的时候有可能预测能力反而降低, 为此通常需要获得大小合适的树。选择尽量短的。
有两种避免过度拟合的方法:
- 定义树的停止生长条件,常见条件包括最小划分实例数、划分阈值和最大树深度等。
- 对完全生长决策树进行剪枝,方法是对决策树的子树进行评估,若去掉该子树后整个决策树表现更好,则该子树将被剪掉。
决策树构建的经典算法
Hunt算法是许多经典决策树算法如ID3、C4.5
使用信息增益作为属性的选择标准
首先检测所有属性,选择信息增益最大的属性产生决策树结点,由该属性的不同取值建立分支,再对各分支的子集递归调用该方法建立决策树结点的分支,直到所有子集仅包括同一个类别的数据为止。
假定S为训练集,S的目标属性C具有m个可能的类标号值,C = {C1,C2,...Cm},假定训练集S中,Ci在所有样本中出现的频率为,则该训练集S所包含的信息熵定义为:
信息增益:
划分前样本数据集的不纯程度(熵)和划分后样本数据集的不纯程度(熵)的差值。
假设样本划分前数据集为S,并用属性A划分样本集S,则按属性A划分S的信息增益Gain(S,A)为样本集S的熵减去按属性A划分S后样本子集的熵:
计算出所有属性的信息熵,选出最大的属性A作为该层的决策节点。
继承了ID3算法的优点,但是进行了一些改进:
- 能够处理连续性属性数据和离散型属性数据。
- 能够处理具有缺失值的数据。
- 使用
信息增益率
作为决策树的属性选择标准。- 对生成树进行剪枝处理,以获取简略的决策树。
C4.5算法描述:
比如属性A的记录为:34, 45, 56, 66, 67, 87, 92, 95. 这个时候将34和45的中间值39.5作为阈值进行划分计算信息熵,然后对45和56的中间值50.5作为阈值计算信息熵······最后计算出最小的信息熵的阈值作为真正的划分阈值。
C4.5算法只能分成两类,但是可以在子集中再进行划分,因此可以隐式地划分成多个类别。(先前使用过的连续属性可以再次使用)
分裂信息越大,熵越大。
如果某个属性的分类取值较多,则它的信息熵会偏大,但信息增益率由于考虑了分裂信息而降低,进而消除了属性取值数目所带来的的影响。
选择信息增益率最大的属性作为分类属性。
C4.5算法采用概率的方法,为缺失值的每个可能值赋予一个概率,而不是简单地将最常见的值替代该缺失值。
C4.5算法过程可以分为两个过程:
1. 产生完全生长树。
2. 进行后剪枝操作。
贝叶斯分类方法是一种基于统计的学习方法。
是一种利用概率统计知识进行学习分类的方法
如:预测一个数据对象属于某个类别的概率。
如:计算邮件是垃圾邮件和合法邮件的概率,取概率大的位预测结果。
主要的算法有:
- 朴素贝叶斯分类方法。
- 贝叶斯信念网络分类算法。
假定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的人购买电脑的概率。从而可以预测哪些人比较可能购买计算机。
计算中最大的那个作为类标号。
由于对于所有分类是一样的,因此比较就可以了。而在数据集中出现的次数一定是很少的,因此无法直接统计。在这种情况下,可以假设每一个属性之间相互独立
,这样就可以用概率的乘积代替联合概率。
朴素贝叶斯分类方法的“朴素”就朴素在用了独立性的假设。
在所有的中求出最大的那个作为最终的类标号。
其中表示数据集D中属于类的样本的个数,而s是数据集D的样本总数。
是属性的取值,若是离散的随机变量,则和上一个一样;如果是连续型随机变量,则将其看成正态分布。
这里的和分别是数据集中属于的样本属于的值的平均值和标准差。
若最大,则选取作为分类结果。
朴素贝叶斯分类算法在计算概率的时候存在概率为0及概率值可能很小的情况,因此在某些情况下需要考虑条件概率的Laplace估计以及解决小概率相乘溢出问题。
其中n是类的实例总数,是类的训练样例中取值为的样例数,l是称为等价样本大小的参数,而p是用户定义的参数,但是大小等于,k是属性A的取值个数。
k-最近邻分类算法是一种基于实例的学习算法,它不需要先使用训练样本进行分类器的设计,而是直接用训练集对数据样本进行分类,确定其类别标号。
k-最近邻算法的基本思想:寻找邻居,并进行投票
KNN算法根据得到的最近邻列表中样本的多数类进行分类,实现方法是通过投票进行多数表决得到最终类标号y'。
神经网络(Neural Network)是模拟人脑思维方式的数学模型,它是在现在生物学研究人脑组织成果的基础上提出的,用来模拟人类大脑神经网络的结构和行为。
典型神经网络模型
1. 神经元的特性
2. 神经元之间相互连接的形式——拓扑结构
3. 为适应环境而改善性能的学习规则
卷积神经网络、循环神经网络、递归神经网络
是一种具有单层计算神经元的神经网络,网络的传递函数是线性阈值单元。原始的感知器神经网络只有一个神经元,因此只能输出两个值,适合简单的模式分类问题。
单层感知器进行模式识别的判决超平面由下式决定:
感知器学习要考虑的候选假设空间H就是所有可能的实数值权向量的集合:
感知器训练法则:
其中。t是目标输出,o是感知器输出,是感知器训练参数。
如果训练样例是线性可分,则可以找到这个超平面。
把delta法则理解为训练一个无阈值的感知器:
指定一个度量标准来衡量假设相对于训练样例的训练误差:
其中,d是训练集D的样例,是标好的标签,而是训练得到的结果。
寻找使得训练误差达到最小的训练参数。
其中
因为误差曲面仅包含一个全局的最小值,所以无论训练样例是否线性可分,算法都会收敛到具有最小误差的权向量,条件是使用足够小的学习速率。
算法的一种常用改进方法是随着梯度下降步数的增加逐渐减小学习速率。
根据某一个单独样例的误差增量计算权值更新,得到近似的梯度下降搜索(随机取一个样例)。
可以看作为每一个单独的训练样例定义不同的误差函数。
下降速度足够小时,误差接近于原来的梯度下降法。
其中,,将的值映射到[0,1]之间。
sigmoid函数单调递增,是一个挤压函数,将输出范围限定在0到1中,结果的导数很容易用函数本身表示。
其中,d表示训练样例,D是数据集,k是输出的向量分量,是训练样例d在k分量上的类标值,而是训练样例d在k分量上的预测结果。
均方误差损失函数的导数是;而交叉熵损失函数的导数为,乘以sigmoid函数的导数刚好等于。
也称为反向传播模型,是一种用于前向多层的反向传播学习算法。
在修改各人工神经元的连接权值时,所依据的是该网络的实际输出与其期望输出之差,将这一差值反向一层一层地向回传递。
支持向量机(Support Vector Machine)分类器的特点是能够同时最小化经验误差与最大化几何边缘区。因此支持向量机也被称为最大边缘区分类器。
支持向量机将向量映射到一个更高维的空间,在这个空间里建立一个最大间隔超平面。在分开数据的超平面的两边建有两个互相平行的超平面。平行超平面间的距离或差距越大,分类器的总误差越小。
训练样例:
支持向量机期望找到一个函数(超平面):
使得:
并且,SVM需要找到一个最大间隔的超平面,保证分类的结果具有最高的鲁棒性。也是因为鲁棒性的考虑,更改函数,使得:
间隔的定义如下:
求解代条件的最小化问题:
标准拉格朗日方法
其中,,,都是向量。
和线性可分的训练集的求解方式类似。
的取值的意义如下:
解决非线性可分的现象:
利用变换函数将输入数据映射到一个高维空间,使得数据在高维空间内线性可分。
转化后的空间被称为:feature space
转换前的空间被称为:input space
非线性映射将原始空间映射到特征空间:
在计算过程中将所有的都替换为,进行同样的运算。
比如:
这样会造成支持向量机的维数变得非常巨大,在时间和空间上需要的资源很庞大。
因为在计算过程中只使用了特征空间向量的点积,因此可以不需要进行现实地空间转换,而是只需要一个函数可以输出两个点在特征空间的点积即可,这个函数就是核函数。这样就节约了空间。
K表示了x和z在三维空间的点积
推导:
常用的核函数:
线性核函数、高斯核函数
支持向量机的困难:
1. SVM对大规模数据难以处理
2. SVM难以处理多分类问题(改进的SVM可以用于多分类)
集成学习方法(Ensemble learning)通过将多个分类学习方法聚集在一起来提高分类准确率。
集成学习法由训练数据构建一组基分类器,然后通过对每个基分类器的预测进行投票来进行分类,即综合多种分类方法的结果然后做出决策。
构建分类器的过程中,一般有两种方法:
- 使用训练集的不同子集训练得到不同的基分类器
- 使用同一个训练集的不同属性子集训练得到不同的基分类器
构建集成分类器的方法包括:
- 装袋 Bagging
- 提升 Boosting
装袋又称为自助聚集,是一种根据均匀概率分布从数据中重复抽样(有放回)的技术。每一个自助样本集都和原数据集一样大。在每一个自助样本集上训练一个基分类器。
实质就是:有放回的随机抽样。
提升是一种迭代的过程,用于自适应地改变训练样本的分布,使得基分类器聚焦在那些很难分的样本上。不像装袋,提升该每一个训练样本赋予一个权值,而且可以在每一轮提升过程结束时自动地调整权值。
提升训练时分类错误的训练样例的权值。
训练样本的权值可以用于以下方面:
- 可以用作抽样分布,从原数据集中提取出自助样本集(权值越高的采样概率越高)
- 基分类器可以使用权值学习有利于高权值样本的模型
是对提升算法的一个具体实现。
具有不平衡类分布的数据集出现在许多实际应用中,很多重要信息隐藏在少数类中。比如入侵行为、垃圾邮件等等。
- 分类准确率
- 计算复杂度
- 可解释性
- 可伸缩性
- 稳定性
- 鲁棒性
正确的正例(TP)、错误的正例(FP)、错误的负例(FN)、正确的负例(TN)
分类模型的误差大致分为两种,训练误差(training error)和泛化误差(generalization error)。
训练误差是在训练记录上错误预测分类样本的比例,泛化误差是模型在未知样本上的期望误差。
回归分析可以对预测变量和响应变量之间的联系建模。
许多问题可以使用线性回归解决,而且很多问题可以通过对变量进行变换,将非线性问题转换为线性问题来解决。
这些系数可以通过最小二乘法进行求解,它将最佳拟合直线估计为最小化实际数据与直线的估计值的误差的直线。
对loss求最小值(求梯度等于[0,0]时的w和b),即可得到w和b的值。
这时候使用最小二乘法,误差可以表示为
其中,表示第i个样例的第j个属性的值
响应变量y对预测变量x不是线性的。如:,
可以将或看成另一个变量,将函数变为y关于z的线性函数。
逻辑回归拓展了多元线性回归的思想,处理因变量y是二值的情形,自变量可以使分类变量、连续变量或二者的混合类型。
实质是使用sigmoid、交叉熵进行的分类问题