学习笔记-机器学习-(10)聚类

吴恩达-机器学习课程--13:Clustering 的学习总结:

最常见的非监督算法:K-means算法

假如想把以下训练集训练分为两簇

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

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

重复以上步骤,直至收敛

更为正式的定义如下:

算法输入:

K (数据的聚类数)

训练集 {x1,x2x3 ...,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()的图,选择拐点,但并不是总能得到这样有清晰拐点的图

你可能感兴趣的:(学习笔记-机器学习-(10)聚类)