K-Means聚类
算法基本流程
- 随机选取k个中心点
- 遍历所有数据,将每个数据划分到最近的中心点中
- 计算每个聚类的平均值,并作为新的中心点
- 重复2-3,直到这k个中线点不再变化(收敛了),或执行了足够多的迭代
- 时间复杂度:O(I*n*k*m)
- 空间复杂度:O(n*m)
其中m为每个元素字段个数,n为数据量,I为迭代个数。一般I,k,m均可认为是常量,所以时间和空间复杂度可以简化为O(n),即线性的。
算法详解
- 首先是距离计算方式的选择,一般有两种计算方式,一是欧式距离,而是曼哈顿距离
- 计算聚类中心的方法
- Minkowski Distance
dij=λ∑k=1n|xik−xjk|λ‾‾‾‾‾‾‾‾‾‾‾‾‾‾⎷λ 可以随意取值,可以是负数,也可以是正数,或是无穷大- Euclidean Distance
dij=∑k=1n|xik−xjk|2‾‾‾‾‾‾‾‾‾‾‾‾‾‾⎷- CityBlock Distance
dij=∑k=1n|xik−xjk|