在监督机器学习中,训练数据已被标记,这意味着每个数据实例都有其对应的输出。 在无监督机器学习中,数据没有标签。 聚类是一个无监督的学习问题,任务是探索数据以找到每个数据实例的最佳标签。
本文讨论了如何使用遗传算法对数据进行聚类,从随机聚类开始一直运行,直到找到最佳聚类。 我们将首先简要修改K-means聚类算法以指出其弱点,然后由遗传算法解决。
略述
根据训练数据是否带有标签,机器学习有两种类型:
监督机器学习
无监督机器学习
在监督学习问题中,模型使用一些描述数据的信息。 此信息是数据实例的输出,因此模型知道(并获悉)它收到的每个输入实例的预期输出是什么。 这有助于模型评估其性能并学习减少误差(或提高准确性)的方法。
对于分类问题,输出是每个样本的预期类别。对于RGB颜色分类器,输入和输出数据可以如下所示:
Input 1 : 255, 0, 0
Output 1 : Red
Input 2 : 0, 255, 0
Output 2 : Green
假设只有两类:红色和绿色。 当模型知道预期的输出时,它将在训练阶段进行自我调整(即其参数)以返回正确的输出。 对于新的测试样本,模型将测量其与之前在两个类别中看到的样本的相似性。
在无监督的学习问题中,模型不知道数据的正确输出(输入)。聚类是一个无监督的学习问题,任务是查找每个数据实例的结果(即标签)。
聚类算法的输入仅是如下输入:
Input 1 : 255, 0, 0
Input 2 : 0, 255, 0
聚类后,模型应预测每个数据实例的标签:
Output 1: Red
Output 2: Green
存在一些聚类算法,例如K-means算法(最受欢迎);分支和绑定;和最大似然估计。
K均值聚类
K-means算法是一种流行的聚类算法。尽管非常简单,但本节将快速回顾其工作原理,因为了解它对于使用遗传算法进行聚类至关重要。
K-means算法的输入为:
数据样本
聚类数K
该算法的输出是一组K个聚类,每个聚类由一组数据样本组成。一个样本在两个或两个以上聚类之间可以重叠,也可以不重叠;这取决于要解决的问题的性质。
下图显示了一个包含3个人工聚类的示例,以显示K均值算法的工作原理。 请注意,“人工”表示数据不是真实的。 对于此示例,很明显,K的最佳值(最佳聚类数)为3。对于实际问题,不同的K值会产生不同的结果,并且选择最可行的结果。 每个样本都有反映其聚类的颜色。
K均值通过为K个聚类中的每个聚类选择一个初始中心来工作。 请注意,K均值算法对那些初始中心非常敏感,并且可以通过更改初始中心来得出不同的结果。 在下图中,选定的中心是带有黑色边框的中心。
下一步是计算每个样本与3个中心之间的距离,并将每个样本分配给最近的中心的聚类。 目的是使所有样本与其中心之间的总距离最小化。 该距离可以是根据下一个公式计算的欧几里得距离:
下图显示了如何对样本进行聚类。分配给不正确聚类的样本的边缘与被错误放入内部的聚类具有相同的颜色。
基于当前聚类,K均值算法根据下面的等式取每个群集内所有样本的平均值来更新其K聚类中心:
如果样本到多个聚类的距离相等,则可以将其分配给这些聚类中的任何一个。
遗传算法聚类 | 人工聚类数据 | 欧几里得距离 | 聚类中心距离 | 拟合函数 | Python遗传算法代码
本文完整代码
详情参阅 - 亚图跨际