构建垃圾邮件分类器

优先考虑什么工作

系统设计实例:

给定一个数据集的电子邮件,我们可以构建一个向量的每一封电子邮件。在这个向量的每个条目代表一个字。该向量通常包含10000到50000个条目,这些集合是通过查找数据集中最常用的词来收集的。如果在电子邮件中找到一个词,我们将把它的条目指定为1,否则如果找不到,该条目将是0。一旦我们所有的X向量准备好了,我们就训练我们的算法,最后,我们可以用它来分类一封电子邮件是否是垃圾邮件。

所以你如何花你的时间,提高分类的准确性?

1.收集大量的数据(例如“蜜罐”项目,但并不总是工作)

2.形成精妙的变量(例如:使用垃圾邮件电子邮件标头数据)

3.开发算法用不同的方法来处理你的输入(在垃圾邮件识别拼写错误)。

很难说出哪一个选择将是最有帮助的。

误差分析

推荐的方法来解决机器学习问题是:

1.从一个简单的算法开始,快速实现它,并在交叉验证数据上尽早测试它。

2.绘制学习曲线来决定如果更多的数据,更多的变量,是否有帮助。

3.手动检查交叉验证集中的示例中的错误,并试图指出大多数错误产生趋势。

例如,假设我们有500封邮件,我们的算法的误分了100人。我们可以手动分析100电子邮件和分类基于他们是什么类型的电子邮件。然后我们可以想出新的线索和特征,帮助我们正确地分类这100封电子邮件。因此,如果我们的大多数错误的电子邮件是那些试图窃取密码,然后我们可以找到一些特别的电子邮件并将它们添加到我们的模型的特点。我们还可以看到每个词的分类根据其根本改变我们的错误率:

它是作为一个单一的得到错误的结果很重要,数值。否则很难评估算法的性能。例如,如果我们使用词干,即用不同的形式处理同一个单词(失败/失败/失败)作为一个词(失败),得到3%的错误率而不是5%的过程,那么我们肯定会把它添加到我们的模型中。但是,如果我们试图区分大写字母和小写字母,最终得到3.2%的错误率而不是3%,那么我们应该避免使用这个新特性。因此,我们应该尝试新事物,得到错误率的数值,并根据我们的结果决定是否保留新特性。

时间: 2024-10-05 14:06:00

构建垃圾邮件分类器的相关文章

基于C#的机器学习--垃圾邮件过滤

在这一章,我们将建立一个垃圾邮件过滤分类模型.我们将使用一个包含垃圾邮件和非垃圾邮件的原始电子邮件数据集,并使用它来训练我们的ML模型.我们将开始遵循上一章讨论的开发ML模型的步骤.这将帮助我们理解工作流程. 在本章中,我们将讨论以下主题: l  定义问题 l  准备数据 l  数据分析 l  构建数据的特征 l  逻辑回归与朴素贝叶斯的Email垃圾邮件过滤 l  验证分类模型 定义问题 让我们从定义本章要解决的问题开始.我们可能已经对垃圾邮件很熟悉了;垃圾邮件过滤是众电子邮件服务的基本功能.

机器学习Matlab打击垃圾邮件的分类————朴素贝叶斯模型

该系列来自于我<人工智能>课程回顾总结,以及实验的一部分进行了总结学习机 垃圾分类是有监督的学习分类最经典的案例,本文首先回顾了概率论的基本知识.则以及朴素贝叶斯模型的思想.最后给出了垃圾邮件分类在Matlab中用朴素贝叶斯模型的实现 1.概率 1.1 条件概率 定义:事件B发生的情况下,事件A发生的概率记作条件概率P(A|B) P(A|B)=P(A∧B)P(B) 条件概率也叫后验概率.无条件概率也叫先验概率(在没有不论什么其他信息存在的情况下关于命题的信度) 能够得到乘法规则: P(A∧B)

机器学习Matlab实战之垃圾邮件分类————朴素贝叶斯模型

本系列来自于我<人工智能>课程复习总结以及机器学习部分的实验总结 垃圾邮件分类是监督学习分类中一个最经典的案例,本文先复习了基础的概率论知识.贝叶斯法则以及朴素贝叶斯模型的思想,最后给出了垃圾邮件分类在Matlab中用朴素贝叶斯模型的实现 1.概率 1.1 条件概率 定义:事件B发生的情况下,事件A发生的概率记作条件概率P(A|B) P(A|B)=P(A∧B)P(B) 条件概率也叫后验概率,无条件概率也叫先验概率(在没有任何其它信息存在的情况下关于命题的信度) 可以得到乘法规则: P(A∧B)

python 和 scikit-learn 实现垃圾邮件过滤

文本挖掘(Text Mining,从文字中获取信息)是一个比较宽泛的概念,这一技术在如今每天都有海量文本数据生成的时代越来越受到关注.目前,在机器学习模型的帮助下,包括情绪分析,文件分类,话题分类,文本总结,机器翻译等在内的诸多文本挖掘应用都已经实现了自动化. 在这些应用中,垃圾邮件过滤算是初学者实践文件分类的一个很不错的开始,例如 Gmail 账户里的"垃圾邮箱"就是一个垃圾邮件过滤的现实应用.下面我们将基于一份公开的邮件数据集 Ling-spam,编写一个垃圾邮件的过滤器.Ling

基于卷积神经网络(CNN)的中文垃圾邮件检测

前言 跳过废话,直接看正文 文本分类任务是一个经久不衰的课题,其应用包括垃圾邮件检测.情感分析等. 传统机器学习的做法是先进行特征工程,构建出特征向量后,再将特征向量输入各种分类模型(贝叶斯.SVM.神经网络等)进行分类. 随着深度学习的发展以及RNN.CNN的陆续出现,特征向量的构建将会由网络自动完成,因此我们只要将文本的向量表示输入到网络中就能够完成自动完成特征的构建与分类过程. 就分类任务而言,CNN比RNN更为合适.CNN目前在图像处理方向应用最为广泛,在文本处理上也有一些的应用.本文将

Bayes 朴素贝叶斯实现垃圾邮件分类

本文选取了25封垃圾邮件和25封正常邮件,随机产生了10组测试集和40组训练集,使用朴素贝叶斯方法实现了垃圾邮件的分类. Bayes公式   遍历每篇文档向量,扫描所有文档的单词,合并集合去重 ,并生成最终的词汇表 # 创建词汇表 # 输入:dataSet已经经过切分处理 # 输出:包含所有文档中出现的不重复词的列表 def createVocabList(dataSet):  # 文本去重,创建词汇表 vocabSet = set([])  # 创建一个空的集合 for document in

使用朴素贝叶斯分类器过滤垃圾邮件

1.从文本中构建词向量 将每个文本用python分割成单词,构建成词向量,这里首先需要一个语料库,为了简化我们直接从所给文本中抽出所有出现的单词构成一个词库. 2.利用词向量计算概率p(x|y) When we attempt to classify a document, we multiply a lot of probabilities together to get the probability that a document belongs to a given class. Thi

《机器学习实战》学习笔记:基于朴素贝叶斯的垃圾邮件过滤

概率是许多机器学习算法的基础,在前面生成决策树的过程中使用了一小部分关于概率的知识,即统计特征在数据集中取某个特定值的次数,然后除以数据集的实例总数,得到特征取该值的概率. 之前的基础实验中简单实现了朴素贝叶斯分类器,并正确执行了文本分类,这一节将贝叶斯运用到实际场景,垃圾邮件过滤这一实际应用. 实例:使用朴素贝叶斯过滤垃圾邮件 在上一节:http://blog.csdn.net/liyuefeilong/article/details/48383175中,使用了简单的文本文件,并从中提取了字符

机器学习经典算法详解及Python实现---朴素贝叶斯分类及其在文本分类、垃圾邮件检测中的应用

摘要: 朴素贝叶斯分类是贝叶斯分类器的一种,贝叶斯分类算法是统计学的一种分类方法,利用概率统计知识进行分类,其分类原理就是利用贝叶斯公式根据某对象的先验概率计算出其后验概率(即该对象属于某一类的概率),然后选择具有最大后验概率的类作为该对象所属的类.总的来说:当样本特征个数较多或者特征之间相关性较大时,朴素贝叶斯分类效率比不上决策树模型:当各特征相关性较小时,朴素贝叶斯分类性能最为良好.另外朴素贝叶斯的计算过程类条件概率等计算彼此是独立的,因此特别适于分布式计算.本文详述了朴素贝叶斯分类的统计学