吴恩达-机器学习课程--13:Clustering 的学习总结:
最常见的非监督算法:K-means算法
假如想把以下训练集训练分为两簇

随机选择两点,一部分点离红点更近,一部分点离蓝点更近

移动两点至已分好的两类点的均值处,再次根据数据集离红蓝两点的距离分为两部分

重复以上步骤,直至收敛
更为正式的定义如下:
算法输入:
K (数据的聚类数)
训练集 {x1,x2, x3 ...,xn)
算法:
随机初始化聚类中心 {μ1,μ2,μ3 ... μK}

的值是一个1-K的数,表示离
最近的是 {μ1,μ2,μ3 ... μK}中的哪个聚类中心
可以表示为计算离每个聚类中心的距离,求出让距离最小的那个k值(出于惯例用平方表示)

对于没有被很明确的分开的数据使用K-means算法

K-means算法的优化目标:distortion cost function

其中:

初始化聚类中心
选择K个样本点作为聚类中心,但可能选择的聚类中心,优化代价函数得到局部最优解,也就是不能很恰当的进行聚类。所以要多进行几次随机初始化聚类中心,选择最优解。
如果K较小,在2-10内, 一般进行50-1000次随机初始化聚类中心,能得到更好的聚类结果。但如果K很大,一般不用很多次就能得到良好的聚类结果。

聚类数K的选择:
并没有一个绝对正确或错误的K值,所以一般是手工选择,而不是自动产生
可以参考的方法:Elbow method
画出K vs J()的图,选择拐点,但并不是总能得到这样有清晰拐点的图

网友评论