斯坦福公开课Machine Learning笔记(九)–The K-means Clustering Algorithm
这系列笔记其实已经手写好, 现在一次性发上来, 主要是怕丢. 内容以Andrew Ng的讲义为主,主要以公式推导与理解为主,引入和介绍省略.对于最后的Reinforcement Learning部分, 由于没有讲义以及对其实在不熟悉, 就没有笔记了(主要还是因为没有讲义).
K-means聚类算法是十分常用的聚类算法了.
Input: {x(1),x(m),...,x(m)}
- Initialize(簇中心):
μ1,...,μk∈Rn - Repeat until convergence{
for every i , c(i):=argminj||x(i)−μj||2
for each j, μj:=μj=∑1{c(i)=j}xii=1∑mi=11{c(i)=j}
}
定义distortion function:
J(c,μ)=∑mi=1||x(i)−μc(i)||2
k-means其实就是
J(c,μ)
的坐标上升法.
k-means的两部就是分别对c和
μ
进行优化,所以一定会收敛.但可能会有多个不同的聚类方式,但是最后还是会收敛.
如何选择k?
在公开课中,Ng说一般自动选择效果都不错.而在Coursera上,Ng使用了一种肘部法则来选择k.就是使用不同的k来计算J组成曲线,曲线会在某个点突然放缓,可以选择这个点来作为k.
同时,J不是凸函数,不能保证收敛到全局最优的情况,如果遇到收敛到局部最优,可以尝试多次重新初始化.
聚类距离:
距离计算有很多种,我找了以下几种:
1. 欧式距离:
D(Oi,Oj=∑ni=1(Oik−Ojk)2−−−−−−−−−−−−√
使用原始数据并非归一化后的数据.但如果对象属性的度量标准不同,对结果影响较大.
2. 曼哈顿距离:
D(Pi,Pj)=1n∑nk=1|Pik−Pjk|
.多维空间的平均差,取消了平方,离群点的影响减弱.
3. 切比雪夫距离:
D(Qi,Qj)=maxhi=1Qik−Qjk
4. 余弦相似度:
D(Si,Sj)=cos(Si→,Sj→)
5. Jaccard:
Sim(a,b)=|a⋂b||a⋃b|=|a⋂b||a⋂b¯|+|a¯⋂b|+|a⋂b|
等