垃圾邮件分类 - 机器学习

Posted

技术标签:

【中文标题】垃圾邮件分类 - 机器学习【英文标题】:spam classification - machine learning 【发布时间】:2014-04-21 05:44:25 【问题描述】:

我必须使用一些分类器(例如朴素贝叶斯、SVM 和另一个分类器)进行垃圾邮件检测应用程序并比较它们的效率,但不幸的是我不知道我应该具体做什么。

这是否正确: 首先,我应该有语料库垃圾邮件,例如 trec2005、spamassasin 或 enron-spam。 然后,我进行文本预处理,如词干提取、停用词删除、标记化等。

之后,我可以使用 tf-idf 衡量垃圾邮件中的特征/术语的权重。 接下来,我以非常低和非常高的频率移除这些特征。 然后我可以对我的电子邮件进行分类。对吧?

之后我可以通过真阳性、假阳性等来衡量我的正确分类。

如果某事需要 10 倍交叉验证? 我应该如何使用它?

您能否告诉我这些电子邮件分类步骤是否可行? 如果不是,请说明垃圾邮件分类的正确步骤。

【问题讨论】:

斯坦福大学在coursera 和CS229 第5 讲的机器学习课程中都使用垃圾邮件分类作为示例 【参考方案1】:

以下是构建垃圾邮件分类器所需的大致步骤:

1- 输入:一个带标签的训练集,包含足够多的垃圾邮件和合法电子邮件样本

2- 特征提取:将您的电子邮件文本转换为有用的特征以进行培训,例如词干,去除停用词,词频。然后评估这些特征(即应用属性选择方法)以选择最重要的特征。

3- 如果您有足够大的数据集,请将其拆分为训练、验证和测试集。如果不是,您可以使用整个数据集进行训练并进行交叉验证以评估分类器性能

4- 训练您的分类器并使用测试数据来评估其性能或进行交叉验证

5- 使用经过训练的模型对新电子邮件进行分类。完成。

交叉验证的用途是评估您的模型在新数据/未见数据上的表现。因此,如果您有一个独立的测试数据集,您可能根本不需要交叉验证,因为您可以在测试数据集上评估模型性能。但是,当您的数据集较小时,您可以将其划分为子集(例如 10 折),然后重复训练 10 次,每次只使用 90% 的数据并测试剩余的 10%,依此类推。

您最终会得到 10 个分类器误差估计值,平均它们以获得均方或绝对误差

【讨论】:

以上是关于垃圾邮件分类 - 机器学习的主要内容,如果未能解决你的问题,请参考以下文章

英文垃圾邮件分类机器学习篇——带你一次看个爽

机器学习:13-垃圾邮件分类2

机器学习入门 - 基本概念

机器学习术语表

12.朴素贝叶斯-垃圾邮件分类

模式识别与机器学习——logistic regression