钓鱼邮件检测(本科毕设)

做了一个多月的毕设,《钓鱼邮件检测方法的设计与实现》。

主要参考的是12年南邮学报上发的的一篇论文《基于文本特征分析的钓鱼邮件检测》,说是说基于文本特征分析,其实就是用机器学习的方法实现钓鱼邮件的检测。

主要实现流程为:钓鱼邮件特征选择;编写特征提取算法;编写机器学习分类器的训练算法代码和检测代码;对模型进行测试。

特征选择:

特征的选择参考的是上述论文中选择的特征,再通过自己的分析修改了一些。其实做到最后发现这些特征里面,邮件是否含有html类型语言占了很大的比重,其他的特征占得比重特别小,可能是跟邮件训练样本集有关。钓鱼邮件的训练和测试样本集和上述论文中使用的一样,年份有些久远,都是零几年收集的数据,但实在找不到其他的样本集了。

特征提取的代码都是自己敲出来的,参考的论文里给了一些伪代码。特征提取用到的核心知识是正则表达式,听起来挺玄乎的东西,但其实也不是很难。不是很难不代表它不博大精深,入门容易,精通很难。

机器学习分类器实现:

实现了三种分类器,LR、朴素贝叶斯、决策树。都是用Python写的,LR和朴素贝叶斯是直接按照算法,用代码实现的(当然不是我实现的),决策树用的是python机器学习的第三方库。决策树也有使用代码实现算法的例子,但是我没成功移植到我的系统里来,所以就走了个捷径。LR和贝叶斯开始都是找的博客文章,后来发现那些博客文章里面的代码都是来自于《机器学习实战》这本书,后续可以好好看看这本书。

检测模型测试:

用monkey.org提供的1000封钓鱼邮件和spamassassin提供的1000封普通邮件作训练集,500封钓鱼邮件和500封普通邮件作测试集,检测性能十分的好,甚至比论文里面的结果都好。但个人觉得我写的这个模型没有什么实际意义,因为样本集邮件数据的现实参考性实在太低。不过如果它参考性强的话检测性能肯定达不到这么高。

总结:

 这次毕设课题经历总体来说还是让我受益匪浅的。考完研寒假在家无聊看了吴恩达教授的机器学习公开课(虽然没看完),没想到毕设就用上了。熟悉了python语言(python真是一门强大的语言,包容性贼高,不像C那么龟毛),接触了正则表达式,对机器学习里面的分类算法有了深刻的理解(虽然算法的代码实现不是自己写的,但是基本理清了它们的实现思路)。

展望:

马上要从一枚本科渣渣转战为研究生了,希望自己研究生能多学点东西,以后找工作不至于太虚。

毕设告一段落(其实还有论文修改、查重和答辩。。。),接下来想把《机器学习实战》这本书给好好看看,有时间接触一下Android编程,熟悉熟悉Java,感觉自己都忘光了。其实觉得应该把吴恩达Learning Machine的公开课给看完的,做人要有始有终嘛,但是真心看的费劲,再说吧。

希望自己不是仅仅做个展望,能落到实处!

转载于:https://www.cnblogs.com/yingying7/p/9052324.html

你可能感兴趣的:(钓鱼邮件检测(本科毕设))