让我们来了解聚类的思想。正如我们所讨论的,无监督学习处理的是没有预设标签或正确答案的数据。我们的目标不是预测已知结果,而是发现数据本身隐藏的结构或关联。聚类是无监督学习中一项非常常见且直观的任务。想象一下整理大量未加标签的照片集。在不知道每张照片里是谁或在哪里拍摄的情况下,你可能会自然地开始将它们分组。室内照片可能放在一堆,室外风景照放在另一堆,肖像照放在第三堆,宠物照片放在第四堆。你正在根据它们的视觉特征,即它们的特征,将它们分组。这本质上就是聚类算法处理数据的方式。什么是聚类?聚类是将数据集划分成不同组(称为簇)的过程。核心思想简单而有效:同一簇内的_数据点_应彼此相似。不同簇内的_数据点_应彼此不相似。这里的“相似”意味着什么?在机器学习中,数据点由其特征(例如图像中的像素值、客户的消费习惯或文档中的词频)表示。相似性通常通过数据点在这些特征定义的空间中的“接近”程度来衡量。相互接近的点被认为是相似的;相互远离的点被认为是不相似的。想象一下根据两个特征绘制客户数据:年龄(x轴)和消费分数(y轴)。你可能会直观地看到不同的组形成。{"layout": {"title": "客户数据", "xaxis": {"title": "年龄"}, "yaxis": {"title": "消费分数"}, "margin": {"t": 50, "b": 40, "l": 40, "r": 20}}, "data": [{"x": [25, 30, 22, 35, 28, 60, 55, 65, 58, 62, 40, 42, 38, 45, 39], "y": [70, 80, 65, 85, 75, 30, 25, 35, 28, 32, 50, 55, 48, 52, 58], "mode": "markers", "type": "scatter", "marker": {"color": ["#1f77b4", "#1f77b4", "#1f77b4", "#1f77b4", "#1f77b4", "#ff7f0e", "#ff7f0e", "#ff7f0e", "#ff7f0e", "#ff7f0e", "#2ca02c", "#2ca02c", "#2ca02c", "#2ca02c", "#2ca02c"], "size": 8}}]}客户数据按年龄和消费分数绘制。注意这些点如何自然地形成不同的组。聚类算法旨在自动识别这些组。为什么要使用聚类?聚类帮助我们找到数据中固有的分组,而无需事先了解这些分组可能代表什么。它在许多情况下都很有用,包括:客户细分: 将具有相似购买行为或人口统计特征的客户分组,以便进行精准营销。文档分析: 根据内容(例如新闻主题)将相似的文章或文档分组。图像分割: 将图像中属于同一对象或区域的像素分组。异常检测: 识别不属于任何簇的数据点,这可能表示异常行为或错误。生物数据分析: 将具有相似表达模式的基因分组。聚类使我们能够了解数据的深层结构,展示那些乍看之下可能不明显的模式。有许多不同的聚类算法,每种算法都有其优点和缺点。在接下来的章节中,我们将重点介绍一种最广泛使用且基本的聚类算法:K-均值。