k-means聚类可以进行分类吗?

Sir*_*ang 14 algorithm cluster-analysis data-mining k-means

我想知道k-means聚类算法是否可以进行分类?

如果我做了一个简单的k-means聚类.

假设我有很多数据,我使用k-means聚类,然后得到2个聚类A,B.质心计算方法是欧几里德距离.

左侧的集群A.

集群B在右侧.

所以,如果我有一个新数据.我该怎么办?

  1. 再次运行k-means聚类算法,可以得到新数据属于哪个集群?

  2. 记录最后一个质心并使用欧氏距离计算来判断新数据属于哪个?

  3. 其他方法?

Ano*_*sse 18

最简单的方法当然是2.,将每个对象分配到最近的质心(技术上,使用平方和,而不是欧几里德距离;这对于k均值更正确,并为您节省sqrt计算).

方法1.是脆弱的,因为k-means可能会给你一个完全不同的解决方案; 特别是如果它首先不适合你的数据(例如太高的尺寸,太大的簇,太多的簇,......)

但是,以下方法可能更合理:

3.训练一个实际的分类器.

是的,你可以使用k-means来产生一个初始分区,然后假设k-means分区可能是合理的类(你真的应该在某些时候验证这个),然后继续你想要的数据.用户标记.

即运行k-means,在生成的集群上训练SVM.然后使用SVM进行分类.

k-NN分类,或者甚至将每个对象分配到最近的聚类中心(选项1)可以被视为非常简单的分类器.后者是1NN分类器,仅在集群质心上"训练".


Duk*_*ing 5

是的,我们可以分类。

我不会说算法本身(例如#1)特别适合于对点进行分类,因为将要分类的数据合并到训练数据中往往会令人皱眉(除非您拥有实时系统,但我认为对此进行详细说明会有点离题。

要对新点进行分类,只需计算与每个聚类质心的欧几里得距离即可确定最接近的点,然后在该聚类下对其进行分类。

有一些数据结构可让您更有效地确定最接近的质心(如kd-tree),但是以上是基本思想。