# 简介

数据集:SMS Spam Collection Dataset
目标:将短信分为 ham 和 spam 两类

# 使用的模型

# 文本嵌入

TF-IDF

# 监督学习

  • SVM
  • 决策树
  • 朴素贝叶斯

# 无监督学习

  • k-means
  • gmm
  • dbscan

# 项目过程

主要是下面几个阶段:

  • 数据预处理(数据加载,清洗,向量化)
  • 模型训练
  • 模型评估

对于监督学习模型,数据还进行了特征标准化;训练测试比为 8:2
对于无监督模型,数据进行了 PCA 降维

# 评估结果

# 无监督模型

总体性能较差,难以实现分类的目的。

# k-means

混淆矩阵:

[4596  229]  
[ 745    2]

分类报告:

classification_report:  
              precision    recall  f1-score   support  
  
         ham       0.86      0.95      0.90      4825  
        spam       0.01      0.00      0.00       747  
  
    accuracy                           0.83      5572  
   macro avg       0.43      0.48      0.45      5572  
weighted avg       0.75      0.83      0.78      5572

# dbscan

由于 dbscan 的特性,聚簇不止两个。这里选取数据最多的作为两类。
混淆矩阵:

[ 409 4371]  
[  20  706]

分类报告:

classification_report:  
              precision    recall  f1-score   support  
  
         ham       0.86      1.00      0.93      4371  
        spam       1.00      0.01      0.02       712  
  
    accuracy                           0.86      5083  
   macro avg       0.93      0.50      0.47      5083  
weighted avg       0.88      0.86      0.80      5083

# gmm

混淆矩阵:

[1912 2913]  
[ 532  215]

分类报告:

classification_report:  
              precision    recall  f1-score   support  
  
         ham       0.93      0.60      0.73      4825  
        spam       0.22      0.71      0.33       747  
  
    accuracy                           0.62      5572  
   macro avg       0.57      0.66      0.53      5572  
weighted avg       0.84      0.62      0.68      5572

# 分析与评价

无监督模型可能难以捕捉垃圾邮件的特征,不能形成有效的聚类。
文本聚类算法介绍

# 监督模型

# SVM

模型准确率: 96.95%
分类报告:

precision    recall  f1-score   support
           0       0.97      1.00      0.98       966
           1       0.98      0.79      0.87       149
    accuracy                           0.97      1115
   macro avg       0.97      0.89      0.93      1115
weighted avg       0.97      0.97      0.97      1115

混淆矩阵:

[963   3]
[ 31 118]

模型交叉验证:
{'mean_accuracy': 0.9721761712793103, 'std_accuracy': 0.006412315654777117}

# DecisionTree

模型准确率: 94.17%
分类报告:

precision    recall  f1-score   support
           0       0.95      0.99      0.97       966
           1       0.90      0.63      0.74       149
    accuracy                           0.94      1115
   macro avg       0.92      0.81      0.86      1115
weighted avg       0.94      0.94      0.94      1115

混淆矩阵:

[956  10]
[ 55  94]

模型交叉验证:
{'mean_accuracy': 0.9488419320257886, 'std_accuracy': 0.007344538548604231}

# NaiveBayes

模型准确率: 78.03%
分类报告:

precision    recall  f1-score   support
           0       0.97      0.77      0.86       966
           1       0.37      0.87      0.51       149
    accuracy                           0.78      1115
   macro avg       0.67      0.82      0.69      1115
weighted avg       0.89      0.78      0.81      1115

混淆矩阵:

[740 226]
[ 19 130]

模型交叉验证:
{'mean_accuracy': 0.8012078935845752, 'std_accuracy': 0.01837261295740388}

# 分析与评价

可以看到,三者的表现均良好,其中 SVM 效果最好,朴素贝叶斯相对较差。推测出监督学习可以较好地学习到垃圾短信的特征,实现分类效果。

# 总结

# 模型性能差异的根本原因

原因影响
数据特征:文本经 TF-IDF 后是高维稀疏数据非线性、非球状、非高斯 —— 对聚类不友好
监督信息可用性有监督模型能 “学会” 哪些特征是 spam 的,聚类模型只能 “猜”
类别不平衡:ham 多,spam 少聚类容易将所有样本归为大类
聚类模型假设不成立k-means:类是球状;GMM:类是高斯;DBSCAN:类是密集簇

# 模型优劣与适用性对比表

模型类型优点缺点适合任务
SVM监督精度高,泛化强,适合高维数据对大数据耗时文本分类、情感分析等
决策树监督可解释性强,运行快容易过拟合,边界不平滑结构化数据、快速部署场景
朴素贝叶斯监督快速、易实现特征独立假设不总成立,易误报邮件初筛、简单分类
K-Means无监督简单、可扩展不适合高维、非凸类、不平衡数据用户分群(数值型特征)
DBSCAN无监督能处理噪声点、发现异常形状簇高维空间下效果差空间聚类、异常检测
GMM无监督软聚类、概率解释性对高维稀疏文本不适用连续型信号聚类(音频等)
更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

北沐清 微信支付

微信支付

北沐清 支付宝

支付宝