lecture 8:K-means聚类(无监督)
目录
1K-means思想
聚类算法clutering只是无监督学习的一种,不是所有的无监督学习都是聚类算法
K-means也是聚类算法中最简单的一种。但是里面包含的思想却是不一般。
K-means算法是将样本聚类成k个簇(cluster),具体算法描述如下:
K均值是一个迭代方法:
1.簇分配
2.移动聚类中心
下图展示了对n个样本点进行K-means聚类的效果,这里k取2。
簇分配 :
在K均值算法的每次循环中,第一步是要进行簇分配,这就是说,我要遍历所有的样本 ,就是图上所有的绿色的点 ,然后依据 每一个点 是更接近红色的这个中心 还是蓝色的这个中心,来将每个数据点分配到两个不同的聚类中心中。
具体来讲 ,指的是对数据集中的所有点 ,依据他们更接近红色这个中心 ,还是蓝色这个中心 进行染色 ,染色之后的结果如图c所示
移动聚类中心:
我们将两个聚类中心,也就是说红色的叉和蓝色的叉移动到和它一样颜色的那堆点的均值处,那么我们要做的是找出所有红色的点计算出它们的均值,就是所有红色的点 平均下来的位置。然后我们就把红色点的聚类中心移动到蓝色的点也是这样 ,找出所有蓝色的点 计算它们的均值, 把蓝色的叉放到那里。将按照图上所示这么移动
最终,当算法收敛,即聚类中心不再变化时,聚类完成。
2K-means算法和目标函数
在大多数我们已经学到的 监督学习算法中。 算法都有一个优化目标函数 或者某个代价函数(又叫:畸变函数)需要通过算法进行最小化 。
事实上 K均值也有 一个优化目标函数或者 需要最小化的代价函数。
- 注意,这个值只会随着迭代下降,不会上升。
随机初始化
由于初始化聚类中心的不同,这就可能导致K-Means算法会产生局部最优解。
如何避开局部最优来构建K均值聚类方法 。
有几种不同的方法 可以用来随机 初始化聚类中心 ,但是 事实证明, 有一种方法比其他 大多数方法 更加被推荐。
- 随机选择样本点 作为初始样本中心
- 多次初始化聚类中心,然后计算K-Means的代价函数,根据失真代价函数的大小选择最优解。
3选择聚类数K
目前用来决定聚类数目的 最常用的方法 ,仍然是通过看可视化的图, 或者看聚类算法的输出结果 ,或者其他一些东西来手动地决定聚类的数目。
下图是当K的取值从2到9时,聚类效果和类簇指标的效果图:
- 下图是K取值从2到9时的类簇指标的变化曲线
此处我选择类簇指标是,K个类簇的平均质心距离的,加权平均值。- 从上图中可以明显看到,当K取值5时,类簇指标的下降趋势最快,所以K的正确取值应该是5。
选择K的两个方法:
1、根据应用场景需求设置
2、肘部法则
- 通过失真代价函数关于K大小的函数曲线,代价函数会随着K的增大逐渐减小,直至趋于稳定
- 由此我们可以判断,当拐角的时候是最适合的K大小,但是实际情况中,往往我们无法得到一个明显的拐点用于判断(例如右边的图)
4K-means优缺点
K-MEANS算法
输入:聚类个数k,以及包含 n个数据对象的数据库。
输出:满足方差最小标准的k个聚类。
1、存在的问题
(1)K-means 算法特点:采用两阶段反复循环过程算法,结束的条件是不再有数据元素被重新分配:
(2)指定聚类:即指定数据到某一个聚类,使得它与这个聚类中心的距离比它到其它聚类中心的距离要近。
2、优点
(1)算法快速、简单;
(2)对于处理大数据集,这个算法是相对可伸缩和高效的,计算的复杂度为O(NKt),其中N是数据对象的数目,t是迭代的次数。一般来说,K << N,t << N 。
(3)本算法确定的K 个划分到达平方误差最小。当聚类是密集的,且类与类之间区别明显时,效果较好。
3、缺点
① 在 K-means 算法中 K 是事先给定的,这个 K 值的选定是非常难以估计的。
② 在 K-means 算法中,首先需要根据初始聚类中心来确定一个初始划分,然后对初始划分进行优化。
③ 从 K-means 算法框架可以看出,该算法需要不断地进行样本分类调整,不断地计算调整后的新的聚类中心,因此当数据量非常大时,算法的时间开销是非常大的。