文章目录
KMeans——最简单的聚类算法
什么是聚类(Clustering)
聚类并非一种机器学习专有的模型或算法,而是一种统计分析技术,在许多领域得到广泛应用。
广义而言,聚类就是通过对样本静态特征的分析,把相似的对象,分成不同子集(后面我们将聚类分出的子集称为“簇”),被分到同一个子集中的样本对象都具有相似的属性。
在机器学习领域,聚类属于一种无监督式学习算法。
许多聚类算法在执行之前,需要指定从输入数据集中产生的分簇的个数。除非事先准备好一个合适的值,否则必须决定一个大概值,这是当前大多数实践的现状。我们今天要讲的 KMeans 就是如此。
常用的几种距离计算方法
通常情况下,在聚类算法中,样本的属性主要由其在特征空间中的相对距离来表示。这就使得距离这个概念,对于聚类非常重要。
在正式讲解聚类算法之前,我们先来看几种最常见的距离计算方法。
欧氏距离(又称2-norm距离)
在欧几里德空间中,点 x = ( x 1 , . . . , x n ) x=(x_1,...,x_n) x=(x1,...,xn)和 y = ( y 1 , . . . , y n ) y=(y_1,...,y_n) y=(y1,...,yn)之间的欧氏距离为:
在欧几里得度量下,两点之间线段最短。
余弦距离(又称余弦相似性)
两个向量间的余弦值可以通过使用欧几里德点积公式求出:
所以:
也就是说,给定两个属性向量A和B,其余弦距离(也可以理解为两向量夹角的余弦)由点积和向量长度给出,如下表示:
这里的 A i A_i Aih和 B i B_i B