本章主要介绍了分类算法里面的一种最基本的分类器:朴素贝叶斯算法(NB),算法性能正如英文缩写的一样,很NB,尤其在垃圾邮件检测领域,关于贝叶斯的网上资料也很多,这里推荐那篇刘未鹏写的http://mindhacks.cn/2008/09/21/the-magical-bayesian-method/,作者深入浅出的概述了贝叶斯背后的思想跟应用领域,关于其理论方面可以参考斯坦福大学NG的machine learning cs299的讲义,关于代码实现可以参考一些开源的包或者自己动手写(之前,闲来无事写了一个基于MRjob的MapReduce版本),关于成熟开源工具包可以参考scikit,orange,weka,mahout,tm等。

言归正传,本章是结合R语言在垃圾邮件检测上的应用,整章大部分篇幅在特征提取那块,如何提取邮件正文,并结合R的tm(text mining)工具包,抽取特征,计算各种先验概率,最后通过贝叶斯法则导出P(y|x)的条件概率,尽管现实很多数据并不满足该算法所要求的特征是相互独立的硬性条件,但这不妨碍NB的NB性能。

最后看一下书中给出的2个结果

 表1

邮件类型 分类正常邮件的比例 分类垃圾邮件的比例
易识别正常邮件 0.78 0.22
不易识别正常邮件 0.73 0.27
垃圾邮件 0.15 0.85

表2

邮件类型 分类正常邮件的比例 分类垃圾邮件的比例
易识别正常邮件 0.90 0.10
不易识别正常邮件 0.82 0.18
垃圾邮件 0.18 0.82

表1的结果是假定类别先验概率比例是 垃圾邮件/正常邮件=0.5/0.5,而表2是 垃圾邮件/正常邮件=0.2/0.8。

可以看出表2的误判率低于表1,但是漏判率也要高于表1,这存在一个权衡,到底关注误判率的低还是漏判率的低,或者二者的折中,这让我想起了之前做的一个关于游戏用户流失预警项目,当时我一个劲提高识别率而忽略了误判率,其实这会对误判的那些正常用户造成很大的骚扰,所以做项目还是要紧密结合业务场景。在垃圾邮件这个场景下,误判率高的意味着会更可能的把正常邮件当做垃圾邮件而删除,这会影响用户体验,漏判率高意味着识别算法的性能低下,类似的矛盾很多,如机器学习里面的bais/variance,计算机算法里面的时间复杂度/空间复杂度等。

在垃圾邮件这个场景下,误判率比漏判率可能更为重要一点,如果一封对用户很重要的邮件被系统判定spam的话,那么给用户带来的体验伤害比一封垃圾邮件带来的骚扰更深刻。当然现在的邮箱系统功能丰富,加入了各种其他的非邮件正文的特征,比如发件人的IP地址等等,识别率已经达到了99%+了,也添加了跟用户的交互功能,可以让用户标示哪些是垃圾邮件,定制一个个性化邮件过滤系统。

转载于:https://www.cnblogs.com/kobedeshow/p/3335026.html

machine learning for hacker记录(3) 贝叶斯分类器相关推荐

  1. machine learning for hacker记录(4) 智能邮箱(排序学习推荐系统)

    本章是上一章邮件过滤技术的延伸,上一章的内容主要是过滤掉垃圾邮件,而这里要讲的是对那些正常的邮件是否可以加入个性化元素,由于每个用户关心的主题并非一样(有人喜欢技术类型的邮件或者购物促销方便的内容邮件 ...

  2. 机器学习之用Python从零实现贝叶斯分类器

    机器学习之用Python从零实现贝叶斯分类器 2015/02/06 · 系列教程 · 13 评论 · 机器学习 分享到:27 本文由 伯乐在线 - Halal 翻译,toolate 校稿.未经许可,禁 ...

  3. python朴素贝叶斯的文本分类_自给自足,完全手写一个朴素贝叶斯分类器,完成文本分类...

    Part 1: 本文解决的问题: 我在有这样的一个数据集,里面存放了人们对近期播放电影的评价,当然评价也就分成两部分,好评和差评.我们想利用这些数据训练一个模型,然后可以自动的对影评做出判断,到底是好 ...

  4. 朴素贝叶斯分类器NBC

    朴素贝叶斯分类器NBC 朴素贝叶斯算法是统计学的一种分类方法,利用概率统计知识进行分类.朴素贝叶斯一贝叶斯定理为基础,故统称为贝叶斯分类. ##贝叶斯流派 在提出贝叶斯方法之前,人们认为一件事发生的概 ...

  5. 基础算法-朴素贝叶斯分类器

    一.算法简介 1.1 背景 监督学习分为生成模型 (generative model) 与判别模型 (discriminative model),贝叶斯方法正是生成模型的代表 (还有隐马尔科夫模型). ...

  6. 机器学习算法 - 朴素贝叶斯分类器

    ​ 一.算法简介 1.1 背景 监督学习分为生成模型 (generative model) 与判别模型 (discriminative model) 判别模型:SVM, LR, KNN, NN, CR ...

  7. 【贝叶斯分类2】朴素贝叶斯分类器

    文章目录 1. 贝叶斯决策论回顾 1.1 分类原理 1.2 贝叶斯分类器 1.3 P(c|x) 1.4 计算公式 1.5 极大似然估计 2. 朴素贝叶斯分类器学习笔记 2.1 引言 2.2 知识卡片 ...

  8. 第九课.朴素贝叶斯分类器

    目录 朴素贝叶斯算法原理 朴素贝叶斯参数估计 极大似然估计 贝叶斯估计 朴素贝叶斯算法流程 实验:Numpy实现朴素贝叶斯分类器 朴素贝叶斯算法原理 若P(X)P(X)P(X)表示事件XXX发生的概率 ...

  9. 机器学习-贝叶斯分类器

    https://www.toutiao.com/a6684876999611122187/ 2019-04-28 17:36:54 目录: 1.贝叶斯分类器的基础 2.朴素贝叶斯分类器 3.朴素贝叶斯 ...

最新文章

  1. lighttpd+PHP上传文件
  2. C语言 | 基于51单片机实现MPU6050的卡尔曼滤波算法(代码类2)
  3. Alpha冲刺博客集
  4. python找不到指定的文件夹里_Python环球网在Unix中的指定文件路径中找不到*.txt
  5. 【转】Windows系统中ckplayer视频边下边放,视频转码mp4及last atom in file was not a moov atom问题...
  6. Java—Map集合详解(HashMap/Hashtable/LinkedHashMap/Properties/TreeMap/WeakHashMap/IdentityHashMap/EnumMap)
  7. 养老金上涨后,退休老人每个月6500元的养老金,属于什么水平?
  8. 全频音箱与分频音箱的区别
  9. 用JAVA FX制作3D魔方游戏
  10. 让Node.js在Azure上运行-3
  11. php二维数组按照键值排序的方法
  12. 尚硅谷kubernates学习笔记 1
  13. 《乔布斯传.神一样的传奇》读后感
  14. JVM垃圾收集算法及垃圾收集器
  15. 从学生到职场,这位百万爬虫博主都经历了什么?
  16. 我的世界服务端java路径_我的世界服务端java路径咋样设置?
  17. 可以指定列fillna吗_京东e卡可以购买指定的京东自营商品?是真的吗
  18. 让连续的英文或数字自动换行
  19. java毕业设计高校学习社区mybatis+源码+调试部署+系统+数据库+lw
  20. MQTT 通俗易懂讲解

热门文章

  1. Java笔记-JdbcTemplate批量执行insert及update
  2. Java笔记-使用RabbitMQ的Java接口实现topic(主题模式)
  3. html写界面,C++|Qt后台处理业务(后台登录例子JavaScript给Qt提供数据)
  4. C++\Python\Qt工作笔记-读取txt文件查找某行是否包含keyWord
  5. r语言c5.0决策树算法参数,决策树算法CART、C5.0的R语言实现——(三)
  6. 要不要选 qt tool_小户型儿童房要不要做高低床?优劣都告诉你,自己选
  7. c# sha1签名 微信_C#微信公众号JS接口签名算法
  8. asf linux教程,ASF V3.0 windows/linux含树莓派部署流程
  9. java设置等待锁的时间_java的锁池和等待池
  10. python判断回文数_Python实现判断一个整数是否为回文数算法示例