[机器学习]k-means算法,非监督机器学习算法

本文内容算是 Andrew Ng 《机器学习》公开课的笔记

监督机器学习算法中的分类算法,都是告诉你 label (分类标签) ,然后让你找条直线(以2类为例)把这些 样本分开,如下图:

本文图片截取自Andrew Ng《机器学习》公开课

非监督机器学习算法,就是给你一堆点,你给 爱分几类分几类,反正把在一起的都找出来


本文图片截取自Andrew Ng《机器学习》公开课

这里面牵涉到两个问题
1,要分几类?(K取值是多少?)
2,分类的标准是什么?(类似 cost function 最小,最优目标)

K-means算法是这类算法中典型的代表。(先假设K已知。如何选择K,在最后再说)
算法描述:
像下图这样的一堆点,我们要分成k=2类。先随机初始化两个点,然后让这两个点慢慢的移向两个 cluster的中心

重要的事情说三遍:本文图片截取自Andrew Ng《机器学习》公开课

所谓慢慢移动两个点(C1 和C2),其实是个迭代的过程,
迭代的每一步完成一下2个任务:
1,找到input data中每个点距离哪个中心点近(C1 或者C2),标记该点属于 相应的 集合
2,找到每个 集合的 重心,更新C(C1或者C2)为其对应集合的重心,下次迭代使用


K-means算法这样进行的依据是什么?这个算法想最优化的目标是什么?
就是所有点 距离其cluster中心的距离之和最小,如下公式:


K-means算法包括两次迭代:
1,第一次是给点找距离最近的中心,这已经在朝着 Optimization objective前进了
2,第二次迭代,把中心点更新为 该cluster内所有点的重心,这样所有点距离之和又在减小

-----------------下面说明一些小问题----------------
1,如何初始化K的centroid?肯定不是都设为 0向量啊!
答:随机选择K的training examples就好了

2,如果最后分类不是很和谐,怎么办?见下图

这里引入 local optima概念,就是按照K-means算法,得到了响应的cluster,但是并不是 global optima。这个时候Andrew Ng告诉我们的办法是,进行几百次算法,每次都随机初始化K个centroid点,记录K-means结束时候的 J (cost function)。然后找到J最小的那次,那一定是最优解。看图说话:


3,K如何选?
Andrew Ng告诉我们:
1,大部分时候,还是要结合我们的业务进行分类,比如 衣服的尺寸 s,m,l
用户的身份,穷屌丝,碌碌无为,高富帅等等。
2,也可以用一个叫做Elbow method。这个方法告诉我们,在某个K值之后,minJ变化很慢,那么K就可以确定啦。
但是如果像下图右边那样,没有明显的Elbow,那么这个方法也不好用。

K具体的取值,大部分是手工选择,要人眼去看。 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值