ML 9day 开始无监督学习 聚类算法 K-means clustering.

先看一个flush动画
http://shabal.in/visuals/kmeans/6.html
ML 9day 开始无监督学习 聚类算法 K-means clustering.
如图所示,数据样本用圆点表示,每个簇的中心点用叉叉表示。(a)刚开始时是原始数据,杂乱无章,没有label,看起来都一样,都是绿色的。(b)假设 数据集可以分为两类,令K=2,随机在坐标上选两个点,作为两个类的中心点。(c-f)演示了聚类的两种迭代。先划分,把每个数据样本划分到最近的中心点 那一簇;划分完后,更新每个簇的中心,即把该簇的所有数据点的坐标加起来去平均值。这样不断进行”划分—更新—划分—更新”,直到每个簇的中心不在移动为止。

ML 9day 开始无监督学习 聚类算法 K-means clustering.

对比KNN算法和k-means算法
ML 9day 开始无监督学习 聚类算法 K-means clustering.

Kmeans算法的缺陷

聚类中心的个数K 需要事先给定,但在实际中这个 K 值的选定是非常难以估计的,很多时候,事先并不知道给定的数据集应该分成多少个类别才最合适
Kmeans需要人为地确定初始聚类中心,不同的初始聚类中心可能导致完全不同的聚类结果。(可以使用Kmeans++算法来解决)

层次聚类法

层次聚类法的原理较为简单。它的基本过程如下:

每一个样本点视为一个簇;
1、计算各个簇之间的距离,最近的两个簇聚合成一个新簇;
2、重复以上过程直至最后只有一簇。
3、层次聚类不指定具体的簇数,而只关注簇之间的远近,最终会形成一个树形图。