连载|机器学习|聚类算法(上)

简介: 连载|机器学习|聚类算法(上)

聚类任务

对于训练样本的标记信息是未知的情况下,我们的目标就会变成通过对无标记训练样本的学习来揭示数据的内在性质及规律,我们把这样的学习方法称之为“无监督学习”,而在此类学习任务中,研究最多应用最广的就是“聚类”。


在聚类算法中,我们试图将数据集中的样本划分为若干个不相交的子集,每个子集称为一个“簇”。而对于样本来说,我们并不知道其内部存在的类别,所以我们分出的这些“簇”就可能对应着一些潜在的概念(类别),与分类算法的区别就在于,这些潜在的概念在之前我们是完全未知的。


一般的聚类结果展示如下图所示:

image.jpeg

基于不同的学习策略,人们设计出多种类型的聚类算法,在学习算法之前,我们先来了解一下性能度量和距离运算。


性能度量

我们在之前的文章中了解过了分类算法的评估方式,对于聚类来说,我们有一些特殊的性能度量方式,让我们来了解一下。


对于聚类来说,我们把每个类别分成了相应的“簇”,直观上看我们希望“物以类聚”,而想要把很多“簇”聚的好,我们就希望“簇内的相似度”高且”簇间的相似度“低。


聚类的性能度量大致分类两类,一类是将聚类结果与某个”参考模型“进行比较,称为”外部指标“;另一类是直接考察聚类结果而不利用任何参考模型,称为”内部指标“。

image.png

根据上面的式子,我们可以得到下面这些常用的外部指标:


Jaccard系数

image.png

FM指数

image.png

Rand指数

image.png

很显然,对于上面的性能度量结果来说,结果值都在[0,1]之间,并且值越大越好。

image.png

根据上面的式子,我们可以得到下面这些常用的内部指标:


DB指数

image.png

Dunn指数

image.png

很显然,DBI的值越小越好,DI的值越大越好。


距离度量

对于函数d i s t ( ) dist()dist(),如果他表示一个距离的度量,我们就要满足一些基本性质:

image.png

image.png

注:当我们遇到的不同属性的重要性不同的时候,我们也可以对特征进行加权。


K-Means聚类

聚类算法中,最典型最常用的算法就是K-Means(K均值)算法,让我们来了解一下K-Means的原理及流程。


K-Means算法最大的特点是简单,好理解,运算速度快,但是只能应用于连续型的数据,并且一定要在聚类前需要手工指定要分成几类。K-Means算法的流程如下:

image.png

K-Means++(初始化优化)


K-Means++(初始化优化)

根据K-Means算法的原理我们不难发现,最初的质心选择对聚类的结果和运行时间有着很大的影响,因此我们需要选择合适的K个质心,K-Means++就使用了更优化的方法来初始化质心,让我们来看一下K-Means++的优化策略:

(1)从输入的数据点集合中随机选择一个点作为第一个聚类中心μ 1

(2)对于数据集中的每一个点image.png ,计算它与最近聚类中心(指已选择的聚类中心)的距离D(x);

(3)选择一个新的数据点作为新的聚类中心,选择的原则是:D(x)较大的点,被选取作为聚类中心的概率较大;

(4)重复(2)(3)步骤直到选择出k个聚类质心;

(5)利用这k个质心来作为初始化质心去运行标准的K-Means算法。


过程中提到的D(x)计算方法如下:

image.png

elkan K-Means(距离计算优化)

elkan K-Means(距离计算优化)


在传统的K-means算法中,我们每次迭代都需要计算所有样本到所有质心的距离,这样做会大大浪费我们的时间,elkan K-Means算法就是从距离的优化,去减少一些不必要的距离计算,来看一下它的原理。

elkan K-Means利用了两边之和大于等于第三边,以及两边之差小于第三边的三角形性质,来减少距离的计算。

image.png

利用上边的两个规律,elkan K-Means比起传统的K-Means迭代速度有很大的提高。但是如果我们的样本的特征是稀疏的,有缺失值的话,这个方法就不使用了,此时某些距离无法计算,则不能使用该算法。


Mini Batch K-Means(大样本优化)

Mini Batch K-Means(大样本优化)

在传统的K-Means算法中,要计算所有的样本点到所有的质心的距离。如果样本量非常大,比如达到10万以上,特征有100以上,此时用传统的K-Means算法非常的耗时,就算加上elkan K-Means优化也依旧。在大数据时代,这样的场景越来越多。此时Mini Batch K-Means应运而生。


顾名思义,Mini Batch,也就是用样本集中的一部分的样本来做传统的K-Means,这样可以避免样本量太大时的计算难题,算法收敛速度大大加快。当然此时的代价就是我们的聚类的精确度也会有一些降低。一般来说这个降低的幅度在可以接受的范围之内。


在Mini Batch K-Means中,我们会选择一个合适的批样本大小batch size,我们仅仅用batch size个样本来做K-Means聚类。这batch size个样本般是通过无放回的随机采样得到的。


为了增加算法的准确性,我们一般会多跑几次Mini Batch K-Means算法,用得到不同的随机采样集来得到聚类簇,选择其中最优的聚类簇。


K-means小结

K-Means的主要优点有:


  • 原理比较简单,实现也是很容易,收敛速度快;
  • 聚类效果较优;
  • 算法的可解释度比较强;
  • 主要需要调参的参数仅仅是簇数k。


K-Means的主要缺点有:


  • K值的选取不好把握;
  • 对于不是凸的数据集比较难收敛;
  • 如果各隐含类别的数据不平衡,比如各隐含类别的数据量严重失衡,或者各隐含类别的方差不同,则聚类效果不佳;
  • 采用迭代方法,得到的结果只是局部最优;
  • 对噪音和异常点比较的敏感。


相关文章
|
15小时前
|
机器学习/深度学习 分布式计算 并行计算
【机器学习】怎样在非常大的数据集上执行K-means算法?
【5月更文挑战第13天】【机器学习】怎样在非常大的数据集上执行K-means算法?
|
15小时前
|
机器学习/深度学习 算法 数据挖掘
【机器学习】列举几种情况,在这些情况下K-means算法难以取得较好效果
【5月更文挑战第13天】【机器学习】列举几种情况,在这些情况下K-means算法难以取得较好效果
|
15小时前
|
机器学习/深度学习 传感器 算法
【机器学习】在聚类算法中,使用曼哈顿距离和使用欧式距离有什么区别?
【5月更文挑战第12天】【机器学习】在聚类算法中,使用曼哈顿距离和使用欧式距离有什么区别?
|
15小时前
|
数据采集 机器学习/深度学习 人工智能
【机器学习】在使用K-means算法之前,如何预处理数据?
【5月更文挑战第12天】【机器学习】在使用K-means算法之前,如何预处理数据?
|
15小时前
|
机器学习/深度学习 算法 数据可视化
【机器学习】比较分层聚类(Hierarchical Clustering)和K-means聚类算法
【5月更文挑战第12天】【机器学习】比较分层聚类(Hierarchical Clustering)和K-means聚类算法
|
15小时前
|
算法 数据安全/隐私保护 计算机视觉
基于二维CS-SCHT变换和LABS方法的水印嵌入和提取算法matlab仿真
该内容包括一个算法的运行展示和详细步骤,使用了MATLAB2022a。算法涉及水印嵌入和提取,利用LAB色彩空间可能用于隐藏水印。水印通过二维CS-SCHT变换、低频系数处理和特定解码策略来提取。代码段展示了水印置乱、图像处理(如噪声、旋转、剪切等攻击)以及水印的逆置乱和提取过程。最后,计算并保存了比特率,用于评估水印的稳健性。
|
15小时前
|
算法 计算机视觉
基于高斯混合模型的视频背景提取和人员跟踪算法matlab仿真
该内容是关于使用MATLAB2013B实现基于高斯混合模型(GMM)的视频背景提取和人员跟踪算法。算法通过GMM建立背景模型,新帧与模型比较,提取前景并进行人员跟踪。文章附有程序代码示例,展示从读取视频到结果显示的流程。最后,结果保存在Result.mat文件中。
|
15小时前
|
资源调度 算法 块存储
m基于遗传优化的LDPC码OMS译码算法最优偏移参数计算和误码率matlab仿真
MATLAB2022a仿真实现了遗传优化的LDPC码OSD译码算法,通过自动搜索最佳偏移参数ΔΔ以提升纠错性能。该算法结合了低密度奇偶校验码和有序统计译码理论,利用遗传算法进行全局优化,避免手动调整,提高译码效率。核心程序包括编码、调制、AWGN信道模拟及软输入软输出译码等步骤,通过仿真曲线展示了不同SNR下的误码率性能。
8 1
|
15小时前
|
存储 算法 数据可视化
基于harris角点和RANSAC算法的图像拼接matlab仿真
本文介绍了使用MATLAB2022a进行图像拼接的流程,涉及Harris角点检测和RANSAC算法。Harris角点检测寻找图像中局部曲率变化显著的点,RANSAC则用于排除噪声和异常点,找到最佳匹配。核心程序包括自定义的Harris角点计算函数,RANSAC参数设置,以及匹配点的可视化和仿射变换矩阵计算,最终生成全景图像。
|
15小时前
|
算法 Serverless
m基于遗传优化的LDPC码NMS译码算法最优归一化参数计算和误码率matlab仿真
MATLAB 2022a仿真实现了遗传优化的归一化最小和(NMS)译码算法,应用于低密度奇偶校验(LDPC)码。结果显示了遗传优化的迭代过程和误码率对比。遗传算法通过选择、交叉和变异操作寻找最佳归一化因子,以提升NMS译码性能。核心程序包括迭代优化、目标函数计算及性能绘图。最终,展示了SNR与误码率的关系,并保存了关键数据。
15 1