聚类分析

机器学习/数据挖掘 专栏收录该内容
7 篇文章 0 订阅

 概要

  1. 聚类分析仅根据在数据中发现的描述对象及其关系的信息,将数据对象分组。其目标是,组内的对象相互之间是相似的(相关的),而不同组中的对象是不同的(不相关的)。组内的相似性(同质性)越大,组间差别越大,聚类就越好。

 

 

应用场景:

   聚类。


聚类分析的3种大类和其代表技术:

  1. 划分聚类法。K均值。是基于原型的、划分的聚类技术。它试图发现用户指定个数K的簇(由质心代表)。
  2. 层次聚类。凝聚的层次聚类。开始,每个点作为一个单点簇;然后,重复地合并两个最靠近的簇,直到产生单个的、包含所有点的簇。
  3. 基于密度的聚类。DBSCAN。是一种产生划分聚类的基于密度的聚类算法,簇的个数由算法自动地确定。低密度区域中的点被视为噪声而忽略,因此DBSCAN不产生完全聚类。

 

 

层次聚类的优缺点

优点

  1. 距离和规则的相似度容易定义限制少
  2. 不需要预先指定聚类数;
  3. 可以发现类的层次关系;
  4. 可以聚类成其他形状。

 

缺点:

  1. 计算复杂度太高;
  2. 奇异值也能产生很大影响;
  3. 算法很可能聚类成链状。

 

 

DBSCAN的优缺点

优点:

  1. 不需要事先知道要形成的簇的数量。
  2. 可以发现任意形状的簇类。
  3. 对噪声点不敏感。
  4. 对样本点的顺序不敏感。

 

缺点:

  1. 簇的密度变化太大时,DBSCAN会有麻烦。
  2. 对于高维数据,密度定义困难,DBSCAN也有问题。

 

Note

  1. K均值对于圆形区域聚类的效果很好,DBSCAN基于密度,对于集中区域效果很好。
  2. 对于不规则形状,K均值完全无法使用。DBSCAN可以起到很好的效果。

 

K均值的优缺点

优点:

  1. 简单,易于理解和实现。
  2. 时间复杂度低。

 

缺点:

  1. 要手工输入K值,对初始值的设置很敏感。
  2. 对噪声和离群点很敏感。
  3. 只用于数值型数据,不适用于categorical类型的数据。
  4. 不能解决非凸数据。
  5. 主要发现圆形或者球形簇,不能识别非球形的簇。

 

K均值

K-Means算法的基本思想是初始随机给定K个簇中心,按照最邻近原则把待分类样本点分到各个簇。然后按平均法重新计算各个簇的质心(这个点可以不是样本点),从而确定新的簇心。一直迭代,直到簇心的移动距离小于某个给定的值。

 

K-Means聚类算法主要分为4个步骤:

(1)选择K个初始质心,其中K是用户指定的参数,即所期望的簇的个数。

(2)每个点指派到最近的质心,而指派到一个质心的点集为一个簇。

(3)根据指派到簇的点,更新每个簇的质心。

(4)重复指派和更新步骤,直到簇不发生变化,或等价地,直到质心不发生变化。

 

下图展示了对n个样本点进行K-means聚类的效果,这里k取2:

(a)未聚类的初始点集

(b)随机选取两个点作为聚类中心

(c)计算每个点到聚类中心的距离,并聚类到离该点最近的聚类中去

(d)计算每个聚类中所有点的坐标平均值,并将这个平均值作为新的聚类中心

(e)重复(c),计算每个点到聚类中心的距离,并聚类到离该点最近的聚类中去

(f)重复(d),计算每个聚类中所有点的坐标平均值,并将这个平均值作为新的聚类中心

k均值常用的邻近度,质心和目标函数的选择:

邻近度函数:曼哈顿距离。质心:中位数。目标函数:最小化对象到其簇质心的距离和。

邻近度函数:平方欧几里德距离。质心:均值。目标函数:最小化对象到其簇质心的距离的平方和。

邻近度函数:余弦。质心:均值。最大化对象与其质心的余弦相似度和。

邻近度函数:Bregman散度。质心:均值。目标函数:最小化对象到其簇质心的Bregman散度和。

 

 

基本K均值算法:

  1. 选择K个点作为初始质心。
  2. repeat
  3.        将每个点指派到最近的质心,形成K个簇。
  4.        重新计算每个簇的质心。
  5. until    质心不发生变化。

 

由于基本K均值算法采取随机地选取初始质心的办法,导致最后形成的簇的质量常常很糟糕。在此基础上引出了基本K均值算法的扩充:二分K均值算法。二分K均值算法不太受初始化问题的影响。

 

 

算法主要分为以下步骤,一开始是把所有数据初始化为一个cluster,第二步从所有cluster中选其中一个出来用基本k-means算法(k设为2)再划分成两个cluster(初始时只有一个cluster),然后是一直重复第二步的划分(选一个cluster划成两个)直到得到k个cluster算法停止。

 

每次划分都是用基本K均值算法,可问题是从已有的cluster种应该选哪个cluster出来进行划分呢? 选取cluster有两种策略:

  1. 每次选的时候,都对已有的cluster计算误差和SSE,然后选一个SSE最大的一个cluster来进行划分。
  2. 每次都挑数据最多的那个cluster来进行划分。

一般都采取第一种策略。

 

二分K均值算法:

  1. 把所有数据作为一个cluster加入cluster list
  1. repeat
  1.        cluster list中挑选出一个SSE最大的cluster来进行划分
  2.        for i=1 to预设的循环次数
  3.                        用基本K均值算法把挑选出来的cluster划分成两个子cluster
  4.                        计算两个子clusterSSE和。
  5.        end for
  6.       for循环中SSE和最小的那两个子cluster加入cluster list
  7. until  cluster list拥有Kcluster

 

 

除此以外,每次划分不止执行一次基本K均值算法,而是预先设置一个ITER值,然后对这个cluster进行ITER次执行基本K均值运算。因为基本K均值每次一开始都是随机选K个质心来执行,所以i一般来说ITER次执行基本K均值,每次都会得到不同的两个cluster。那么应该选哪对cluster来作为划分以后的cluster呢?答案就是在每次循环中,每次都计算当次基本K均值划分出来的两个clusterSSE和,最后就选SSE和最小的那对cluster作为划分以后的cluster



层次聚类:

有两种产生层次聚类的基本方法:

  1. 凝聚的。从点作为个体簇开始,每一步合并两个最接近的簇。这需要定义簇的临近性概念。凝聚层次聚类技术最常见。
  2. 分裂的。从包含所有点的某个簇开始,每一步分裂一个簇,直到仅剩下单点簇。在这种情况下,我们需要确定每一步分裂哪个簇,以及如何分裂。

基本凝聚层次聚类算法:

  1. 如果需要计算临近度矩阵
  2. repeat
  3.         合并最接近的两个簇
  4.         更新临近度矩阵,以反映新的簇与原来的簇之间的临近性。
  5. until 仅剩下一个簇

簇之间的临近性有3种定义方式:

  1. MIN(单链)。不同簇中的两个最近的点之间的距离作为临近度。
  2. MAX(全链)。不同簇中的两个最远的点之间的距离作为临近度。
  3. GROUP组平均)。取自不同簇的所有点对距离的平均值作为临近度。

 

Note

  1. 簇与簇合并的原则永远是dist最小。
  2. 但在计算dist值的时候,可以采用MIN, MAX, GROUP AVG 3中方式得出dist的值。

 

 

DBSCAN

基于密度的聚类寻找被低密度区域分离的高密度区域。DBSCAN是一种简单、有效的基于密度的聚类算法。

 

 

DBSCAN算法:

  1. 将所有点标记为核心点、边界点或噪声点。
  2. 删除噪声点。
  3. 为距离在Eps之内的所有核心点之间连线。
  4. 每组连通的核心点形成一个簇。
  5. 将每个边界点指派到一个与之关联的核心点的簇中。

 

DBSCAN算法阐释:

  1. 算法需要用户输入2个参数: 半径Eps; 最小(少)点值MinPts
  2. 确定EpsMinPts需要用到K-距离的概念。K-距离就是“到第K近的点的距离”,按经验一般取值为4。并且,一般取K的值为MinPts参数的值。
  3. 首先计算每个点到所有其余点的欧式距离,升序排序后,选出每个点的“K距离”。
  4. 所有点的K距离形成一个集合D。对D进行升序排序,依此可以形成一个样本数据的K距离图。
  5. 图中急剧变化处的值,即为Eps
  6. 根据Eps和MinPts,计算出所有的核心点。
  7. 给核心点到小于Eps的另一个核心点赋予一个连线,到核心点的距离等于Eps的点被识别为边界点。最后,核心点、边界点之外的点都是噪声点。
  8. 将能够连线的点和与之关联的边界点都放到一起,形成了一个簇。

 

  • 0
    点赞
  • 0
    评论
  • 6
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

1. 项目背景 基于项目提供的汽车相关数据,通过聚类分析的方法实现汽车产品聚类,以构建汽车产品画像、分析产品定位、完成汽车竞品分析等要求。 2. 项目数据 项目提供的汽车数据包括26个字段共205条数据,数据文件为“car_price.csv” 26个字段可以划分为类别型变量和数值型变量两种,包括汽车的长/宽/高、汽车净重、燃油系统、燃油类型、驱动类型、峰值转速、里程数、汽车价格等。 3. 项目要求 通过聚类的方法构建汽车产品画像、分析不同类别汽车的产品定位,寻找Volkswagen大众汽车的竞品品牌。 4. 项目思路 第一步:数据字段理解 根据项目所提供的数据,对数据中26个字段进行理解。结合汽车行业的相关知识,26个字段可以大致归为两类:第一类是车辆自身属性(如燃油系统、燃油类型、汽缸数、峰值转速、汽车长宽高等);第二类是车辆的市场属性(如车辆名称、车辆价格、风险评估等级)。 26个字段主要分为数值型变量和类别型变量两类。 第二步:原始数据描述性统计及变量分布可视化 对原始数据进行描述性统计并对数据中的字段分布进行可视化(详情见主文档)。通过对原始数据的观察,数据不存在缺失值、不存在重复值,“CarName”字段存在部分车辆品牌名称错误的情况。 第三步:确定聚类方法,明确聚类要求 通过对原始数据的变量观察,该数据变量主要为数值型变量和类别型变量两类,且类别型变量数量较多,常用的K-means聚类只能分析数值型变量,无法考虑类别型变量所包含的信息。二阶段聚类法适用于包含数值型和类别型变量的混合数据,因此考虑使用二阶段聚类分析数据。 二阶段聚类法的要求是:类别型变量符合多项式分布(即变量的值分属几个类别);数值型变量间要相互独立,且数值型变量近似服从正态分布。项目所给出的数据中,类别型变量符合多项式分布,因此仅需进一步观察并处理数值型变量。 第四步:特征工程 数据清洗与新变量生成。原始数据指给出了车辆的名称,没有给出车辆所属品牌,结合最终聚类分析的需要,根据“CarName”字段提取出车辆所属品牌信息,命名为“brand”。同时对品牌名称中的错误拼写进行清洗。 变量相关性分析与可视化。由于二阶段聚类要求数值型变量间相互独立,所以需要对数值型变量间的相关性进行查看与处理。相关性分析结果表示14个数值型变量之间存在高相关性情况,需要结合汽车知识背景与变量特征进行进一步处理。 高相关变量的处理——“highwaympg”和“citympg”呈高度正相关。其实不管是高速mpg还是城市mpg,其本质都是mpg指标,而且通过观察数据,二者之间的差异较小(极值、均值),因此考虑将二者合并为一个指标'mpg',计算方式为取二者均值:mpg=(highwaympg+citympg)/2; 高相关性变量的处理——“price”变量与其余变量产生高相关性的频数最多,可能是因为车辆自身属性和配置的变动会直接影响着车辆的市场价格。此外,与其他变量相比,price属性属于车辆的市场销售属性(而非车辆自身属性),在聚类中更适合作为类别型变量,对车辆的价位进行划分,因此,考虑将price变量转换为类别型变量,按照其价格分布划分为Low price(20000)三类; 高相关性变量的处理——对于其余数值型变量,变量数目较多且多个变量之间存在相关性,因此考虑使用因子分析对数值型变量进行降维,以减少数值型变量的数目并使变量间相互独立。 第五步:数值型变量因子分析结果(基于SPSS实现) 利用SPSS对数值型变量进行因子分析,KMO值>0.8,巴特利球形检验p值=0,说明参与因子分析的变量间存在相关性,可以进行因子分析。最终得到两个因子。 第一个因子包括:车长、车宽、车净重、引擎尺寸、车轴距、mpg、马力、车内径比。简单将该因子归纳为车辆截面与马力因子; 第二个因子包括:车高、峰值转速、车压缩比。简单将该因子归纳为车辆垂面与转速因子; 第六步:两阶段聚类及结果(基于SPSS实现) 对处理后的数据进行两阶段聚类,最终将205辆车聚为两类。 根据SPSS聚类结果,第一类中包含120条车辆数据,占总数据的58.5%;第二类中包含85条车辆数据,占总数据的41.5%。两类簇数据规模近似,没有过大或过小的类簇。 根据SPSS聚类结果,聚类质量属于“良好”范围,仍有进一步改进和优化的空间。 根据SPSS聚类结果,显著区分两类类簇的变量(重要性>0.6)按重要性大小排序依次是驱动类型、燃油系统、车辆截面与马力因子、价格范围。 汽车产品画像与产品定位 根据区分类簇的四个重要标签来对数据中的汽车产品进行产品画像与产品定位。 第一类画像:驱动类型多为fwd(前轮驱动),燃油系统多
©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值