K-means
Table of Contents
1. K-means 简介
K-means 是一种简单的聚类算法,属于无监督学习算法(Unsupervised learning)。
给定样本集
其中
不过,最小化
1.1. K-means 算法与 K-NN 算法
K-means 算法与 K-NN(K 近邻)算法没太多关系,K-means 是一种聚类算法(无监督学习),而 K-NN 是一种分类算法(有监督学习)。
两种算法中“K”含义是不同的:
在 K-means 算法中“K”是含义是样本可以分为 K 个类簇;在 K-NN 算法中“K”的含义是给定一个待分类样本
K-means 算法与 K-NN 算法的相同点:它们都包含计算样本点之间距离的过程,都可以采用多种距离计算公式。
2. K-means 算法描述
K-means 算法如图 1 所示。
Figure 1: K-means 算法
其中,第 1 行对均值向量进行初始化,在第 4-8 行与第 9-16 行依次对当前簇划分及均值向量迭代更新,若迭代更新后聚类结果保持不变,则将当前簇划分结果返回。
3. K-means 算法实例
下面以图 2 所示的西瓜相关数据集为例来演示 K-means 算法的学习过程。
Figure 2: 西瓜数据集
为方便叙述,我们将编号为
假定聚类簇数
考察样本
于是,可从
更新当前均值向量后,不断重复上述过程,如图 3 所示,第五轮迭代产生的结果与第四轮迭代相同,于是算法停止,得到最终的簇划分。
Figure 3: 西瓜数据集上 K-means 算法在各轮迭代后的结果。样本点和均值向量分别用“•”和“+”表示,红色虚线显示出簇划分
4. K-means 算法的不足
K-means 算法有下面的不足:
1、类簇个数
2、需要人为地确定初始聚类中心(前面算法描述中是随机地选择初始聚类中心),不同的初始聚类中心可能导致完全不同的聚类结果。
关于第 2 点不足可以使用 K-means++ 算法来解决,这里不介绍 K-means++算法。
5. 参考
本文主要摘自:《机器学习,周志华,2016》,9.4.1 k均值算法