到目前为止,我们都在讨论有监督学习的有关问题。现在,我们要继续研究聚类算法,它是无监督学习方法的子集。
因此,只做了一点改动......
说到聚类,如果我们有一些初始数据需要支配,我们会想建立一个组,这样一来,其中一些组的数据点就是相同的,并且能与其他组的数据点区分开来。
我们将要学习的算法叫做 K-均值聚类(K-Means Clustering),也可以叫 K-Means 聚类,其中 k 表示产生的聚类的数量,这是最流行的聚类算法之一。
还记得我们前面用到的 Iris 数据集吗?这里我们将再次用到。
为了更好地研究,我们使用花瓣测量方法绘制出数据集的所有数据点,如图所示:
仅仅基于花瓣的度量值,我们使用 3-均值聚类将数据点聚集成三组。
那么3-均值,或更普遍来说,k-聚类算法是怎样工作的呢?整个过程可以概括为几个简单的步骤:
-
初始化步骤
:例如 K = 3 簇,这个算法为每个聚类中心随机选择三个数据点。
-
群集分配步骤
:该算法通过其余的数据点,并将其中的每一个分配给最近的群集。
-
重心移动步骤
:在集群分配后,每个簇的质心移动到属于组的所有点的平均值。
步骤 2 和 3 重复多次,直到没有对集群分配作出更改为止。用 R 实现 k-聚类算法很简单,可以用下面的代码完成:
从结果中,我们可以看到,该算法将数据分成三个组,由三种不同的颜色表示。我们也可以观察到这三个组是根据花瓣的大小分的。更具体地说,红点代表小花瓣的花,绿点代表大花瓣的花,蓝点代表中等大小的花瓣的花。
在这一点上需要注意的是,在任何聚类中,对分组的解释都需要在领域中的一些专业知识。在上一个例子中,如果你不是一个植物学家,你可能不会知道,k-均值做的是用花瓣大小给花分组,与 Setosa、 Versicolo r和 Virginica 的区别无关!
因此,如果我们再次绘制数据,这一次由它们的物种着色,我们将看到集群中的相似性。