毕业设计-基于机器学习的垃圾邮件分类算法研究与实现
对毕设有任何疑问都可以问学长哦!
基于机器学习的垃圾邮件分类
学长这里给一个题目综合评分(每项满分5分)
毕设帮助,选题指导,技术解答,欢迎打扰,见B站个人主页
网络舆情是社会舆情的一种表现形式,网络舆情具有形成迅速、影响力大和组织发动优势强等特点,网络舆情的好坏极大地影响着社会的稳定,通过提高舆情分析能力有效获取发布舆论的性质,避免负面舆论的不良影响是互联网面临的严肃课题。
将邮件分为垃圾邮件(有害信息)和正常邮件,网络舆论分为负面舆论(有害信息)和正面舆论,那么,无论是垃圾邮件过滤还是网络舆情分析,都可看作是短文本的二分类问题。
贝叶斯算法解决概率论中的一个典型问题:一号箱子放有红色球和白色球各20个,二号箱子放油白色球10个,红色球30个。现在随机挑选一个箱子,取出来一个球的颜色是红色的,请问这个球来自一号箱子的概率是多少?
利用贝叶斯算法识别垃圾邮件基于同样道理,根据已经分类的基本信息获得一组特征值的概率(如:“茶叶”这个词出现在垃圾邮件中的概率和非垃圾邮件中的概率),就得到分类模型,然后对待处理信息提取特征值,结合分类模型,判断其分类。
贝叶斯公式:
P(B|A)=P(A|B)*P(B)/P(A)
P(B|A)=当条件A发生时,B的概率是多少。代入:当球是红色时,来自一号箱的概率是多少?
P(A|B)=当选择一号箱时,取出红色球的概率。
P(B)=一号箱的概率。
P(A)=取出红球的概率。
代入垃圾邮件识别:
P(A|B)=当邮件是垃圾邮件时,包含“茶叶”这个单词的概率是多少?
P(B)=垃圾邮件总概率。
P(A)=“茶叶”在所有特征值中出现的概率。
使用中文邮件数据集:丹成学长自己采集,通过爬虫以及人工筛选。
数据集“data”文件夹中,包含,“full”文件夹和“delay”文件夹。
“data”文件夹里面包含多个二级文件夹,二级文件夹里面才是垃圾邮件文本,一个文本代表一份邮件。“full”文件夹里有一个index文件,该文件记录的是各邮件文本的标签。
数据集可视化:
邮件大致内容如下图:
然后将样本标签写入单独的文件中,0代表垃圾邮件,1代表非垃圾邮件。代码如下:
将文本型数据转化为数值型数据,本文使用的是TF-IDF方法。
TF-IDF是词频-逆向文档频率(Term-Frequency,InverseDocumentFrequency)。公式如下:
在所有文档中,一个词的IDF是一样的,TF是不一样的。在一个文档中,一个词的TF和IDF越高,说明该词在该文档中出现得多,在其他文档中出现得少。因此,该词对这个文档的重要性较高,可以用来区分这个文档。
这里学长简单的给一个逻辑回归分类器的例子
测试了2000条数据,使用如下方法:
可以看到,2000条数据训练结果,200条测试结果,精度还算高,不过数据较少很难说明问题。
还可以构建深度学习模型
网络架构第一层是预训练的嵌入层,它将每个单词映射到实数的N维向量(EMBEDDING_SIZE对应于该向量的大小,在这种情况下为100)。具有相似含义的两个单词往往具有非常接近的向量。
第二层是带有LSTM单元的递归神经网络。最后,输出层是2个神经元,每个神经元对应于具有softmax激活功能的“垃圾邮件”或“正常邮件”。