一、聚类分析的定义
聚类分析是一种无监督学习的统计分析方法。它的主要目的是将一个数据集中的样本(或观测值)按照某种相似性或距离度量划分成若干个类别(簇)。在聚类过程中,同一个簇内的样本具有较高的相似性,而不同簇之间的样本相似性较低。例如,在市场细分中,企业可以利用聚类分析将消费者划分为不同的群体,每个群体内的消费者在消费习惯、偏好等方面相似,而不同群体之间存在明显差异。
二、聚类和分类的区别
(一)学习方式
• 聚类
• 无监督学习:聚类分析不需要预先定义的类别标签。在聚类过程中,算法自己通过数据的内在结构来发现数据的分组模式。例如,在对文本数据进行聚类时,没有事先告诉算法每篇文本属于哪个主题类别,算法通过分析文本内容的相似性(如词语的共现频率等)来将文本分成不同的簇,每个簇可能对应一个主题。
• 分类
• 有监督学习:分类任务需要有标记的训练数据。这些数据已经明确地标注了每个样本所属的类别。算法通过学习这些已标记数据的特征和类别之间的关系来构建分类模型。例如,在垃圾邮件识别中,训练数据包含已经被标记为"垃圾邮件"或"非垃圾邮件"的邮件样本。分类算法会根据这些标记好的样本学习如何区分垃圾邮件和正常邮件,然后用这个模型去预测新的、未标记的邮件是否为垃圾邮件。
(二)目标
• 聚类
• 发现数据内在结构:聚类的目标是探索数据中隐藏的模式和结构,将数据划分为自然的簇。这些簇的划分可以帮助我们更好地理解数据的分布情况。比如在基因数据分析中,聚类可以将具有相似基因表达模式的样本聚集在一起,从而发现可能具有相似生物学功能的基因簇。
• 分类
• 预测类别:分类的目标是根据已有的类别标签,建立一个模型来预测新数据的类别。它侧重于对未知数据进行准确的类别划分。例如,在医学诊断中,通过分类模型可以根据患者的症状、检查结果等特征来判断患者是否患有某种疾病,这里的疾病类型就是已知的类别。
(三)评估方式
• 聚类
• 内部评估指标:聚类的评估通常使用内部指标,如轮廓系数(Silhouette Coefficient)。轮廓系数综合考虑了簇内紧密度和簇间分离度。一个较高的轮廓系数值(接近1)表示聚类效果较好,簇内的样本紧密聚集,不同簇之间的样本分离得较好。还有戴维斯-本丁指数(Davies-Bouldin Index)等指标,这些指标主要用于衡量聚类结果的质量,但不依赖于外部的类别标签。
• 外部评估指标(如果有真实标签):在某些情况下,如果数据集有真实的类别标签(虽然聚类本身不使用这些标签),也可以使用外部评估指标来评估聚类效果。例如,调整兰德指数(Adjusted Rand Index)可以比较聚类结果和真实类别标签之间的相似性。不过,这并不是聚类评估的主要方式,因为聚类本身是无监督的。
• 分类
• 准确率、召回率、F1-score等指标:分类的评估主要依赖于准确率(Accuracy)、召回率(Recall)、精确率(Precision)、F1-score等指标。准确率是正确分类的样本数占总样本数的比例;召回率是正确识别为正类的样本数占实际正类样本数的比例;精确率是正确识别为正类的样本数占识别为正类的样本数的比例。这些指标都是基于已知的类别标签来衡量分类模型的性能。例如,在一个二分类问题中,如果模型对正类的召回率很高,说明模型能够很好地识别出正类样本,但精确率低可能意味着模型会将很多负类样本错误地识别为正类。
三、聚类分析的几种常见算法分类:
1. 划分法(Partitioning Method):
例如K-Means算法。这种方法首先确定要将数据分成几类,然后选择几个点作为初始中心点,接着根据某种算法迭代调整数据点的位置,直到达到"类内点足够近,类间点足够远"的效果。
2. 层次法(Hierarchical Method):
这种方法试图在不同层次上对数据集进行划分,从而形成树形的聚类结构。
3. 基于密度的方法(Density-based Method):
例如DBSCAN算法。这种方法通过将高密度的邻近点连接起来,判断为同类。

4. 基于网格的方法(Grid-based Method):
这种方法将数据空间划分为网格单元,将数据对象映射到网格单元中,并计算每个单元的密度。根据预设的阈值判断每个网格单元是否为高密度单元,密度足够大的网格单元形成簇。
5. 基于模型的方法(Model-Based Method):
例如GMM(高斯混合模型)、SOM(自组织映射)。这种方法为每簇假定了一个模型,寻找数据对给定模型的最佳拟合。

四、算法举例
定义:K-Means 算法将 n 个数据点 X = {x_1, x_2, ...} 划分为 K 个互不相交的簇 C = {C_1, C_2, ..., C_k} ,满足 :


目标:使得每个点到所属类的中心的总距离最小,即最小化簇内平方和(WCSS):

其中,

是簇 C_i 的质心。
-
随机选取 k 个点作为聚类中心:这些点可以是任意选择的,也可以通过特定的方法(如 K-Means++)来优化选择。
-
根据欧式距离函数将数据划分到与其最接近的聚类中心所在的簇:计算每个数据点到各个质心的距离,并将数据点分配到最近的质心。
-
计算每个簇所有数据的平均值,并将其作为新的聚类中心:更新质心位置。
-
重复步骤 2 和 3,直到划分情况保持不变或达到设定最大重复步数:继续迭代直到质心不再变化或达到最大迭代次数。
