《数据分析与挖掘实战》总结及代码练习---chap5 挖掘建模---聚类分析 关联模型 离群点检测

目录

5.2 聚类分析

5.3 关联规则

Apriori算法:

5.5离群点检测

常用检测方法

基于模型的离群点检测

1. 一元正态分布 离群点检测:

2. 混合模型的离群点检测:特殊的统计模型

基于聚类的离群点检测


 


5.2 聚类分析

企业经常面临销售问题:

如何通过餐饮客户消费行为习惯对用户进行细分,找到有价值的客户群体 和 需要关注的客户群体

如何对菜品分析,那些菜品畅销毛利润高,那些菜品滞销毛利率低

聚类

没有给定划分类别的情况下,根据相似性对样本进行分组的分析方法,无标记,无监督学习

类别

主要算法

划分 分裂方法

K-Means,K-mediods,CALRANS算法

层次分析方法

BRICH(平衡迭代规约和聚类),CURE(算法),CAHMELLON算法(动态模型)

基于密度的方法

DBSCAN(局域高密度连接区域),DENCLUE(密度分布函数),OPTICS算法(对象排序识别)

基于网格的方法

STING算法,CLIOUE算法(聚类高维空间),WAVE-CLUSTER算法(小波变换)

基于模型的方法

统计学方法,神经网络方法

常用聚类方法

kmeans

快速聚类法,最小化误差的基础上 将数据划分为预定的类数K,简单方便易于处理大数据

K-mediods

不采用簇平均值作为聚类中心,选用中位值 簇中心

系统聚类

多层次聚类,分类单位由高到低,位置越低,包含的对象越少,这些对象和自己爱你的共同特征也越多,适合小数据量使用,大数据量非常慢

所有对象分类完成后,重新计算k个聚类中心,连续性数据,取均值,分类变量时,均值无法定义,可取K-众数方法

连续属性

样本之间距离,样本与簇之间的距离,簇与簇之间的距离,需要进行0均值规范化,

       欧几里得距离,曼哈顿距离,民科夫斯基距离

文档数据:

       转化为词矩阵形式

       文档之间相似度计算公式:dij=cos(i,j)=I*J / (|I|*|J|)

目标函数:

       SSE误差平方和

       对于两种不同的聚类效果,选择误差平方和较小的聚类结果

       连续属性SSE=sum_i~K( sum_x in Ei( dist(ei,x)^2) )

python主要聚类分析方法:

       Kmeans,层次聚类,FCM,神经网络聚类

KMeans

K均值聚类

sklearn.cluster

AffinityPropagation

吸引力传播聚类,2007年提出,几乎优于所有其他算法,不需要指定聚类数,但运行效率比较低

sklearn.cluster

MeanShift

均值漂移聚类

sklearn.cluster

SPectralCluster

谱聚类,效果比K均值好,速度比K均值快

sklearn.cluter

AgglomerativeClustering

层次聚类,给出一颗聚类层次树

sklearn.cluter

DBCSAN

具有噪声的密度聚类算法

sklearn.cluter

BIRCH

综合的层次聚类算法,可以处理大规模数据的聚类

sklearn.cluter

聚类可视化工具TSNE:高维数据可视化,如果数据维度高于3维,难以展示,TSNE提供了有效的数据降维方式,可以在二位空间或者三维空间中展示聚类结果。

 

5.3 关联规则

菜品之间相互关联,对立竞争关系(负相关),互补关系(正相关),隐藏在历史点菜数据中,通过对据进行挖掘,发现客户点餐规则,快速识别客户口味,推荐相关菜品,引导客户消费,提高客户就餐体验。

         发现超市销售数据库中不同的商品之间的关联关系,哪种商品会在购物中同时购买,电脑 鼠标,面包 牛奶,面包促销 牛奶提价。关联销售的的牛奶有可能增加超市整体的利润。

         数据挖掘活跃的研究方法之一,数据集中找出各项之间的关联分析

算法

描述

apriori

关联规则最常用最经典的挖掘频繁项集的算法,核心思想,通过连接产生候选项 及 支持度,然后通过剪枝生成频繁项集

FP-Tree

针对Apriori的固有的多次扫描事物数据集的缺陷,提出的不产生候选频繁项集的方法。apriori和FP-Tree都是寻找频繁项集的算法

Eclat算法

Eclat算法 深度优先算法,采用垂直数据表示形式,在概念格理论的基础上利用基于前缀的等价关系将搜索空间划分为较小的子空间

灰色关联法

分析和确定 个因素之间的影响程度 或 若干个子因素(子序列)对主因素(母序列)的贡献度而进行的一种分析方法

 

Apriori算法:

         以超市数据为例,提取关联规则的最大困难在于当存在很多商品时,可能的商品组合(规则的前项和后项)的数目回答道一种令人望而却步的程度。因而各种关联规则分析的算法 从不同的方面入手,减小可能的搜索空间&数据扫描的次数。

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

         关联规则和频繁项集:

         项集A、B同时发生的概率:关联规则的支持度

                  support(A=>B)=P(AUB)

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

                  confidence(A=>B)=P(B|A)=support(a & b)/support(a)

         Ariori找出事物中的频繁项集,利用最大的频繁项集 与 预先设定的最小置信度阈值 生成强的关联规则。

性质:

         频繁项集的所有非空子集 必须是频繁项集: 那么 向频繁项集中添加事物A,新的项集IUA一定不是频繁项集

实现过程:

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

         连接步: 找到K项集,对于给定的最小值尺度阈值,分别对1项候选集C1,剔除小于阈值的项集,得到1项频繁项集L1,下一步由L1自身连接2项候选集C2,保留C2中满足约束条件的项集得到2项频繁集,记为L2;再下一步由L2连接L3,产生3项候选集C3,保留C2中满足约束条件的3项候选集,记为L3,。。。。。一直循环下去,得到最大频繁项集Lk

         剪枝步: 紧接着琳姐不,在产生候选项Ck的过程中,起到减小搜索空间的作用。由于Ck是Lk-1与L1产生的,Apriori的性质,频繁项集的所有非空子集必须是频繁项集,所以不满足该性质的项集不会存在于CK中,该过程就是剪枝

         由频繁项集产生强关联规则:

未超过最小支持度阈值的项集已经被剔除,如果剩下这些规则又满足了最小执行度阈值,那就挖掘出了强关联规则。

5.5离群点检测

如何检测异常订单,异常刷卡消费?离群点检测 or 偏差检测 来解决

定义:发现与大部分数据显著不同的对象,通常方法会忽略这种数据点,但是异常的数据往往隐藏着更大的研究价值

离群点成因:数据来源于不同的类,自然变异,数据测量,收集误差

分类:

分类标准

分类名称

分类描述

数据范围

全局离群点/局部离群点

整体看来某些对象没有显示离群特征,但是从局部看来却显示了一定的离群性

数据类型

数值型离群点/分类型离群点

数据集的属性类型进行划分

属性个数

一维/多维离群点

一个对象 可能有多个属性

 

常用检测方法

检测方法

方法描述

方法评估

基于统计

大部分的基于统计的离群点检测方法是构建一个概率分布模型,并计算符合该模型的概率,将具有的低概率的对象视为离群点

前提:知道数据集服从什么分布,对于高维数据检验效果可能很差

基于邻近度

在数据对象之间定义邻近度度量,将远离大部分点的数据视为 离群点

简单,二维或者三维数据可以做散点图进行观察;

大数据集不适用;参数选择敏感;

具有全局阈值,不能处理具有不同密度区域的数据集

基于密度

数据集存在不同密度区域,基于密度的观点进行分析: 低密度区域中的对象,对象的离群点得分-->  反比与周围对象密度的逆

给出了对象是离群点的定量度量,并且即使数据不同的区域也能够很好处理,大数据集不适用,承诺书选择困难

基于聚类

丢弃远离其他簇的小簇;

更系统的方法:首先聚类所有对象,然后评估对象属于簇的程度

高度有效;

聚类算法所产生的簇的质量  -->  对产生的离群点的质量影响非常大

 

基于统计的离群点检测方法:

需要满足统计学原理,如果分布已知,则检测可能有效。

基于邻近度的离群点检测:

比统计学方法更加一般,更容易使用,因为确定数据集有意义的邻近度度量,比确定他的统计分布更加容易

基于密度 和 基于邻近度的检测 密切相关:

密度常用于临近度定义(密度定义:1. 到K个最邻近的平均距离的倒数,如果距离小则密度高;2. DBSCAN聚类方法,密度:该对象指定距离d内的对象数 )

基于模型的离群点检测

估计概率分布的参数 建立概率模型,如果一个数据对象 不符合该分布 à 认为是离群点

1. 一元正态分布 离群点检测:

N(μ,sigma),3sigma原则,落在3sigma之外的概率只有.0027

2. 混合模型的离群点检测:特殊的统计模型

若干统计分布 对数据进行建模: 可以是任何分布 ,通常多元正态分布(易理解,效果好)

每个分布-->一个簇 --> 簇参数 --> 对应簇提供(中心,发散描述)

每个簇可以有这些分布之一识别

不同概率分布(如:类型相同,参数不同)  得到 的观测值集合

分布参数:

通过统计方法,数据估计得到:

K个分布, A是所有参数的集合,A={α1,α2,α3,… αK},第j个分布α,

m个对象chi={x1,x2,…,xm},

P(xi|αj) 第j分布产生xi的概率

第j部分产生一个对象的概率值wj(1<=j<=K), ∑wj=1

对象x的概率由以下公式产生:

P(x|A)=∑wj*Pj(x|theta_j)

整个对象集的概率

P(chi|A)=i=1m∑wj*Pj(x|theta_j)

         聚类时,使用两个分布的混合模型建模,一个分布为正常数据,另外一个分布对应离群点

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

        

1. 将所有数据放入正常的数据集,这时离群点集为空,在用一个迭代过程将数据对象从正常数据集 转移到 利群点集,该转移能够提高数据的总似然

2. 假设数据集U包含来自两个概率分布的数据对象:M大多数正常数据对象的分布,N离群点对象的分布。数据总概率的分布可以记作:

         U(x)=(1-λ)M(x)+λN(x)

M(x)数据估计得到,N(x) 通常取均匀分布Mt,Nt分别为时刻t正常数据和离群点对象集合。初始t=0,M0=D,N0=none

3. 整个数据集上的似然

4. 正常数据对象的数量 比 离群点 对象数量大很多,因此当一个数据对象移动到离群点集后,正常数据集的变化并不大,这样正常数据对象的总似然的规则保持不变。

5. 此外,假定离群点服从均匀分布,则移动到离群点集的每一个数据对象的离群的似然贡献一个固定的量。这样,当一个数据对象移动到离群点集时,数据的总似然的改变 粗略等于 该对象在均匀分布下的概率(λ加权) 减去 该对象在正常数据点下的概率分布。

结论离群点 在正常分布下的概率比在均匀分布下的概率小

 

基于聚类的离群点检测

聚类分析 用于发现局部强相关的对象组

异常检测 用来发现 不与其他对象强相关的对象,聚类分析可以用于异常值检测

1. 丢弃 远离其他簇的小簇 or 小于某个最小阈值的所有簇

可以和其他聚类技术一起使用,但是需要最小簇大小 与 其他簇之间距离阈值

对于簇的个数的选择高度敏感,很难讲离群点的得分附加到对象上

 

2. 基于原型的聚类:更加系统

  • 聚类所有对象,评估属于簇的程度(对象到簇中心的距离);如果删除一个对象 目标显著改进(删除离群点可以显著改善MSE),可将该对象视为离群点
  • 对象到原型的相对距离(点到质心的距离与簇中所有点到质心的距离中位数之比),

步骤

  1. 进行聚类,选择聚类算法,将样本聚类为K簇,找到各簇的质心
  2. 计算对象到最近质心的距离
  3. 计算对象到最近质心的相对距离
  4. 与给定阈值作比较

改进

  1. 离群点对初始聚类有影响:聚类--> 删除离群点 -->  再次聚类(不能保证结果最优)
  2. 潜在离群点集合--> 聚类 --> 簇在变化 -->  不再强属于任何簇的对象-->划分为离群点;      如果离群点集中某队型强属于某个簇: 将其从该点集删除 --> 继续循环聚类 --> 结束

评价:

1. (不能保证产生最优解,甚至不比简单的算法好,使用相对距离时结果甚至会更加差)

2. 对象是否属于离群点 依赖于 簇的个数,没有简单的答案

solution:

  1. 不同的簇个数重复分析
  2. 找出大量小簇:较小的簇倾向于更加凝聚;存在大量小簇时,一个对象是离群点,则它多半是真正的离群点

猜你喜欢

转载自blog.csdn.net/weixin_41521681/article/details/86508795
今日推荐