【大数据分析与挖掘】K-Means聚类算法

介绍

对于有监督的数据挖掘算法而已,数据集中需要包含标签变量(即因变量y的值)。但在有些场景下,并没有给定的y值,对于这类数据的建模,一般称为无监督的数据挖掘算法,最为典型的当属聚类算法

K-Means聚类算法利用距离远近的思想将目标数据聚为指定的k个簇,进而使样本呈现簇内差异小,簇间差异大的特征。

聚类算法的目的就是依据已知的数据,将相似度高的样本集中到各自的簇中。
聚类算法不仅可以实现数据分隔,还可以用于异常点监控。
K-Means的思想是基于点(样本点)之间的距离实现“物以聚类”。

区别

支持向量机、决策树等经典的机器学习算法主要用于分类问题,即根据一些已给定类别的样本,训练某种分类器,使得它能够对类别未知的样本进行分类。
与分类问题不同,聚类是在事先不知道任何样本类别标签的情况下,通过数据之间的内在关系把样本划分为若干类别,使得同类别样本之间的相似度高,不同类别之间的样本相似度低。

具体步骤

1.从数据集中随机选择k个样本点作为原始的“簇中心”
2.分别计算每个样本点到k个“簇中心”的距离,并把各样本点划分到离该点最近的“簇中心”所代表的簇类中
3.重新计算各簇中所有样本点的均值,并以均值作为新的k个“簇中心”
4.不断重复2.3,直到“簇中心”的变化趋于稳定,形成最终的k个簇

优缺点

优点:
1.K-Means聚类算法原理和实现都简单易懂、且功能非常强大和灵活
2.对于大数据集,是可伸缩和高效的,其计算复杂度是O(NKt)接近于线性,其中N是数据对象的数目,K是聚类的簇数,t是迭代的轮数。
缺点:
1.K值需要事先人工指定,如果设置不当,可能会导致聚类效果不佳
2.对于初始簇中心选取非常敏感,不同的簇中心,可能会导致不同的聚类结果
3.对异常点非常敏感,因为中心点是通过样本均值确定的
4.不适合发现非球形的簇,因为它是基于距离的方式判断样本之间的相似度

例题

考虑一维数据集{15,15,16,19,19,20,22,28,35,40},根据K-Means算法的主要步骤,假设K=2,并随机选择16和22作为两个初始簇中心,使用欧式距离作为相似性判断,请问正确的聚类结果?

1.选择两个初始簇中心:K1=16,K2=22,计算每个点到簇中心的距离,第1次的聚类结果为:
{15,15,16,19,19}和{20,22,28,35,40}
2.重新计算两个簇的中心点,即:把各簇中所有数据的平均值作为新的簇中心。
新的两个簇中心为:16.8 和 29 (均为虚点,即数据集中不存在的点)
重新计算每个点到两个新的簇中心的距离,第2次的聚类结果为:
{15,15,16,19,19,20,22}和{28,35,40}
3.重新计算两个簇的中心点,即:把各簇中所有数据的平均值作为新的簇中心。
新的两个簇中心为:18 和 34.33 (均为虚点,即数据集中不存在的点)
重新计算每个点到两个新的簇中心的距离,第3次的聚类结果为:
{15,15,16,19,19,20,22}和{28,35,40}
4.重新计算两个簇的中心点,即:把各簇中所有数据的平均值作为新的簇中心。
新的两个簇中心为:18 和 34.33 (均为虚点,即数据集中不存在的点)
发现两个簇中心已经不变了(或者跟旧的簇中心相比较,差距很小),说明两个簇中心已趋向稳定,算法结束。
故最终的聚类结果为:{15,15,16,19,19,20,22}和{28,35,40}

若为二维,则用欧式距离公式来计算距离。

你可能感兴趣的:(大数据分析与挖掘,算法,聚类,机器学习,kmeans)