看《***与画家》讲到"防止垃圾邮件的一种方法",觉得很适合用来表述数学公式与机器学习之间的关系。涉及到机器学习的数学公式比较简单,概率论基础教程都会讲到。解决的问题也很典型: 垃圾邮件的识别。

防止垃圾邮件有很多种方法,最直观的一种就是“规则”, 各种if-else的条件。这种方法能够解决一个问题,但是解决不了一类问题。而且,这个规则的制定需要非常熟悉业务,好在通常我们面临的业务问题是很垂直的, 通过规则, 也能够解决问题。毕竟解决问题才是业务的核心诉求。

接下来, 业务随着业务的发展, 规则越来越复杂, 我们维护起来也越来越吃力。 而且使用规则,是被动式的解决问题,用户体验也不好。 这个时候,新的方法该上场了,这个方法就是 “统计学方法”。 因为接触的规则越多, 我们会慢慢发现邮件中出现某个关键词, 只能表示邮件有可能是垃圾邮件。 这个可能性如何度量呢? 用贝叶斯方法。

贝叶斯方法的思路属于逆向思维。 通常概率论解决的问题是“已知邮件是垃圾邮件,问各个单词出现在垃圾邮件中的概率”, 贝叶斯方法解决的问题是“已知邮件内容, 问当前邮件属于垃圾邮件的概率".

理解贝叶斯公式不难,其基础点有"条件概率", "联合概率"。 贝叶斯公式的推导也很简单:

P(AB) = P(B)*P(A|B)

P(AB) = P(A)*P(B|A)

有:

P(B)*P(A|B)=P(A)*P(B|A)

所以

P(A|B) = P(A)*P(B|A) / P(B)

虽然机器学习最忌讳的就是套公式,但是为了方便理解, 我们先套个公式:

P(垃圾邮件|邮件内容) 表示 ”在已知邮件内容,邮件属于垃圾邮件的概率“

P(垃圾邮件|邮件内容) = P(垃圾邮件) * P(邮件内容|垃圾邮件) / P(邮件内容)

等式右边的概率是可以通过样本计算出来的。

现在解决问题的方法有了,数学公式也有了, 是不是问题就解决了呢? 显然不是。我们只是完成了模型选择而已。通过《***与画家》看这个模型是如何落地的。

  1. 选择样本: 作者选取了4000封正常邮件和4000封垃圾邮件。

  2. 选择特征:字母、阿拉伯数字、破折号、撇号、美元符号作为“实义标识”

  3. 统计次数: 计算了每个实义标识在两个邮件组出现的次数

  4. 确定计算公式。 这里其实就是整篇文章的精华了。a. 作者没有完完全全套用贝叶斯公式; b. 作者分别在token和邮件两个维度用了贝叶斯思想。这才是难能可贵的。

  5. 特征选择: 作者选取了top15的特征, 而非邮件全部的token.

  6. 结果选取: 通常我们选取结果是以0.5为界,而作者以0.9为界。

如果说通常意义上的编程是一维的,那么机器学习的编程就是二维的。通常的工程问题是非黑即白,要么可用,要么是有Bug不可用。而机器学习在工程上的落地,更核心的关注点在于算法效果好不好和算法效果能不能更好。算法效果好不好,核心点在于数学模型, 其次在于怎么用好数学模型。 《***与画家》用简明的例子说明他是怎么用数学模型解决业务问题的。

引申一下:这个问题属于典型的二分类问题。像垃圾邮件,垃圾评论, 评论的情感判断, 是否目标用户,是否推荐用户... 很多问题都可以归类到二分类问题。如果把"垃圾邮件的识别"抽象到分类问题,整个解决问题的思路就又开阔了很多。

从贝叶斯公式到垃圾邮件的识别相关推荐

  1. 【数据挖掘】贝叶斯公式在垃圾邮件过滤中的应用 ( 先验概率 | 似然概率 | 后验概率 )

    文章目录 I . 垃圾邮件过滤 需求 及 表示方法 II . 贝叶斯方法 步骤 1 : 提出假设 III . 贝叶斯方法 步骤 2 : 计算垃圾邮件假设概率 IV . 贝叶斯方法 步骤 2 : 计算正 ...

  2. 机器学习实战4(1):朴素贝叶斯:垃圾邮件的识别

    一.朴素贝叶斯基础知识 预备数学知识: A. 无约束条件的优化 1.求极值问题 人工智能中最核心的数学环节是求出一个目标函数(object function)的最小值/最大值.求出一个函数最小是/最大 ...

  3. 垃圾邮件的判定标准与识别方法

    因为国内QQ邮箱的一家独大,所以目前国内的ESP和世界上主流的ESP 判定垃圾邮件的标准有所不同,但总体来说,不外乎以下几种技术: 1.关键词识别 它首先将垃圾邮件中一些特征性的字眼收集起来(比如打折 ...

  4. python垃圾邮件识别_Python贝叶斯推理垃圾邮件分类

    针对贝叶斯垃圾邮件分类,阮一峰大神在多年前曾经写过一篇博客文章,他写的有些观点看起来很简单明了,不过我有点不是很理解其推导过程,虽然最后的结果等价,但是我还是觉得他的那套简单推导,感觉不太容易理解,可 ...

  5. 垃圾邮件分类快速理解机器学习中的朴素贝叶斯(Naive Bayes)

    贝叶斯方法是一个历史悠久,有着坚实的理论基础的方法,同时处理很多问题时直接而又高效,很多高级自然语言处理模型也可以从它演化而来.因此,学习贝叶斯方法,是研究自然语言处理问题的一个非常好的切入口. 其实 ...

  6. 基于朴素贝叶斯的垃圾邮件分类器Java实现和讲解

    朴素贝叶斯算法最典型的应用就是垃圾邮件的识别,在数据量非常大的情况下,识别的正确率可以达到接近100%,同时实现起来思路并不复杂.本文介绍的就是基于朴素贝叶斯算法的垃圾邮件识别的实现.如果之前对贝叶斯 ...

  7. 魔与道的反复较量 反垃圾邮件技术

    反垃圾邮件武器库 不同的反垃圾邮件产品采用的技术有所不同,但总体来说,不外乎以下几种技术,其中,针对垃圾邮件的核心技术有贝叶斯智能分析.垃圾邮件评分.垃圾邮件指纹识别. 转载于:https://blo ...

  8. 如何对付“新垃圾邮件”?

    Nick Lewis(CISSP,GCWN))是一名信息安全分析师.他主要负责风险管理项目,并支持该项目的技术PCI法规遵从计划.2002年,Nick获得密歇根州立大学的电信理学硕士学位;2005年, ...

  9. 【独立站运营】营销邮件被判定为垃圾邮件?四个方法教你避开

    电子邮件是当前流行的信息通讯方式,具有低廉.快速的特性.相较于国人依赖使用微信等即时通讯软件,少有查看邮件箱的情况,外国人一般都拥有定时查看邮件的习惯.基于此,独立站卖家经常通过群发邮件的方式,向买家 ...

最新文章

  1. C++编程语言之Lambda函数与表达式
  2. Informix IDS 11系统料理(918查验)认证指南,第 4 部分: 功能调优(5)
  3. 转载:.NET Memory Leak: XmlSerializing your way to a Memory Leak
  4. Spring 事务使用详解
  5. 华为云PB级数据库GaussDB(for Redis)揭秘第七期:高斯Redis与强一致
  6. 浅析Windows计算机中丢失SETUPAPI.dll的问题
  7. 写JQuery插件的基本知识
  8. EXTASP.Net几天使用总结
  9. 计算机网络速度怎么改,如何更改网速到1000Mbps
  10. Ubuntu14.04(LTS)gitHub客户端安装
  11. 【SVN】汉化包 汉化失败 问题解决
  12. 狂神Docker视频学习笔记(基础篇)
  13. 如何在Mac上自定义文件和文件夹图标?看这里
  14. 相机视场角和焦距_相机视场角估计
  15. uni-app设置背景图片,backgroundImage
  16. android espresso跨程序,Android中使用Espresso进行UI测试
  17. 一些融会贯通的知识点----持续更新
  18. 关于AD9361的抗阻塞能力 的实测
  19. solidworks素材_视频剪辑中的视频素材是从哪里找的?
  20. Mat矩阵操作,C++

热门文章

  1. 做购物车系统时利用到得几个存储过程
  2. Windows API封装:LoadLibrary/FreeLibrary
  3. cropbox.js 头像裁剪插件
  4. Java 多态 ——一个案例 彻底搞懂它
  5. vs Obsolete标识符
  6. 日期插件My97DatePicker
  7. 将ERF格式转换成PCAP格式
  8. TCL_事务控制语言
  9. ubuntu 上安装mysql
  10. “中序表达式”转换为“前序表达式”、“后序表达式”