聚类分析以及K-MEANS算法
聚类:相似元素的聚合
聚类分析又称群分析,它是研究(样品或指标)分类问题的一种统计分析方法,同时也是数据挖掘的一个重要算法。
聚类分析是由若干模式组成,以相似性为基础,在一个聚类中的模式之间比不在同一聚类中的模式之间具有更多相似性。
随着对分类的要求越来越高,人们开始把各种技术应用到数值分类形成聚类分析,例如,系统聚类法,动态聚类法,模糊聚类法,有序样品聚类法等。
聚类分析的算法可分为划分法(Partitioning Methods)、层次法(Hierarchical Methods)、基于密度的方法(density-based methods)、基于网格的方法(grid-based methods)、基于模型的方法(Model-Based Methods)。本篇主要浅谈k-means算法。
K-MEANS算法:无监督问题
算法概述
-
指定K值,K值为簇的个数。(例:k=3,数据聚成红,蓝,绿三块)
-
质心:用于迭代,即向量各个维度取平均值,每个簇都需要得到质心。(例:取绿色块的质心,绿色块内数据的X,Y坐标取平均值得到了质心)
-
距离的度量:两个点之间的距离经常使用欧几里得距离和余弦相似度,但是数据需要标准化。
- 欧几里得距离
- 余弦相似性
余弦相似性通过测量两个向量的夹角的余弦值来度量它们之间的相似性。0度角的余弦值是1,而其他任何角度的余弦值都不大于1;并且其最小值是-1。从而两个向量之间的角度的余弦值确定两个向量是否大致指向相同的方向。两个向量有相同的指向时,余弦相似度的值为1;两个向量夹角为90°时,余弦相似度的值为0;两个向量指向完全相反的方向时,余弦相似度的值为-1。这结果是与向量的长度无关的,仅仅与向量的指向方向相关。余弦相似度通常用于正空间,因此给出的值为-1到1之间。
- 数据的标准化
数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间。在某些比较和评价的指标处理中经常会用到,去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权。
- 优化目标:
min ∑ i = 1 k ∑ x ∈ C i d i s t ( C i , x ) 2 \displaystyle\sum_{i=1}^{k}\displaystyle\sum_{x∈Ci} dist(Ci,x)^2 i=1∑kx∈Ci∑dist(Ci,x)2 i从1到K表示一共有K个簇,每一个簇都有一个中心点,优化使簇内每一个样本点到簇中心点的距离越小越好。
工作流程
a.指定K=2。
b.随机初始化两个点A,B,基于A,B这两个点,计算其他点与A,B点的距离,与哪个点的距离越小,就有可能越相似,就属于哪个簇。在样本点中进行遍历。
c.划分出来两堆。
d. 进行更新,根据新划分出来的两堆重新确定两个质心。对于所有的样本点进行遍历计算,与哪个质心距离越小,就属于哪个簇,重新将样本点分簇。
e.再次更新质心。
f.更新质心,直到遍历样本点后所有的样本点几乎不会变化。
优势:简单,快速,适合常规数据集
劣势:K值难确定,复杂度与样本呈线性关系,很难发现任意形状的簇。
代码实现