京公网安备 11010802034615号
经营许可证编号:京B2-20210330
聚类算法也因此更具有大数据挖掘的味道,话不多说,先贴张图,让大家对聚类有个大概的印象:
上图可明显看出店群被分为3个组(类),接下来让我们来瞧瞧聚类是啥玩意
聚类算法本质上是基于几何距离远近为标准的算法,最适合数据是球形的问题,首先罗列下常用的距离:
绝对值距离(又称棋盘距离或城市街区距离)
Euclide距离(欧几里德距离,通用距离)
Minkowski 距离(闵可夫斯基距离),欧几里德距离 (q=2)、绝对值距离(q=1)和切比雪夫距离(q=无穷大),这些都是闵可夫斯基的特殊情况。
Chebyshew(切比雪夫)距离
Mahalanobis距离(咱们前面介绍的马氏距离,这里复习一下)
Lance 和Wiliams距离
定性变量距离(二进制距离):
其中m1为所有项目中1-1配对的总数,m2是不配对的总数
R语言中,对上述的距离都有现成函数,只需要借参数加以制定即可,具体如下:
讲完距离后,需要对原始数据进行相应的处理,否则数据规模的差异会被算法误认为属性权重值而影响最终的聚类效果。我们需要进行数据的中心化和标准化 转换。中心化即让所有的数据都已0为中心点,常用的标准化的做法是将数据看作正态分布,只需要将数据除以标准差即可到达标准化作用。数据中心化和标准化 后,各个变量的取值大小相接近,这样各个变量都平等的发挥决策作用。
R语言中提供了相应的函数:
接下来先介绍最古老的聚类算法——层次聚类法
思想:
接下来介绍下类间距离:
最短距离法:两个类中所有点距离中的最小值;
最长距离法:两个类中所有点距离中的最大值;
中间距离法:取介于最小值和最大值两者间的距离;
类平均法:取所有距离的评价值;
重心法:类重心(均值)之间的距离;
离差平法和法:各项与评价项之差的平方的总和;
R提供了hclust()函数做层次聚类方法,下面举个简单的例子来说明下用法:
结果见下图:其中的哦第一板块的红色划分认为告诉R需要分几类后,R自动画出分类的展示:
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi