优达学城机器学习之--聚类(Cluster)

前言

这章讲的其实是非监督学习。大多数情况下从现实世界获取的数据并不附有标记,通过非监督学习仍然可以从这些数据中有所收获。

最基本的聚类算法,也是目前使用最多的聚类算法叫做K-均值(K-Means)

文章目录如下:

聚类简单应用

假设John和Katie都喜欢收藏电影并为它们划分等级,从非常差到非常好。John偏好动作片,Katie偏好文艺片,如下图所示,无需了解电影的细节信息,我们就可以将其划分为A类别和B类别。了解这些信息的意义在于下次Katie进入影院的时候可以向她推荐合适的电影。

通过聚类算法,可以推论不同的类别,甚至可以通过电影标题了解这些类别的含义。

优达学城机器学习之--聚类(Cluster)_第1张图片

K-Means算法流程

首先随意画出聚类中心,第一次基本上不会是正确的聚类中心。接下来K-Means算法会循环如下两步:

  1. 分配 (assign)
  2. 优化 (optimize)

分配:假设对于cluster 1,选择距离中心 1 比中心 2更近的红色点。
方法如下:在两个集群中心之间画一条线,然后再画一条等距且垂直的线。这条垂直线将区域分为两个部分。一个是与第一个中心点较近的部分,另一个是与第二个中心点较近的部分。

优达学城机器学习之--聚类(Cluster)_第2张图片

优化: 通过移动聚类中心到这些点的总二次距离降到最小。

优达学城机器学习之--聚类(Cluster)_第3张图片
上述两个步骤的反复迭代即K-Means算法,最终结果如下图所示:

优达学城机器学习之--聚类(Cluster)_第4张图片

K-Means聚类可视化

一个将K-Means聚类可视化的非常棒的网站: http://www.naftaliharris.com/blog/visualizing-k-means-clustering/

sklearn

K-Means in sklearn

先来看几个重要参数:

n_clusters: 默认值为8。代表算法中的聚类数量。可以由使用者根据情况自行设置。
max_iter: 默认值为300。矩心分配和移动迭代的次数,即算法迭代的次数。在多数情况下,算法到达最大迭代次数前就可能终止了。
n_int:算法初始化的次数。即初始化时选择不同的矩心(centroid seeds),最后会选择表现最好的那个。

聚类数量n_clusters是最最重要的参数。

K-Means的局限

这小节主要描述K-Means算法能做和不能做的是什么。主要讨论对象是局部极小值

问题:对于一个固定的数据集,一个固定数量的蔟中心(cluster center),在运行K-Means算法时,是否总会得到相同的结果?

答案是否定的。 K-Means是所谓的爬山算法(climbing algorithm),因此它非常依赖初始聚类中心所处的位置。可能会有多个局部极小值,好的或是不好的。如果我们有越多的聚类中心,就能找到越多的局部最小值,所以我们需要将算法运行多次已找出最好的局部极小值。

比如下图的这个例子:

优达学城机器学习之--聚类(Cluster)_第5张图片

你可能感兴趣的:(机器学习)