欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 运维知识 > windows >内容正文

windows

4.4 机器学习系统设计--垃圾邮件分类-机器学习笔记-斯坦福吴恩达教授

发布时间:2025/4/5 windows 41 豆豆
生活随笔 收集整理的这篇文章主要介绍了 4.4 机器学习系统设计--垃圾邮件分类-机器学习笔记-斯坦福吴恩达教授 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

机器学习系统设计–垃圾邮件分类

假定我们现有一封邮件,其内容如下:

From: cheapsales@buystufffromme.com To: ang@cs.stanford.edu Subject: Buy now!Deal of the week!Buy now! Rolex w4ches - $100 Med1cine (any kind) - $50 Also low cost M0rgages available.

充斥着各种诱人的促销信息,很有可能是一封垃圾邮件(Spam)。假定我们有一个垃圾邮件的数据集,想通过机器学习的方式来学会鉴定邮件是否是垃圾邮件,通过这个范例,我们也将学习到机器学习的系统设计。

模型设计

我们令向量 x 表示垃圾邮件的特征向量,该向量包含了 100 个按字母序排序的单词特征,这些单词通常为垃圾邮件常出现的词汇:discount,deal,now 等等:
xj={1第j个单词出现0未出现x_j=\begin{cases}1\quad第j个单词出现\\0\quad未出现\end{cases}xj={1j0

令 y 标签表示该邮件是否是垃圾邮件:
y={1x是垃圾邮件0x不是垃圾邮件y=\begin{cases}1\quad x是垃圾邮件\\0\quad x不是垃圾邮件\end{cases}y={1x0x

那么垃圾邮件分类就是一个 0/1 分类问题,可以用逻辑回归完成,这里不再重复介绍逻辑回归的过程了,我们考虑如何降低分类错误率:

  • 尽可能的扩大数据样本:Honypot 做了这样一件事,把自己包装成一个对黑客极具吸引力的机器,来诱使黑客进行攻击,就像蜜罐(honey pot)吸引密封那样,从而记录攻击行为和手段。
  • 添加更多特征:例如我们可以增加邮件的发送者邮箱作为特征,可以增加标点符号作为特征(垃圾邮件总会充斥了?,!等吸引眼球的标点)。
  • 预处理样本:正如我们在垃圾邮件看到的,道高一尺,魔高一丈,垃圾邮件的制造者也会升级自己的攻击手段,如在单词拼写上做手脚来防止邮件内容被看出问题,例如把 medicine 拼写为 med1cinie 等。因此,我们就要有手段来识别这些错误拼写,从而优化我们输入到逻辑回归中的样本。

错误分析

对于机器学习问题,吴恩达给出了一些 tips:

  • 在一开始,尽量不要将问题复杂化(不要提前优化),先快速实现一个简单算法,然后通过交叉验证集评估模型。这就好比在软件工程中,不会做提前优化,而是先迭代功能。
  • 通过绘制学习曲线(learning curve),确定面临的问题是高偏差还是高方差,来决定是添加更多训练样本,还是添加更多特征。
  • 甚至可以手动检查交叉验证集中误差较大的样本,确定错误的来源和解决策略。

举个例子,假定交叉验证集有 500 个样本,即 mcvm_{cv}mcv=500 ,我们的模型错分了其中 100 个样本,那么我们会通过下述手段进行错误分析:

  • 需要知道哪些邮件被错分了,是假冒伪劣的推销邮件?医药邮件?还是钓鱼邮件?
  • 需要知道提供什么线索(特征)能帮助模型区分出这些邮件?
  • 例如,在这 100 个错分样本中,我们发现有 53 个样本是钓鱼邮件,因此,我们就需要考虑为模型注入识别的钓鱼邮件的能力。继续观察,我们发现,在这 53 封钓鱼邮件中,故意使用错误拼写的邮件有 5 封,来源可疑(发送人可疑)的邮件有 16 封,使用了大量煽动性标点符号的邮件有 32 封。因此,对于识别钓鱼邮件来说,我们更适合将煽动性标点符号添加为特征,而不用再考虑去识别错误拼写。

    总结

    以上是生活随笔为你收集整理的4.4 机器学习系统设计--垃圾邮件分类-机器学习笔记-斯坦福吴恩达教授的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。