Bootstrap

【漫话机器学习系列】025.分类(Classification)

分类(Classification)

分类是一种监督学习方法,目标是通过分析已标注数据集中的输入特征与对应类别的关系,构建模型以预测新数据的类别。分类任务广泛应用于文本处理、图像识别、疾病诊断等领域。


1. 分类的基本概念

分类任务的定义
  • 输入:具有特征 X = [x_1, x_2, ..., x_n] 的数据点。
  • 输出:每个数据点对应的类别 Y,取值为离散型变量,例如 Y \in \{C_1, C_2, ..., C_k\}
目标
  • 使用训练数据构建分类模型 f: X \to Y,将新样本 X' 正确归类到适当的类别 Y'。

2. 分类的常见算法

线性模型
  1. 逻辑回归(Logistic Regression)
    • 假设输出类别的概率服从对数几率模型。
    • 适合线性可分问题。
    • 可扩展到多分类任务(Softmax 回归)。
基于距离的模型
  1. K近邻(K-Nearest Neighbors, KNN)
    • 通过计算与样本点的距离来分类。
    • 简单易实现,但对数据规模较敏感。
决策树及集成方法
  1. 决策树(Decision Tree)
    • 根据特征值构建一棵树,选择分裂点以最大化信息增益。
    • 可解释性好,但易过拟合。
  2. 随机森林(Random Forest)
    • 通过多个决策树构建的集成模型。
    • 提高鲁棒性和防止过拟合。
  3. 梯度提升树(Gradient Boosting)
    • 使用弱分类器的序列模型提升性能(如 XGBoost)。
基于概率的模型
  1. 朴素贝叶斯(Naive Bayes)
    • 假设特征条件独立,基于贝叶斯定理计算概率。
    • 适合文本分类等任务。
神经网络
  1. 多层感知机(MLP)
    • 基于反向传播算法,通过全连接层学习复杂映射关系。
  2. 卷积神经网络(CNN)
    • 用于图像分类任务,提取空间特征。
  3. 循环神经网络(RNN)
    • 适用于时间序列数据,例如语音、文本。

3. 分类模型的评价指标

  1. 准确率(Accuracy)

    Accuracy = \frac{TP + TN}{TP + TN + FP + FN}
  2. 精确率(Precision)

    • 预测为正的样本中实际为正的比例。
    Precision = \frac{TP}{TP + FP}
  3. 召回率(Recall)

    • 实际正样本中被正确识别的比例。
    Recall = \frac{TP}{TP + FN}
  4. F1值(F1-Score)

    • 精确率和召回率的调和平均。
    F1 = 2 \times \frac{Precision \cdot Recall}{Precision + Recall}
  5. ROC曲线与AUC值

    • ROC曲线表示分类器的综合性能。
    • AUC值是 ROC 曲线下的面积,反映模型的整体表现。

4. 分类模型的实现:Python 示例

数据集

我们使用 sklearn 中的鸢尾花(Iris)数据集进行分类。

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report, confusion_matrix, accuracy_score

# 加载数据集
iris = load_iris()
X = iris.data
y = iris.target

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

训练模型

使用随机森林作为分类模型:

# 初始化分类器
clf = RandomForestClassifier(n_estimators=100, random_state=42)

# 训练模型
clf.fit(X_train, y_train)

# 预测
y_pred = clf.predict(X_test)

# 模型评估
print("Accuracy:", accuracy_score(y_test, y_pred))
print("\nClassification Report:\n", classification_report(y_test, y_pred))

输出结果

Accuracy: 1.0

Classification Report:
               precision    recall  f1-score   support

           0       1.00      1.00      1.00        19
           1       1.00      1.00      1.00        13
           2       1.00      1.00      1.00        13

    accuracy                           1.00        45
   macro avg       1.00      1.00      1.00        45
weighted avg       1.00      1.00      1.00        45


5. 分类的应用场景

  1. 文本分类

    • 电子邮件垃圾分类。
    • 新闻话题分类。
  2. 图像识别

    • 人脸识别。
    • 目标检测。
  3. 医学诊断

    • 疾病预测(例如癌症分类)。
    • 病理图像分析。
  4. 推荐系统

    • 用户偏好预测。
  5. 金融风险分析

    • 客户信用评分。
    • 欺诈交易检测。

6. 分类中的挑战

  1. 类别不平衡

    • 当某些类别样本数量远少于其他类别时,模型可能偏向多数类。
  2. 过拟合

    • 模型在训练集上表现优异,但在测试集上效果较差。
  3. 高维数据

    • 特征数量远多于样本数量时,可能导致维度灾难。
  4. 缺失值

    • 数据中的缺失值可能影响分类性能,需要进行预处理。

7. 分类的优化策略

  1. 特征选择

    • 通过统计分析或算法(如 Lasso 回归)筛选重要特征。
  2. 正则化

    • 通过 L1 或 L2 正则化约束模型复杂度,防止过拟合。
  3. 数据增强

    • 增加数据多样性(如图像翻转、文本同义词替换)。
  4. 类别权重调整

    • 通过调整权重或重采样平衡类别分布。

总结

分类是一类重要的机器学习任务,涵盖从简单的逻辑回归到复杂的神经网络多种方法。选择合适的算法和评价指标,结合特定问题场景和数据特性,是构建高效分类模型的关键。

;