目录
一、Kmeans
聚类是针对给定的样本,依据他们特征的相似度或者距离,将其归并到若干个“类”或“簇”的数据分析问题。聚类属于无监督学习算法,它的分类依据是样本的相似度或距离,而类或簇的类别事先并不知道,也就是说样本并没有标签。
常见的聚类算法包括Kmeans、层次聚类和DBSCAN,本篇主要介绍K均值聚类。
Kmeans是基于样本集合划分的聚类算法。Kmeans将样本集合划分为k个子集,构成K个子类,每个子类有一个聚类中心,按照一定的度量规则,将每个样本归为其距离最近的聚类中心所在的类。每个样本距离最近的聚类中心只能有一个,所以每个样本也只有一个分类,所以Kmeans属于硬聚类。
二、Kmeans的流程
该算法的流程非常简单,就是不断地迭代,向着同一类的所有样本离该类的聚类中心距离之和最小的方向去调整聚类中心的位置和所有样本点的归属,直到找到最佳的K个聚类中心并且所有样本已找到最佳归属。
算法的流程为:
(1)初始化:随机的选择K个样本点作为K个初始的聚类中心。
(2)对样本进行聚类:计算每个样本到每个剧烈中心的距离,将每个样本归类到与其相聚最近发聚类中心所在的类中。
(3)计算新的聚类中心:计算每个类中所有样本的均值作为新的聚类中心。
(4)如果聚类中心不在发生改变或者到达截至条件就停止迭代,否则重复(2)和(3)。
Kmeans的计算复杂度为O(mnk),m为样本维度,n为样本个数,k为类别数。
三、距离度量方式
3.1、闵可夫斯基距离
闵可夫斯基距离越大,样本之间的相似度就越小,闵可夫斯基距离越小,样本之间相似度就越大。当其值为0代表两者为同一个样本。x=(x1,x2,...,xn),y=(y1,y2,...yn,)定义两者之间的闵可夫斯基距离d为:
其中p大于等于1,p=1时,称为曼哈顿距离,p=2时称为欧几里得距离,简称欧氏距离,当p为无穷大时称为切比雪夫距离,此时距离为各个坐标数值差的绝对值的最大值 。
如下图,图中绿线代表x1与x2之间的欧氏距离