码迷,mamicode.com
首页 > 编程语言 > 详细

R语言数据挖掘实战系列(5)

时间:2017-07-23 22:32:09      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:离群点检测   关联规则   时序模式   聚类分析   分类与预测   

R语言数据挖掘实战系列(5)——挖掘建模

一、分类与预测

分类和预测是预测问题的两种主要类型,分类主要是预测分类标号(离散属性),而预测主要是建立连续值函数模型,预测给定自变量对应的因变量的值。

1.实现过程

(1)分类

分类是构造一个分类模型,输入样本的属性值,输出对应的类别,将每个样本映射到预先定义好的类别。分类模型建立在已有类标记的数据集上,模型在已有样本上的准确率可以方便地计算,所以分类属于有监督的学习。

(2)预测

预测是建立两种或两种以上变量间相互依赖的函数模型,然后进行预测或控制。

(3)实现过程

分类模型分为两步:第一步是学习步,通过归纳分析训练样本集来建立分类模型得到分类规则;第二步是分类步,先用已知的测试样本集评估分类规则的准确率,如果准确率是可以接受的,则使用该模型对未知类标号的待测样本集进行预测。

预测模型的实现也分为两步:第一步是通过训练集建立预测属性(数值型的)的函数模型,第二步在模型通过检验后进行预测或控制。

2.常用的分类与预测算法

表5-1 常用分类与预测算法简介

算法名称算法描述
回归分析回归分析是确定预测属性(数值型)与其他变量间相互依赖的定量关系最常用的统计学方法。包括线性回归、非线性回归,Logistic回归、岭回归、主成分回归、偏最小二乘回归等模型
决策树决策树采用自顶向下的递归方式,在内部节点进行属性值的比较,并根据不同的属性值从该节点向下分支,最终得到的叶节点是学习划分的类
人工神经网络人工神经网络是一种模仿大脑神经网络结构和功能而建立的信息处理系统,表示神经网络的输入与输出变量之间的模型
贝叶斯网络贝叶斯网络又称信度网络,是Bayes方法的扩展,是目前不确定知识表达和推理领域最有效的理论模型之一
支持向量机支持向量机是一种通过某种非线性映射,把低维的非线性可分转化为高维的线性可分,在高维空间进行线性分析的算法

3.回归分析


表5-2 常用的回归模型分类


回归模型名称使用条件算法描述
线性回归因变量与自变量是线性关系对一个或多个自变量和因变量之间的线性关系进行建模,可用最小二乘法求解模型系数
非线性回归因变量与自变量之间不都是线性关系对一个或多个自变量和因变量之间的非线性关系进行建模。如果非线性关系可以通过简单的函数变换转化为线性关系,用线性回归的思想求解;如果不能转化,用非线性最小二乘方法求解
Logistic回归因变量一般有1和0(是否)两种取值是广义线性回归模型的特例,利用logistic函数将因变量的取值范围控制在0和1之间,表示取值为1的概率
岭回归参与建模的自变量之间具有多重共线性是一种改进最小二乘估计的方法
主成分分析参与建模的自变量之间具有多重共线性主成分回归是根据主成分分析的思想提出来的,是对最小二乘法的一种改进,它是参数估计的一种有偏估计。可以消除自变量之间的多重共线性

4.决策树


决策树是一种树状结构,它的每一个叶节点对应着一个分类,非叶节点对应着在某个属性上的划分,根据样本在该属性上的不同取值将其划分为若干个子集。对于非纯的叶节点,多数类的标号给出到达这个节点的样本所属的类。构造决策树的核心问题是在每一步如何选择适当的属性对样本做拆分。对于一个分类问题,从已知类标记的训练样本中学习并构造出决策树是一个自上而下、分而治之的过程。

表5-3 决策树算法分类


决策树算法算法描述
ID3算法其核心是在决策树的各级节点上,使用信息增益方法作为属性的选择标准,来帮助确定生成每个节点时所采用的合适属性
C4.5算法C4.5决策树生成算法相对于ID3算法的重要改进是使用信息增益率来选择节点属性。C4.5算法可以克服ID3算法存在的不足:ID3算法只适用于离散的描述属性,而C4.5算法既能够处理离散的描述属性,也可以处理连续的描述属性
CART算法CART决策树是一种十分有效的非参数分类和回归方法,通过构建树、修剪树、评估树来构建一个二叉树。当终节点是连续变量时,该树为回归树;当终节点是分类变量时,该树为分类树


5.人工神经网络

人工神经网络(ANN)是模拟生物神经网络进行信息处理的一种数学模型。人工神经元是人工神经网络操作的基本信息处理单位。人工神经网络的学习也称为训练,指的是神经网络在受到外部肩颈的刺激下调整神经网络的参数,使神经网络以一种新的方式对外部环境做出反应的一个过程。在分类与预测中,人工神经网络主要使用有指导的学习方式,即根据给定的训练样本,调整人工神经网络的参数以使网络输出接近于已知的样本类标记或其他形式的因变量。

神经网络训练是否完成常用误差函数(也称目标函数)E来衡量。当误差函数小于某一个设定的值时即停止神经网络的训练。

使用人工神经网络模型需要确定网络连接的拓扑结构、神经元的特征和学习规则等。常用的实现分类和预测的人工神经网络算法如下:

表5-4 人工神经网络算法


算法名称算法描述
BP神经网络
BP神经网络是一种按误差逆传播算法训练的多层前馈网络,学习算法是δ学习规则,是目前应用最广泛的神经网络模型之一
LM神经网络LM神经网络是基于梯度下降法和牛顿法结合的多层前馈网络,特点:迭代次数少,收敛速度快,精确度高
RBF径向基神经网络RBF径向基神经网络能够以任意精度逼近任意连续函数,从输入层到隐含层的变换是非线性的,而从隐含层到输出层的变换是线性的,特别适合于解决分类问题
FNN模糊神经网络FNN模糊神经网络是具有模糊权系数或者输入信号是模糊量的神经网络,是模糊系统与神经网络相结合的产物,它汇聚了神经网络与模糊系统的有点,集联想、识别、自适应及模糊信息处理于一体
GMDH神经网络GMDH网络也称为多项式网络,它是前馈神经网络中常用的一种用于预测的神经网络。它的特点是网络结构不固定,而且在训练过程中不断改变
ANFIS自适应神经网络神经网络镶嵌在一个全部模糊的结构之中,在不知不觉中向训练数据学习,自动产生、修正并高度概括出最佳的输入与输出变量的隶属函数以及模糊规则;另外,神经网络的各层结构与参数也都具有了明确的、易于理解的物理意义

BP(Back Propagation,反向传播)算法的特征是利用输出后的误差来估计传输层的直接前导层的误差,再用这个误差估计更前一层的误差,如此一层一层的反向传播下去,就获得了所有其他各层的误差估计。这样就形成了将输出层表现出的误差沿着与输入传送相反的方向逐级向网络的输入层传递的过程。


BP算法只用到均方误差函数对权值和阈值的一阶导数(梯度)的信息,使得算法存在收敛速度缓慢、易陷入局部极小等缺陷。

6.分类与预测算法评价

为了有效判断一个预测模型的性能表现,需要一组没有参与预测模型建立的数据集,并在该数据集上评价预测模型的准确率,这组独立的数据集叫测试集。模型预测效果评价,通常用绝对误差与相对误差、平均绝对误差、均方误差、均方根误差等指标来衡量。

(1)绝对误差与相对误差

设Y为实际值,Y^表示预测值,则称E为绝对误差,计算公式如下:E=Y-Y^;e为相对误差,计算公式为:e=E/Y

(2)平均绝对误差(MAE)

(3)均方误差(MSE),是预测误差平方之和的平均数,它避免了正负误差不能相加的问题。

(4)均方根误差(RMSE),是均方误差的平方根,代表了预测值的离散程度,也叫标准误差,最佳拟合情况为RMSE=0.

(5)平均绝对百分误差(MAPE),一般认为MAPE小于10时,预测精度较高。

(6)Kappa统计

Kappa统计是比较两个或多个观测者对同一事物,或观测者对同一事物的两次或多次观测结果是否一致,以由机遇造成的一致性和实际观测的一致性之间的差别大小作为评价基础的统计指标。Kappa统计量和加权Kappa统计量不仅可以用于无序和有序分类变量资料的一致性、重现性检验,而且能给出一个反映一致性大小的“量”值。

Kappa取值在[-1,1]之间,其值的大小均有不同意义:

  • Kappa=1:说明两次判断的结果完全一致

  • Kappa=-1:说明两次判断的结果完全不一致

  • Kappa=0:说明两次判断的结果是机遇造成

  • Kappa<0:说明一致程度比机遇造成的还差,两次检验结果很不一致,在实际应用中无意义

  • Kappa>0:此时说明有意义,Kappa愈大,说明一致性愈好

  • Kappa≥0.75:说明已经取得相当满意的一致程度

  • Kappa<0.4:说明一致程度不够

(7)识别准确度(Accuracy)

(8)识别精确率(Precision)

(9)反馈率(Recall)

(10)ROC曲线

受试者工作特性(Receiver Operating Characteristic,ROC)曲线是一种非常有效的模型评价方法,可为选定临界值给出定量提示。将灵敏度(Sensitivity)设在纵轴,1-特异性(1-Specificity)设在横轴,就可得出ROC曲线图。该曲线下的积分面积(Area)大小与每种方法的优劣密切相关,反映分类器正确分类的统计概率,其值越接近1说明该算法效率越好。

(11)混淆矩阵

混淆矩阵(Confusion Matrix)是模式识别领域中一种常用的表达形式。它描绘样本数据的真实属性与识别结果类型之间的关系,是评价分类器性能的一种常用方法。。

7.R语言主要分类与预测算法函数

表5-5 R语言主要分类与预测函数


函数名函数功能软件包
lda()构建一个线性判别分析模型MASS
NaiveBayes()构建一个朴素贝叶斯分类器klaR
knn()构建一个K最近邻分类模型class
rpart()构建一个分类回归树模型rpart、maptree
bagging()构建一个集成学习分类器adabag
randomForest()构建一个随机森林模型randomForest
svm()构建一个支持向量机模型e1071
nnet()构建一个人工识别神经网络nnet

二、聚类分析


1.常用聚类分析算法

聚类分析是在没有给定划分类别的情况下,根据数据相似度进行样本分组的一种方法。聚类模型可以建立在无类标记的数据上,是一种非监督的学习算法。聚类的输入是一组未被标记的样本,聚类根据数据自身的距离或相似度将它们划分为若干组,划分的原则是组内距离最小化而组间(外部)距离最大化。

表5-6 常用聚类方法


类别包括的主要算法
划分(分裂)方法K-Means算法(K-平均)、K-MEDOIDS算法(K-中心点)、CLARANS算法(基于选择的算法)
层次分析方法BIRCH算法(平衡迭代规约和聚类)、CURE算法(代表点聚类)、CHAMELEON算法(动态模型)
基于密度的方法DBSCAN算法(基于高密度连接区域)、DENCLUE算法(密度分布函数)、OPTICS算法(对象排序识别)
基于网格的方法STING算法(统计信息网络)、CLIOUE算法(聚类高维空间)、WAVE-CLUSTER算法(小波变换)
基于模型的方法统计学方法、神经网络方法

表5-7 常用聚类分析算法


算法名称算法描述
K-MeansK-均值聚类也叫快速聚类法,在最小化误差函数的基础上将数据划分为预定的类数K。该算法原理简单并便于处理大量数据
K-中心点K-均值算法对孤立点的敏感性,K-中心点算法不采用簇中对象的平均值作为簇中心,而选中簇中离平均值最近的对象作为簇中心
系统聚类系统聚类也叫多层次聚类,分类的范围由高到低呈树形结构,且所处的位置越低,其所包含的对象就越少,但这些对象间的共同特征越多。该聚类方法只适合在小数据量时使用,数据量大时速度会非常慢

2.K-Means聚类算法


K-Means算法是典型的基于距离的非层次聚类算法,在最小化误差函数的基础上将数据划分为预定的类数K,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。

(1)算法过程

  • 从N个样本数据中随机选取K个对象作为初始的聚类中心

  • 分别计算每个样本到各个聚类中心的距离,将对象分配到距离最近的聚类中

  • 所有对象分配完成后,重新计算K个聚类的中心

  • 与前一次计算得到的K个聚类中心比较,如果聚类中心发生变化,转第二步,否则转第五步

  • 当质心不发生变化时停止并输出聚类结果

在实践中,为了得到较好的结果,通常以不同的初始聚类为中心,多次运行K-Means算法。在所有对象分配完成后,重新计算K个聚类的中心时,对于连续数据,聚类中心取该簇的均值,但是当样本的某些属性是分类变量是,均值可能无定义,可以使用K-众数方法。

(2)数据类型与相似性的度量

  • 连续属性

    对于连续属性,要先对各属性值进行零-均值规范化,再进行距离的计算。K-Means聚类算法中,一般需要度量样本之间的距离、样本与簇之间的距离以及簇与簇之间的距离。

    度量样本之间的相似性最常用的是欧几里得距离、曼哈顿距离和闵可夫斯基距离;样本与簇之间的距离可以用样本到簇中心的距离d(ei,x);簇与簇之间的距离可以用簇中心的距离d(ei,ej)。

  • 文档数据

    对于文档数据使用余弦相似性度量,先将文档数据整理成文档-词矩阵格式。

(3)目标函数

使用误差平方和SSE作为度量聚类质量的目标函数,对于两种不同的聚类结果,选择误差平方和较小的分类结果。

3.聚类分析算法评价

聚类分析仅根据样本数据本身将样本分组。其目标是,组内的对象相互之间是相似的(相关的),而不同组中的对象是不同的(不相关的)。组内的相似性越大,组间差别越大,聚类效果就越好。

  • purity评价法:只需计算正确聚类数占总数的比例

  • RI评价法

    这是一种用排列组合原理对聚类进行评价的手段,RI评价公式为:RI=(R+W)/(R+M+D+W),其中,R是指被聚在一类的两个对象呗正确分类了,W指不应该被聚在一类的两个对象被正确分类了,M指不应该放在一类的对象被错误地放在了一类,D指不应该分开的对象被错误地分开了。

  • F评价法

    这是基于RI方法衍生出的一个方法。

4.R语言主要聚类分析算法函数

R语言里面实现的聚类主要包括:K-均值聚类、K-中心点聚类、密度聚类以及EM聚类。

表5-8 聚类主要函数列表


函数名函数功能软件包
kmeans()构建一个K-均值聚类模型stats
pam()构建一个K-中心点聚类模型cluster
dbscan()构建一个密度聚类模型fpc
Mclust()构建一个EM聚类模型mclust

三、关联规则


关联规则分析是数据挖掘中最活跃的研究方法之一,目的是在一个数据集中找出各项之间的关联关系,而这种关系并没有在数据中直接表示出来。

  1. 常用关联规则算法

表5-9 常用关联规则算法

算法名称算法描述
Apriori关联规则最常用也是最经典的挖掘频繁项集的算法,其核心思想是通过连接产生候选项及其支持度然后通过剪枝生成频繁项集
FP-Tree针对Apriori算法固有的多次扫描事物数据集的缺陷,提出的不产生候选频繁项集的方法。Apriori和FP-Tree都是寻找频繁项集的算法
Eclat算法Eclat算法是一种深度优先算法,采用垂直数据表示形式,在概念格理论的基础上利用基于前缀的等价关系将搜索空间划分为较小的子空间
灰色关联法分析和确定各因素之间的影响程度或是若干个子因素(子序列)对主因素(母序列)的贡献度而进行的一种分析方法

2.Apriori算法

Apriori算法是最经典的挖掘频繁项集的算法,第一次实现了在大数据集上可行的关联规则提取,其核心思想是通过连接产生候选项与其支持度然后通过剪枝生成频繁项集。

(1)关联规则和频繁项集

  • 关联规则的一般形式

    项集A、B同时发生的概率称为关联规则的支持度(也称为相对支持度):

    Support(A =>B)=P(A∩B)

    项集A发生,则项集B发生的概率为关联规则的置信度:

    Confidence(A => B)=P(B|A)

  • 最小支持度和最小置信度

    最小支持度是用户或专家定义的衡量支持度的一个阈值,表示项目集在统计意义上的最低重要性;最小置信度是用户或专家定义的衡量置信度的一个阈值,表示关联规则的最低可靠性。同时满足最小支持度阈值和最小置信度阈值的规则称作强规则。

  • 项集

    项集是项的集合。包括k个项的项集称为k项集。项集的出现概率是所有包含项集的事务计数,又称作绝对支持度或支持度计数。如果项集I的相对支持度满足预定义的最小支持度阈值,则I是频繁项集。频繁k项集通常记作Lk.

  • 支持度计数

    项集A的支持度计数是事务数据集中包含项集A的事务个数,简称为项集的频率或计数。

    已知项集的支持度计数,则规则A=>B的支持度和置信度很容易从所有事务计数、项集A和项集A∩B的支持度计数推出。

    Support(A=>B)=(A,B同时发生的事务个数)/(所有事务个数)=(Support_count(A∩B))/(Total_count(A))

    Confidence(A=>B)=P(A|B)=(Support(A∩B))/(Support(A))=Support_count(A∩B)/Support_count(A)

    也就是说,一旦得到所有事务个数,A、B和A∩B的支持度计数,就可以导出对应的关联规则A=>B和B=>A,并可以检查该规则是否是强规则。

(2)Apriori算法:使用候选产生频繁项集

Apriori算法的主要思想是超出存在于事务数据集中最大的频繁项集,在利用得到的最大频繁项集与预先设定的最小置信度阈值生成强关联规则。

  • Apriori的性质

    频繁项集的所有非空子集也必须是频繁项集。根据该性质可以得出:向不是频繁项集I的项集中添加事务A,新的项集I∩A一定也不是频繁项集。

  • Apriori算法实现的两个过程

    a.找出所有的频繁项集(支持度必须大于等于给定的最小支持度阈值),在这个过程中连接步和剪枝步互相融合,最终得到最大的频繁项集Lk。

    连接步:连接步的目的是找到k项集。

    剪枝步:紧接着连接步,在产生候选项Ck的过程中起到减小搜索空间的目的。

    b.由频繁项集产生强关联规则:由过程a可知,未超过预定的最小值尺度阈值的项集已被剔除,如果剩下这些规则又满足了预定的最小置信度阈值,那么就挖掘出了强关联规则。

四、时序模式

常用按时间顺序排列的一组随机变量X1,X2,...,Xt来表示一个随机事件的时间序列,简记为{Xt};用x1,x2,...,xn或{xt,t=1,2,...,n}表示该随机序列的n个有序观察值。称之为序列长度为n的观察值序列。

  1. 时间序列算法

表5-10 常用时间序列模型

模型名称描述
平滑法平滑法常用于趋势分析和预测,利用修匀技术,削弱短期随机波动对序列的影响,使序列平滑化。根据所用平滑技术的不同,可具体分为移动平均法和指数平滑法。
趋势拟合法趋势拟合法把时间作为自变量,相应的序列观察值作为因变量,建立回归模型。根据序列的特征,可具体分为线性拟合和曲线拟合。
组合模型

时间序列的变化主要受到长期趋势(T)、季节变动(S)、周期变动(C)和不规则变动(ε)这四个因素的影响。根据序列的特点,可以构建加法模型和乘法模型。

加法模型:x1=Tt+St+Ct+εt

乘法模型:xt=Tt+St+Ct+εt

AR模型

x1=φ0+φ1x(t-1)+φ2x(t-2)+...+φpx(t-p)+εt

以前p期的序列值xt-1,xt-2,...xt-p为自变量、随机变量Xt的取值xt为因变量建立线性回归模型。

MA模型

xt=μ+εt-θ1ε(t-1)-θ2ε(t-2)-...-θqε(t-q)

随机变量Xt的取值xt与以前各期的序列值无关,建立xt与前q期的随机扰动ε(t-1),ε(t-2),...,ε(t-q)的线性回归模型。

ARMA模型xt=φ0+φ1x(t-1)+φ2x(t-2)+...+φpx(t-p)+εt-θ1ε(t-1)-θ2ε(t-2)-...-θqε(t-q)随机变量Xt的取值xt不仅与以前p期的序列值相关,还与前p期的随机扰动有关。
ARIMA模型许多非平稳序列差分后会显示出平稳序列的性质,称这个非平稳序列为差分平稳序列。对差分平稳序列可以使用ARIMA模型进行拟合。
ARCH模型ARCH模型能准确地模拟时间序列变量的波动性变化,适用于序列具有异方差性并且异方差函数短期自相关。
GARCH模型以及衍生模型GARCH模型称为广义ARCH模型,是ARCH模型的拓展。相比于ARCH模型,GARCH模型及其衍生模型更能反映实际序列中的长期记忆性、信息的非对称性等性质。
2.时间序列的预处理

拿到一个观察值序列后,首先要对它的纯随机性和平稳性进行检验,这两个重要的检验成为序列的预处理。

对于纯随机序列,又叫白噪声序列,序列的各项之间没有任何相关关系,序列在进行完全无序的随机波动,可以终止对该序列的分析。

对于平稳非白噪声序列,它的均值和方差是常数,现已有一套非常成熟的平稳序列的建模方法。通常是建立一个线性模型来拟合该序列的发展。ARMA模型是最常用的平稳序列拟合模型。

对于非平衡序列,由于它的均值和方差不确定,处理方法一般是将其转变为平稳序列,这样就可以应用有关平稳时间序列的分析方法。如果一个时间序列经差分运算后具有平稳性,称该序列为差分平稳序列,可以使用ARIMA模型进行分析。

3.平稳时间序列分析

ARMA模型的全称是自回归移动平均模型,它是目前最常用的拟合平稳序列的模型,它又可细分为AR模型、MA模型和ARMA三大类,都可以看做是多元线性回归模型。

4.非平稳时间序列分析

对非平稳时间序列的分析方法可以分为确定性因素分解的时序分析和随机时序分析两大类。

5.R语言主要时序模式算法函数

R语言实现的时序模式算法主要是ARIMA模型,在使用该模型进行建模时,需要进行一系列判别操作,主要包含平稳性检验、白噪声检验、是否差分、AIC和BIC指标值、模型定阶,最后再做预测。

表5-11 时序模式算法函数列表

函数名函数功能所属程序包
acf()计算自相关系数,画自相关系数图R语言通用函数
pacf()计算偏相关系数,画偏相关系数图R语言通用函数
unitrootTest()
对观测值序列进行单位根检验fUnitRoots
diff()对观测值序列进行差分计算R语言通用函数
armasubsets()模型定阶,确定时序模式的建模参数,创建回归时序模型TSA
arima()设置时序模式的建模参数,创建ARIMA时序模型或者把回归时序模型转换为ARIMAX模型R语言通用函数
Box test()检测ARIMA模型是否符合白噪声检验R语言通用函数
forecast()应用构建的时序模型进行预测forecast
五、离群点检测

离群点检测的任务是发现与大部分其他对象显著不同的对象。

(1)离群点的成因:数据来源与不同的类、自然变异、数据测量和收集误差。

(2)离群点的类型

表5-12离群点的大致分类

分类标准分类名称分类描述
从数据范围全局离群点和局部离群点从整体来看,某些对象没有利群特征,但是从局部来看,却显示了一定的离群性。
从数据类型数值型离群点和分类型离群点这是以数据集的属性类型进行划分的
从属性的个数一维离群点和多维离群点一个对象可能有一个或多个属性
1.离群点检测方法

表5-13常用离群点检测方法

离群点检测方法方法描述方法评估
基于统计大部分基于统计的离群点检测方法是构建一个概率分布模型、并计算对象符合该模型的概率,把具有低概率的对象视为离群点基于统计模型的离群点检测方法的前提是必须知道数据集服从什么分布;对于高维数据,检验效果可能很差
基于邻近度通常可以在数据对象之间定义邻近性度量,把远离大部分点的对象视为离群点简单、二维或三维的数据可以做散点图观察;大数据集不适用;对参数选择敏感;具有全局阈值,不能处理具有不同密度区域的数据集
基于密度考虑数据集可能存在不同密度区域这一事实,从基于密度的观点分析,离群点是在低密度区域中的对象。一个对象的离群点得分是该对象周围密度的逆给出了对象是离群点的定量度量,并且即使数据具有不同的区域也能够很好的处理;大数据集不适用;参数选择是困难的
基于聚类一种利用聚类检测离群点的方法是丢弃远离其他簇的小簇;另一种更系统的方法,首先聚类所有对象,然后评估对象属于簇的程度(离群点得分)基于聚类技术来发现离群点可能是高度有效的;聚类算法产生的簇的质量对该算法产生的离群点的质量影响非常大
基于密度的离群点检测与基于邻近度的离群点检测密切相关,因为密度常用邻近度定义:一种是定义密度为到K个最邻近的平均距离的倒数,如果该距离小,则密度高;另一种是使用DBSCAN算法,一个对象周围的密度等于该对象指定距离d内对象的个数。

2.基于模型的离群点检测算法

通过估计概率分布的参数来建立一个数据模型,如果一个数据对象不能很好地跟该模型拟合,即如果它很可能不服从该分布,则它是一个离群点。

(1)一元正态分布中的离群点检测

(2)混合模型的离群点检测

混合是一种特殊的统计模型,它使用若干统计分布对数据建模。每一个分布对应一个簇,而每个分布的参数提供对应簇的描述,通常用中心和发散描述。

混合模型将数据看做不同的概率分布得到的观测值的集合。概率分布可以是任何分布,但是通常是多元正态的。

总体来讲,混合模型数据产生过程为:给定几个类型相同但参数不同的分布,随机地选取一个分布并由它产生一个对象。重复该过程m次,其中m是对象的个数。

聚类时,混合模型方法假定数据来自混合概率分布,并且每个簇可以用这些分布之一识别。同样,对于离群点检测,数据用两个分布的混合模型建模,一个分布为正常数据,而另一个为离群点。

聚类和离群点检测的目标都是估计分布的参数,以最大化数据的总似然。

这里提供一种离群点检测常用的简单方法:先将所有数据对象放入正常数据集,这时离群点集为空集;再用一个迭代过程将数据对象从正常数据集转移到离群点集,只要该转移能提高数据的总似然。

(3)基于聚类的离群点检测方法

a.丢弃远离其他簇的小簇:通常,该过程可以简化为丢弃小于某个最小阈值的所有簇。这种方法可以和其他任何聚类技术一起使用,但是需要最小簇大小和小簇与其他簇之间距离的阈值。而且这种方案对簇个数的选择高度敏感,使用这个方案很难将离群点得分附加到对象上。

b.基于原型的聚类

另一种更系统的方法,首先聚类所有对象,然后评估对象属于簇的程度(离群点得分)。在这种方法中,可以用对象到它的簇中心的距离来度量属于簇的程度。特别地,如果删除一个对象导致该目标的显著改进,则可将该对象视为离群点。

对于基于原型的鸡肋,评估对象属于簇的程度(离群点得分)主要有两种方法:一是度量对象到簇原型的距离,并用它作为该对象的离群点得分;二是考虑簇具有不同的密度,可以度量簇到原型的相对距离,相对距离是点到质心的距离与簇中所有点到质心距离的中位数之比。

  1. 进行聚类。选择聚类算法,将样本集聚为K簇,并找到各簇的质心。

  2. 计算各对象到它的最近质心的距离。

  3. 计算各对象到它的最近质心的相对距离。

  4. 与给定的阈值作比较。

    如果某对象距离大于该阈值,就认为该对象是离群点。

基于聚类的离群点检测的改进如下:

  1. 离群点对初始聚类的影响:通过聚类检测离群点,离群点会影响聚类结果。为了处理该问题,可以使用如下方法:对象聚类,删除离群点,对象再次聚类(这个不能保证产生最优结果)。

  2. 更复杂的方法:取一组不能很好地拟合任何簇的特殊对象,这组对象代表潜在的离群点。随着聚类过程的进展,簇在变化。不在强属于任何簇的对象被添加到潜在的离群点集合;而当前在给集合中的对象被测试,如果它现在强属于一个簇,就可以将它从潜在的离群点集合中移除。聚类过程结束时还留在该集合中的点被分类为离群点

对象是否被认为是离群点可能依赖于簇的个数。一种策略是对于不同的簇个数重复该分析;另一种方法是找出大量小簇,其想法是:

  1. 较小的簇倾向于更加凝聚;

  2. 如果存在大量小簇时一个对象是离群点,则它多半是一个真正的离群点。

    不利的一面是一组离群点可能形成小簇从而逃避检测。


本文出自 “游骑兵” 博客,请务必保留此出处http://ccnupxz.blog.51cto.com/8803964/1950248

R语言数据挖掘实战系列(5)

标签:离群点检测   关联规则   时序模式   聚类分析   分类与预测   

原文地址:http://ccnupxz.blog.51cto.com/8803964/1950248

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!