聚类属于无监督学习。在之前的学习中,都是监督学习。监督学习与无监督学习的最大区别为训练数据集的特点,在监督学习中,训练集是有标签的,我们根据这些有标签的数据,训练出模型,输出相应的值。而在无监督学习中,我们的数据集没有标签,我们需要使用机器学习算法寻找出数据集中的内在结构。无监督学习的数据集如下所示
训练的数据集可以写成只有一直到,没有任何的标签。上图中的数据可以看作两个分开的点集(称为簇),能找出这些点集的算法就称为聚类算法。
1k-均值算法
k-均值算法是最普及的算法,该算法接受一个未标记的数据集,然后将数据集聚类成不同的类。k-均值算法是一种迭代算法,假设我们将数据聚类成n个组,那么步骤如下:
首先随机选择K个随机点,称为聚类中心(cluster centroids)。对于数据集中的每个数据,计算他们与这些K个聚类中心的距离,然后将其与之关联起来(可认为每个组即为一个类,关联即属于该类),将所有与这个聚类中心关联的点归为一类。
下一步是重新设置聚类中心,计算每一个组的平均值,将聚类中心的坐标移动到平均值的位置。
然后不断进行这两个步骤的迭代,直到聚类中心点不再变化。
迭代10次,用来表示聚类中心,用来存储与第个实例数据最近的聚类中心的索引,k-均值算法的伪代码如下所示:
Repeat{
for =1 to