首页> 中国专利> 一种基于朴素贝叶斯的网络钓鱼邮件检测方法及系统

一种基于朴素贝叶斯的网络钓鱼邮件检测方法及系统

摘要

本发明公开了一种基于朴素贝叶斯的网络钓鱼邮件检测方法及系统,属于机器学习人工智能领域;所述的方法的具体步骤如下:S1基于Python在Jupyter的环境中搭建运行;S2利用朴素贝叶斯支持向量机查找目标函数的全局最小值;S3通过支持向量机建立超平面对样本进行划分;S4从数据集文件中逐行读取训练数据并进行分析;S5将数据集划分为训练集和测试集进行模型训练;本发明基于正文特征(特定单词和标点符号)的对决策树,逻辑回归,随机森林,朴素贝叶斯和支持向量机模型进行了测试,结果基于真阳性,假阳性,真阴性,假阴性,准确率,精确率,召回率,f1分数进行评估比较;数据集来自IWSPA竞赛(包括训练集和测试集),其中正常邮件来自Wikileaks和SpamAssassin,钓鱼邮件来自Nazario phishing corpus。

著录项

  • 公开/公告号CN114841248A

    专利类型发明专利

  • 公开/公告日2022-08-02

    原文格式PDF

  • 申请/专利权人 浪潮云信息技术股份公司;

    申请/专利号CN202210368701.5

  • 发明设计人 孙剑雷;路海龙;胡章丰;李彦君;

    申请日2022-04-09

  • 分类号G06K9/62(2022.01);G06F40/44(2020.01);G06F40/289(2020.01);G06F40/205(2020.01);G06F40/143(2020.01);

  • 代理机构济南信达专利事务所有限公司 37100;

  • 代理人姜鹏

  • 地址 250000 山东省济南市高新区浪潮路1036号浪潮科技园S01号楼

  • 入库时间 2023-06-19 16:14:25

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-08-19

    实质审查的生效 IPC(主分类):G06K 9/62 专利申请号:2022103687015 申请日:20220409

    实质审查的生效

  • 2022-08-02

    公开

    发明专利申请公布

说明书

技术领域

本发明公开一种基于朴素贝叶斯的网络钓鱼邮件检测方法及系统,涉及机器学习人工智能技术领域。

背景技术

机器学习(ML)是计算机算法领域的一门技术。它是一种基于经验的自我学习改进算法,被认为是人工智能的一个子集。机器学习算法是建立在样本数据(也称为训练数据)基础上的数学模型,它可以对数据进行处理、预测和决策,而不需要复杂的编程。如今,机器学习算法在生活的各个方面都发挥着巨大的作用,比如医疗诊断,股票市场分析,大大提高了工作效率。

从互联网出现以来,它在人类生活中扮演着越来越重要的角色,覆盖了所有的领域,现在已经成为生活中不可替代的一部分。互联网在给人类带来无数便利的同时,也像一把双刃剑,给人类的生活带来了很多风险。网络钓鱼是一种网络犯罪活动,每年都有许多用户和企业由于网络钓鱼受到了影响,造成损失,社会经济受到严重威胁。网络钓鱼者通过网络攻击目标,受害者在没有保护的情况下泄露个人信息、用户密码、财务信息等敏感信息。网络钓鱼有很多种方式,其中最流行的是电子邮件。

故现发明一种基于朴素贝叶斯的网络钓鱼邮件检测方法及系统,以解决上述问题。

发明内容

本发明针对现有技术的问题,提供一种基于朴素贝叶斯的网络钓鱼邮件检测方法及系统,所采用的技术方案为:一种基于朴素贝叶斯的网络钓鱼邮件检测方法,所述的方法的具体步骤如下:

S1基于Python在Jupyter的环境中搭建运行;

S2利用朴素贝叶斯支持向量机查找目标函数的全局最小值;

S3通过支持向量机建立超平面对样本进行划分;

S4从数据集文件中逐行读取训练数据并进行分析;

S5将数据集划分为训练集和测试集进行模型训练。

所述S4从数据集文件中逐行读取训练数据并进行分析的具体步骤如下:

S401将电子邮件内容与标签分开进行标记;

S402从文件中读取特定序列的单词并转换为小写;

S403计算单个电子邮件和所有电子邮件中的字数;

S404将电子邮件向量化。

所述S404将电子邮件向量化的具体步骤如下:

S4041将邮件内容的大写转换为小写;

S4042删除所有句号、逗号、括号和感叹号;

S4043按空格分词,并记录该词是否出现;

S4044解析文件并提取特殊序列单词。

所述S5将数据集按照七三比例划分为训练集和测试集进行模型训练的具体步骤如下:

S501输入二维矩阵和样本标签;

S502计算钓鱼邮件中每个单词的频率,用样本频率代替概率。

一种基于朴素贝叶斯的网络钓鱼邮件检测系统,所述的系统具体包括环境搭建模块、目标查找模块、样本划分模块、训练分析模块和模型训练模块:

环境搭建模块:基于Python在Jupyter的环境中搭建运行;

目标查找模块:利用朴素贝叶斯支持向量机查找目标函数的全局最小值;

样本划分模块:通过支持向量机建立超平面对样本进行划分;

训练分析模块:从数据集文件中逐行读取训练数据并进行分析;

模型训练模块:将数据集划分为训练集和测试集进行模型训练。

所述训练分析模块具体包括标记处理模块、文件处理模块、字数处理模块和邮件处理模块:

标记处理模块:将电子邮件内容与标签分开进行标记;

文件处理模块:从文件中读取特定序列的单词并转换为小写;

字数处理模块:计算单个电子邮件和所有电子邮件中的字数;

邮件处理模块:将电子邮件向量化。

所述邮件处理模块具体包括内容转换模块、符号处理模块、分词处理模块和单词处理模块:

内容转换模块:将邮件内容的大写转换为小写;

符号处理模块:删除所有句号、逗号、括号和感叹号;

分词处理模块:按空格分词,并记录该词是否出现;

单词处理模块:解析文件并提取特殊序列单词。

所述模型训练模块具体包括训练输入模块和训练输出模块:

训练输入模块:输入二维矩阵和样本标签;

训练输出模块:计算钓鱼邮件中每个单词的频率,用样本频率代替概率。

本发明的有益效果为:本发明基于正文特征(特定单词和标点符号)的对决策树,逻辑回归,随机森林,朴素贝叶斯和支持向量机模型进行了测试,结果基于真阳性,假阳性,真阴性,假阴性,准确率,精确率,召回率,f1分数进行评估比较;数据集来自IWSPA竞赛(包括训练集和测试集),其中正常邮件来自Wikileaks和SpamAssassin,钓鱼邮件来自Nazariophishing corpus。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例中的实验流程图;图2是本发明实施例中混淆矩阵的结构示意图;图3是本发明实施例中朴素贝叶斯和支持向量机结果对比示意图;

图4是本发明方法的流程图。

具体实施方式

下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定。

实施例一:

一种基于朴素贝叶斯的网络钓鱼邮件检测方法,所述的方法的具体步骤如下:

S1基于Python在Jupyter的环境中搭建运行;

S2利用朴素贝叶斯支持向量机查找目标函数的全局最小值;

S3通过支持向量机建立超平面对样本进行划分;

S4从数据集文件中逐行读取训练数据并进行分析;

S5将数据集划分为训练集和测试集进行模型训练;

该技术基于Python,并在Jupyter笔记本的环境中运行;它可以帮助用户完成许多编程任务,并可以轻松执行各种任务,例如处理数据,制作图表和构建模型;与其他平台相比,Jupyter notebook更加灵活和互动;用户可以随意共享自己的代码或与他人通信;它提供了一个以重复和自然的方式与数据交互的环境;

朴素贝叶斯模型在大多数网络钓鱼电子邮件测试中表现稳定,支持向量机(SVM)可以使用已知有效的算法来查找目标函数的全局最小值,而其他方法通常只能获得局部最优解;但是,存在一个挑战,即支持向量机(SVM)仅适用于小型数据集,而网络钓鱼电子邮件的数据集很大,因此需要为支持向量机(SVM)选择合适的数据集;随机森林(RF)也是一个很好的模型;它在多维特征数据集的分类中具有很高的效率,并且还可以做出特征重要性的选择;它在操作中具有高效率和准确性,并且实现起来相对简单;但缺点也很明显,在数据相对响亮的情况下会过度拟合,这更致命;逻辑回归(LR)在仅将正文的文本特征用作输入时也显示出很高的准确性,但是当测试头部特征时,精度降低了;在单个机器学习分类器中,加权决策树(WDT)中网络钓鱼邮件的检测率高达99%,但在集成学习中的性能结果并不理想;

朴素贝叶斯公式:

可以理解为,在[事件x]发生的条件下,[事件w]发生的概率=(在[事件w]发生的条件下,[事件x]发生的概率*([事件w]发生的概率)/[事件x]发生的概率;设[事件x]为[特定单词序列出现];让[事件w]成为[网络钓鱼电子邮件];本实验需要解决的问题是当[特定单词序列出现]时,此电子邮件是[网络钓鱼电子邮件]的概率;因此,我们只需要知道[网络钓鱼电子邮件]中[特定单词序列出现]的概率,[网络钓鱼电子邮件]的概率以及[特定单词序列出现]的概率来计算结果;

支持向量机是一种监督式机器学习算法;它通过建立超平面来划分样本;分割的原理是最大化间隔;它最终被转换成一个凸二次规划问题,用于解决二元分类,即数据分类;多变量分类问题,可以通过构建多个SVM分类器来解决,这些分类器广泛应用于统计分类和回归分析;支持向量机的计算比较复杂,所以在没有手动计算的情况下直接调用有关SVM的包;

该项目使用四个指标来评估分类器的性能,分别是准确率、准确率、召回率和f1分数;在计算这些指标时,会涉及到混淆矩阵;混淆矩阵是一个表格,通常用于描述分类模型在一组具有已知真实值的测试数据上的性能;

真阳性(TP):预测类为正确,实际类为正确,预测结果为真;表示正确分类的阳性样本数;

假阳性(FP):预测类为阳性,实际类为阴性,预测结果为假;表示错误分类的阴性样本数;

假阴性(FN):预测类为阴性,实际类为阳性,预测结果为假;表示错误分类的阳性样本数;

真阴性(TN):预测类为错误,实际类为错误,预测结果为真;表示正确分类的阴性样本数;

准确度:

精确度:

召回率:

F1分数:

朴素贝叶斯分类器的准确率、准确率、召回率和f1分数为:准确率为94.26%,准确率为94.54%,召回率为73.05%,F1得分为82.42%;

支持向量机分类器的准确率、准确率、召回率和f1分数为:准确率为95.69%,准确率为70.17%,召回率为99.40%,F1分数为82.27%;

朴素贝叶斯分类器和支持向量机分类器的准确率和f1非常接近,说明整体效果相似;本次测试中,precision代表正预测结果的检测准确率,recall代表预测结果真实正样本中的准确率;支持向量机分类器的精度较低,而召回率较高,说明大部分钓鱼邮件都能找到,但误判率较高;朴素贝叶斯分类器正好相反,说明漏掉的钓鱼邮件很多,但识别出的钓鱼邮件的误判率很低;这两种模型适用于不同的情况;支持向量机适用于在检测到钓鱼邮件后提示用户,让用户再做一次判断(这是由于误判率高,以免误杀正常邮件;让用户执行第二次检测);朴素贝叶斯适合检测后直接转入垃圾邮箱(这是因为它的误判率低,直接删除误杀的概率很小);我们可以先用支持向量机进行检测,由于较高的误判率,我们对检测出来的钓鱼邮件使用朴素贝叶斯进行二次检测,将误判的重新归类为正常邮件,其余的转入垃圾箱;

进一步的,所述S4从数据集文件中逐行读取训练数据并进行分析的具体步骤如下:

S401将电子邮件内容与标签分开进行标记;

S402从文件中读取特定序列的单词并转换为小写;

S403计算单个电子邮件和所有电子邮件中的字数;

S404将电子邮件向量化;

将电子邮件内容与标签分开;钓鱼邮件的标签栏记为1,普通邮件记为0;从文件中读取特定序列的单词,将其转换为小写;计算单个电子邮件和所有电子邮件中的字数;

进一步的,所述S404将电子邮件向量化的具体步骤如下:

S4041将邮件内容的大写转换为小写;

S4042删除所有句号、逗号、括号和感叹号;

S4043按空格分词,并记录该词是否出现;

S4044解析文件并提取特殊序列单词;

首先将邮件内容的大写转换为小写,删除所有句号、逗号、括号和感叹号,然后按空格分词,并记录该词是否出现(出现记录为1,不出现记录作为0);解析文件并提取特殊序列单词;

再进一步的,所述S5将数据集按照七三比例划分为训练集和测试集进行模型训练的具体步骤如下:

S501输入二维矩阵和样本标签;

S502计算钓鱼邮件中每个单词的频率,用样本频率代替概率;

输入

Matrix:二维矩阵;每行代表一条消息,每列表示一个词是否出现(1表示出现,0表示不出现;行数是样本中的消息数,列数是样本中所有特定序列单词的数量;

Labels:样本标签,反映每封邮件是否是钓鱼邮件;

输出

p1_vector:钓鱼邮件中所有单词出现的概率;

p1+=vector:计算钓鱼邮件中所有单词出现的次数;

p1_smooth+=sum(vector):计算钓鱼邮件中所有单词的总数;

P1/p1_smooth:计算钓鱼邮件中每个单词的频率,用样本频率代替概率。

实施例二:

一种基于朴素贝叶斯的网络钓鱼邮件检测系统,所述的系统具体包括环境搭建模块、目标查找模块、样本划分模块、训练分析模块和模型训练模块:

环境搭建模块:基于Python在Jupyter的环境中搭建运行;

目标查找模块:利用朴素贝叶斯支持向量机查找目标函数的全局最小值;

样本划分模块:通过支持向量机建立超平面对样本进行划分;

训练分析模块:从数据集文件中逐行读取训练数据并进行分析;

模型训练模块:将数据集划分为训练集和测试集进行模型训练;

进一步的,所述训练分析模块具体包括标记处理模块、文件处理模块、字数处理模块和邮件处理模块:

标记处理模块:将电子邮件内容与标签分开进行标记;

文件处理模块:从文件中读取特定序列的单词并转换为小写;

字数处理模块:计算单个电子邮件和所有电子邮件中的字数;

邮件处理模块:将电子邮件向量化;

进一步的,所述邮件处理模块具体包括内容转换模块、符号处理模块、分词处理模块和单词处理模块:

内容转换模块:将邮件内容的大写转换为小写;

符号处理模块:删除所有句号、逗号、括号和感叹号;

分词处理模块:按空格分词,并记录该词是否出现;

单词处理模块:解析文件并提取特殊序列单词;再进一步的,所述模型训练模块具体包括训练输入模块和训练输出模块:

训练输入模块:输入二维矩阵和样本标签;

训练输出模块:计算钓鱼邮件中每个单词的频率,用样本频率代替概率。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号