一、介绍

在聚类问题中,咱们会给定一组未加标签的数据集,同时心愿有一个算法可能主动将这些数据分成有严密关系的子集或者是簇。K均值算法当初是最炽热也是最为广泛应用的聚类算法。

二、K均值聚类算法原理

假如有一个无标签数据集图(a),当初想将其分为两个簇,应用K均值算法来进行操作,操作步骤:

1.首先随机生成两个点,这两点叫做聚类核心(图b)。 K均值算法是一个迭代算法,它会做两件事,第一个是簇调配,第二个是挪动聚类核心。

2.簇调配: K均值算法中每次内循环的第一步要进行簇调配,也就是说,遍历每个样本点,依据每个样本与红色聚类核心更近还是蓝色核心更近来将每个样本点调配个两个聚类核心之一。具体的说,就是讲凑近蓝色聚类核心的点染成蓝色,凑近红色聚类核心的点染成红色。

3.挪动聚类核心: K均值算法中每次内循环的第二步要挪动聚类核心,要做是找到所有蓝点并计算出它们的均值,而后把蓝色聚类核心移到那里,红色聚类核心也是一样的操作。

4.而后接着持续做簇调配和挪动聚类核心,迭代屡次之后,就会实现最终的两个点集的聚类,这就能够说K均值算法曾经聚合了。

三、K均值聚类算法原理图解

(a)

(b)

(c)

(d)

(e)

四、K均值聚类算法伪代码

五、K均值算法问题

k均值算法有一个不足之处,就是聚类后果易受到聚类中心点的抉择影响,在很多状况下只会收敛到部分最小值而不是全局最小值(如下图)

(1)随机化较好状况,失去三个不错的簇

(2)随机化不好的状况,失去不同的部分最优解

六、二分K均值算法

二分k均值算法能够改善k均值算法聚类后果易受到聚类中心点的抉择影响,在很多状况下只会收敛到部分最小值而不是全局最小值的问题。

(1)原理

将所有点作为一个簇,而后将该簇一分为二,之后抉择一个簇进行划分,抉择哪一个簇进行划分取决于对其划分是够能够最大水平升高SSE的值。上述基于SSE的划分过程一直反复,直到失去用户指定的簇数目为止。

SSE:误差平方和,该统计参数计算的是拟合数据和原始数据对应点的误差的平方和。SSE越靠近于0,阐明模型抉择和拟合更好,数据预测也越胜利。

(2)伪码

将所有点看成一个簇

当簇数目小于k时:

对每一个簇

计算总误差

在给定的簇下面进行K-均值划分(k=2)

计算将该簇一分为二之后的总误差

抉择使得总误差最小的那个簇的进行划分

七、Iris数据集试验后果

(1) 数据集简介:

来自UCI欧文大学机器学习存储库,蕴含150个样本,分为3类,每类50个数据,每个数据蕴含4个属性。可通过花萼长度,花萼宽度,花瓣长度,花瓣宽度4个属性预测鸢尾花卉属于(Setosa,Versicolour,Virginica)三个品种中的哪一类

(2) 试验后果:

1) 鸢尾花数据集散布

2) 聚类成果较好的状况

准确率为86.7%

3) 聚类成果较差的状况

准确率为66.7%

八、察看剖析

K均值算法是二分K均值建模的次要思维,它们的聚类原理是统一的,二分K均值算法可能克服K均值收敛于部分最小的局限,在聚类成果上展现出比较稳定的性能,二分K均值算法在Iris数据集上聚类成果比拟好的状况,能展现出86.7%的预测准确率。同时,二分K均值算法在Iris数据集上聚类成果会呈现不太好的状况。这是因为尽管二分K均值能克服K均值收敛于部分最小的局限,但并不能保障收敛到全局最优值。