1. 概述
分类(Classification)和聚类(Clustering)是机器学习中最常见的两种方法。它们分别属于监督学习和无监督学习,适用于不同场景。本文将系统性地介绍它们的核心思想、适用场景、常见算法以及如何根据任务需求选择合适的方法。
2. 分类(Classification)
2.1 什么是分类?
分类是一种监督学习方法,其核心任务是为数据集中的每个样本分配一个预定义的标签。它适用于已知类别边界、有明确标签的数据集。
分类的基本前提是:
- 类别是离散的
- 每个样本属于某个类别
- 存在一个函数可以将样本映射到类别
- 这个函数可以在训练数据上学习并泛化到新数据
2.2 分类的关键特点
✅ 有标签数据
✅ 类别数量已知
✅ 需要先验知识
✅ 模型具有较强可解释性
2.3 分类的典型应用场景
- 图像识别(如识别图片中的字符)
- 文本处理(如垃圾邮件过滤)
- 视频分类(如识别视频主题)
- 语音识别(如识别语音中的单词)
- 医疗诊断、天气预测、故障检测等
3. 常见分类算法
3.1 逻辑回归(Logistic Regression)
最基础的分类方法之一,通过将输出映射到 (0,1) 区间来表示样本属于某类别的概率。
优点:
- 简单、易实现
- 可用梯度下降优化
公式表示:
$$ P(y|x) = \frac{1}{1 + e^{-w^T x}} $$
3.2 朴素贝叶斯(Naive Bayes)
基于贝叶斯定理的分类器,假设特征之间相互独立。
公式表示:
$$ P(y|x_i) = P(x_i|y) \cdot \frac{P(y)}{P(x_i)} $$
优点:
- 适用于高维数据
- 对缺失数据和噪声有一定容忍度
3.3 卷积神经网络(CNN)
适用于图像、视频等特征间存在强相关性的数据。
结构特点:
- 使用卷积层提取局部特征
- 使用 ReLU、Dropout 等激活函数
- 输出层常用 Softmax 进行分类
优点:
- 模型表达能力强
- 可自动提取特征
3.4 支持向量机(SVM)
通过寻找最优超平面来划分不同类别的样本。
优点:
- 在高维空间表现良好
- 小样本下效果稳定
缺点:
- 训练速度慢
- 对参数敏感
4. 聚类(Clustering)
4.1 什么是聚类?
聚类是一种无监督学习方法,用于在无标签数据中发现结构。它不依赖于先验知识,而是根据数据之间的相似性进行分组。
聚类的基本前提是:
- 所有样本在同一个特征空间
- 有衡量样本相似性的度量方法(如欧氏距离)
4.2 聚类的关键特点
✅ 无标签数据
❌ 类别数量不一定已知
❌ 可解释性较差
✅ 可用于探索性分析
4.3 聚类的典型应用场景
- 文本聚类(如识别相似文档)
- 图像处理(如图像分割)
- 客户细分(如用户行为分析)
- 地理信息分析(如道路识别)
- 社交网络分析(如识别社区)
5. 常见聚类算法
5.1 K-Means
最常用的聚类算法之一,需预设聚类数量 k。
原理:
- 随机初始化 k 个中心点
- 迭代更新中心点,使簇内样本距离最小
公式表示:
$$ \sum_{j=0}^{n} \min (||x_j - \mu_i||^2) $$
优点:
- 实现简单
- 计算效率高
缺点:
- 需指定 k 值
- 对异常值敏感
5.2 DBSCAN
基于密度的聚类算法,无需预设聚类数量。
参数:
- ε:邻域半径
- min_samples:邻域内最小样本数
优点:
- 可发现任意形状的聚类
- 能识别噪声点
缺点:
- 密度差异大时效果差
5.3 谱聚类(Spectral Clustering)
基于图论,通过构建相似度矩阵进行聚类。
步骤:
- 构建相似度矩阵
- 计算矩阵的特征向量
- 对特征向量使用 K-Means
优点:
- 适用于稀疏数据
- 聚类效果好
缺点:
- 计算复杂度高
5.4 均值漂移(Mean Shift)
基于密度估计的聚类算法,无需预设聚类数量。
优点:
- 自动确定聚类数量
- 不需要所有样本参与聚类
缺点:
- 计算量大
5.5 亲和传播(Affinity Propagation)
通过模拟信息传递确定聚类中心。
优点:
- 无需预设聚类数量
- 对样本数量差异容忍度高
缺点:
- 计算开销大
6. 分类 vs 聚类对比(Checklist)
特性 | 分类 | 聚类 |
---|---|---|
是否需要标签 | ✅ 是 | ❌ 否 |
类别/聚类数量是否已知 | ✅ 是 | ❌ 否 |
是否需要先验知识 | ✅ 需要 | ❌ 不需要 |
可解释性 | ✅ 强 | ❌ 弱 |
泛化能力 | ✅ 仅限标签一致时 | ✅ 通常较好 |
7. 如何选择?
- 如果你有标签数据、类别明确、需要可解释性 → 选分类
- 如果你没有标签、想探索数据结构、不关心类别名称 → 选聚类
⚠️ 注意:分类和聚类也可以结合使用。例如,先聚类生成标签,再训练分类模型。
8. 总结
分类和聚类是机器学习的两大支柱,分别适用于监督和无监督任务。选择时应根据以下几点判断:
- 数据是否有标签?
- 是否知道类别数量?
- 是否需要模型可解释?
- 是否希望模型泛化?
理解它们的差异有助于你更高效地建模和解决问题。在实际项目中,也可以结合使用两者,发挥各自优势。