到目前为止,您学习的每个算法都受到监督:您向其提供带标签的示例,它会学习预测新标签。但是,当您拥有大量数据并且根本没有标签时会发生什么?
这就是无监督学习的用武之地——而集群是其最强大的工具之一。
聚类是将数据点分组在一起的任务,以便同一组(簇)中的点比其他组中的点更“相似”。
至关重要的是,没有人告诉算法有多少组或它们代表什么。它自己找到结构。
可以将其想象为闭上眼睛对一堆混合糖果进行分类,只需使用触摸即可。你可以根据形状对它们进行分组——圆形的放在一起,长的放在一起,耐嚼的和硬的分开——没有人提前定义类别。
天文学家使用聚类根据形状和组成对星系进行分组,遗传学家使用聚类来识别疾病亚型,Spotify 则使用聚类来生成个性化播放列表 - 所有这些都无需任何人手动标记数据。
K-Means 简单、快速且功能强大。这是简单英语的完整算法:
打个比方:想象一下将 K 块磁铁放在客户地址地图上。每个顾客都会被最近的磁铁所吸引。然后你将每个磁铁移动到其客户的中心。重复直到磁铁停止移动。
K 均值取决于质心的初始随机放置。对相同数据的两次运行可能会产生不同的簇。您如何决定哪个结果更好?你甚至会测量什么?
一个实际问题:如何选择K?如果你将 K 设置为数据点的数量,那么每个点都是它自己的簇——完美但无用。如果 K = 1,一切都是一大团——同样毫无用处。
elbow 方法 有助于:对 K = 1, 2, 3, … N 运行 K 均值,并绘制随着 K 增加“误差”(簇内方差)减少的程度。更多的簇总是会减少误差,但通常在 K 处,改进开始急剧放缓——曲线中的“肘部”。这是正确 K 的良好候选者。
这不是一条硬性规则,但它为您提供了一个原则性的起点。
K-Means 要求您预先修复 K。 层次聚类没有。
相反,它通过以下任一方式构建聚类树(称为树状图):
生成的树状图允许您在任何级别“切割”以获得任意数量的簇,这是非常灵活的。缺点:层次聚类在大型数据集上的计算成本很高。
聚类无处不在:
|应用 |什么被聚集| |---|---| |客户细分|按购买行为对客户进行分组 | |图像压缩 |像素颜色缩减为 K 个代表颜色 | |文件组织|按主题分组的文章没有手动标签 | |异常检测|不适合任何聚类的异常值 = 可疑 | |遗传学 |按疾病亚型分组的基因表达模式| |社交网络|通过连接模式识别的社区 |
集群很强大,但也有真正的局限性:
登录 参与讨论
K-Means 最初由 Stuart Lloyd 于 1957 年提出(作为贝尔实验室内部技术说明),并于 1965 年由 Forgy 独立重新描述。尽管它已经存在了很长时间,但它仍然是数据科学中使用最广泛的算法之一。