机器学习第八周(一)--K-means
来源:互联网 发布:淘宝特卖苹果手机 编辑:程序博客网 时间:2024/06/03 22:55
- 聚类Clustering
- 无监督介绍和聚类引入
- K-means算法
- K-means规范表述
- 更具体的
- K-means处理未分离的簇
- 目标优化
- K-means优化函数目的
- K-means的优化函数
- 随机初始化
- 随机初始化注意
- 选择簇的数量
- 肘部法则
- 通过后续目的来判定
- K-means规范表述
聚类(Clustering)
无监督介绍和聚类引入
正如我们前面所说,监督学习问题的数据带有标签,目的是找到一个分界面使带标签的数据分隔开。而无监督学习问题是不带标签的,如下
希望能通一种算法将这些数据分为俩类,这种算法我们就成为聚类算法。
聚类的应用:
注意:解决无监督学习问题的算法不只有聚类一种。
K-means算法
K-means算法是现在用的最多的聚类算法。
K-means算法可以看做是一个迭代过程。主要有俩步:
- 随机选取k个聚类中心
- 1、簇分配
- 2、移动聚类中心
- 迭代直到收敛
最后得到的结果是一个收敛的,即聚类中心是不变的,接下来配合图具体说明。
我们目的是要从这些绿色的点中分离数据,首先是随机选择俩个聚类中心。然后计算所有数据中离这俩个中心更近的数据。离红叉更近的点我们标为红色。离蓝叉更近的点标为蓝色。这就是簇分配的过程。得到的结果如下:
接着计算所有红色点的均值,并把红叉移动到均值处。蓝色点同样。即移动聚类中心。结果如下:
得到俩个新的聚类中心后,再进行簇分配、移动聚类中心过程。直到达到收敛的过程,即聚类中心不再移动。结果如下:
K-means规范表述
K-means算法俩个输入,聚类数量和训练数据。这里要注意的是我们不考虑x0=1情况,所以整个训练样本是n维。
更具体的:
大K表示聚类中心数量,小k表示具体哪一个聚类中心。
簇分配:C(i)表示将数据分为哪一个聚类,求得【X(i)-uk)】距离的最小值即得C(i)。
移动聚类中心:求簇分配中X(i)的平均距离。将uk移向新的这个平均距离,得到新的聚类中心。
作者这里给出例子如图,C(1)、C(5)、C(6)、C(10)都等于2,就是说着四个数据都归为聚类u2。求x(1)、x(5)、x(6)、x(10)平均值,计算新的聚类中心。
注意:因为再K-means中我们是把数据分配给一个聚类中心,但是如果有一个聚类中心没有数据分配给它怎么办呢?通常情况下我们会移除那个聚类中心,这样结果得到K-1个簇。如果我们就是想要K个簇,那我们还是重新随机找一个聚类中心。幸好这个问题实际中不会经常出现。
K-means处理未分离的簇
以上我们举的例子都是分开好的簇,但是如果我们应对一些未分开的数据,K-means也能有很好的效果。
如上以T恤大小举例,以身高体重为主要特征收集一堆数据。尽管数据是连在一起的,用K-means算法也能分成三份。表示三个不同的顾客群体。
目标优化
之前学习的监督学习算法中都有个优化目标函数。即我们熟悉的损失函数。我们一般要对这个损失函数进行一个优化,往往是对其求最小值。K-means中也不例外。
K-means优化函数目的:
- 1、 调试学习算法,确保K均值算法是在正确运行中。
- 2、K均值优化目标函数将帮助我们找到更好的簇,并且避免局部最优解。
当K-means算法在运行时,我们需要记录俩个值,C(i)和uk。C(i)表示数据X(i)所归簇的索引。如果X(i)归为第五簇,那么C(i)=5。uk表示第k个簇的聚类中心。
K-means的优化函数
如上图,给出了K-means的优化函数,我们可以看到优化函数主要是对X和Uc(i)的操作。优化函数要做的就是最小化图中右下角红线的距离。
我们称K-mans的优化函数为失真函数。
再来回顾一下K-means的俩个过程:
我们可以将第一个过程看做在优化C(i)的过程。第二个过程看做优化Uk的过程。俩个过程分别对应失真函数的俩个决定因子。
随机初始化
在前面K-means的步骤中我们提到选取K个聚类中心的方法是随机选取,那么怎么随机选取呢???作者提出俩点:
随机初始化注意
- 1、K< m 即聚类的数目要小于样本量
- 2、随机选择K个训练样本,将这K个训练样本作为聚类中心
因为我们是随机选取样本作为聚类中心的,所以聚类的结果有不确定性。
如果运气足够好,选择的三个聚类中心得到的局部最优恰巧就是全局最优。但是也有可能会陷入下面俩幅图的形状。如何改变这种情况呢???
K值的随机选取进行多次,同样多次运行K-means算法,从得到的失真函数结果中挑取最小的一个。
作者这里推荐100次的K-means运行次数。从得到的100个失真函数中选取最小的那一个。通常,当K在2-10间时,随机初始化会有一个比较好的效果,但是如果K值很大的话,那么效果就不会有太大影响。
选择簇的数量
簇的数量选择没有一个统一的定论。大部分情况下仍然是根据可视化图或者手动选取。比如下面这堆数据可分为俩类也可分为四类,这都可以。
作者这里提供一些方法作为选取簇的参考:
肘部法则
对给定的数据,从K=1开始计算失真函数结果,如图中计算到K=8,从左图中我们可以看到从K=3开始,失真函数的下降明显变得更缓慢,(即是曲线的肘点)所以我们把K=3作为分类会是一个比较好的选择。但是但是!我们随着K值增大往往得到的失真函数图是右边的形状,这是一个平滑的曲线,也就没有左图那么好判断,这也是肘部法则的缺点。
通过后续目的来判定
仍然以卖T恤的例子说明。
从商家盈利角度出发,当把T恤定位三个号还是五个号哪种方式盈利大一点,就采取哪种方式。
总结:大部分的簇的选取还是靠观察和手动选取,当这俩种方式行不通时,考虑肘部法则或者想一想用K-means的目的是什么。这样会有一个比较好的结果。
- 机器学习第八周(一)--K-means
- Coursera机器学习-第八周-Unsupervised Learning(K-Means)
- 【机器学习】聚类分析(一)——k-means算法
- 机器学习基础(一):K-means聚类
- 机器学习(一)——K-Means算法分析
- k-means 机器学习
- 机器学习(Stanford)笔记-(K-means)
- 机器学习笔记(三)k-means
- 机器学习算法(2)-K-means
- 机器学习(十一):K-Means算法
- 机器学习-聚类(K-Means)
- 机器学习--物以类聚(k-means算法)
- 【学习笔记】机器学习-K均值(k-means)
- 机器学习-K-means实践
- 机器学习--K-means算法
- 【机器学习】K-means聚类
- 机器学习--K-means算法
- 【机器学习】K-Means算法
- KMP算法初学
- 统计文件
- CollapsingToolbarLayout展开与收回监听
- STS打开后闪退解决方案之一
- iOS 07-线程安全 同步锁
- 机器学习第八周(一)--K-means
- erlang游戏服务器
- C/C++中memset函数
- 【干货分享】大数据开发套件DataIDE使用教程
- SpringBoot 定时任务的使用
- 安装ruby
- 15
- crontab记录的日志时间与系统时间不一致
- Nand ECC了解