吴恩达-机器学习课程--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()的图,选择拐点,但并不是总能得到这样有清晰拐点的图
网友评论