无监督学习
与监督学习相比,无监督学习没有标签:
无监督学习:通过算法找到一些隐含在数据中的结构。
作用:
市场分割、密切联系人、计算机集群、了解星系形成…
K-Means算法
K-均值算法实现步骤:
以区别两类为例:
①输入无标签数据集
②随机选取两个聚类中心
③遍历所有的点,与那个聚类中心记录距离最近,就归为哪一类
④移动聚类中心到它们自己类别的均值处
⑤重复第③步
⑥重复第④步
重复⑤⑥直到循环结束或者变化不大…
⑧K均值方法收敛,训练完毕
K-均值算法伪码描述:
输入:
① K ,想从数据集中聚类出的簇的个数
②一系列无标签的数据集
训练:
③随机初始化 K 个聚类中心(u1,u2,…,uk)
内循环:
④遍历每个数据,用 c(i) 标记 x(i) 与那个聚类中心最近
⑤移动聚类中心到相应类别均值处
问题:
如果存在一个没有点的聚类中心(该聚类中心无任何与它相距最近)会怎么样?
常见的做法是直接移除那个聚类中心,这个就会少一个类别。
另一种做法是重新随机初始化没有点的聚类中心。
对于没有明显区分的数据也 K-均值聚类算法也可以很好的将它们分开:
优化目标
大写K和小写k意思不同,大写K是聚类中心的个数,小写k表示一个变量,范围从1到大写K。
K-均值聚类也有优化目标函数(代价函数或失真代价函数)。
下面的循环就是在最小化代价函数。
随机初始化
对于随机初始化,有一种常用的更好的办法:
随机选K(K < m)个训练样本,然后以它们为聚类中心:
如何解决局部最优?
尝试多此随机初始化,计算代价函数,选择代价函数最小的那一个。
典型的随机初始化次数在 50~1000 。
当 K 较小时:通常能找到较好的局部最优解。
当 K 较大时:一般来说,多次随机初始化就不会有太大的改善。
选取聚类数量
如何选择聚类数量:
因为数据集中有多少个聚类,往往搞不清楚,所以通常靠观察可视图或者经验或目的手动的选择。
肘部法则:
观察 K-J 可视图,然后找肘部(拐点)在哪里,然后选择它;但是有时候这个肘部找不到,所以它不是万能的办法。
根据目的选择 K 值:
意思就是选择不同的聚类数量,看哪一个更好的应用于后续的目的。