分类算法之朴素贝叶斯(NaiveBayes)

我个人认为,在数据挖掘领域,分类算法是最为重要。它根据以往的数据来对新的数据做预测。垃圾邮件判断,潜在用户挖掘等都会用到分类算法。今天把总结朴素贝叶斯算法的学习心得。

naive

#Bayes是谁#
Thomas Bayes,英国数学家。约1701年出生于伦敦,做过神甫。1742年成为英国皇家学会会员。1761年4月7日逝世。贝叶斯在数学方面主要研究概率论。他首先将归纳推理法用于概率论基础理论,并创立了贝叶斯统计理论,对于统计决策函数、统计推断、统计的估算等做出了贡献。

#Bayes定理#
通俗来说就是:****
已知事件B的发生概率P(B)
已知在事件B已经发生的情况下,事件A发生的概率P(A|B)
则可根据Bayes定理,计算事件A发生的条件下,事件B发生的概率P(B|A)。
计算方法为:
P(B|A)=P(A|B)× P(B)/ P(A)

#NaiveBayes分类算法实例#
门诊部一共就诊了6位患者,情况如下:

case

这时,来了第七位患者,一位“打喷嚏的工人”,请推断他得了啥病。

这就是一个分类问题。现状把所有患者分成了三类“感冒”“过敏”“脑震荡”,我们的目的是把“打喷嚏的工人”分到这三类中的一类中。具体做法为:根据Bayes定理,计算这个“打喷嚏的工人”患三种疾病的概率。

P(感冒|打喷嚏&工人)
= P(打喷嚏&工人|感冒)×P(感冒) / P(打喷嚏&工人)
= P(打喷嚏|感冒)× P(工人|感冒)× P(感冒) / P(打喷嚏)× P(工人)
= (2/3 × 1/3 × 1/2)/ (1/2 × 1/3)
= 66.7%

解释:

  • '&'项可以分成两个,是因为“症状”变量和“职业”变量是相互独立的,没什么联系
  • 感冒的有3个,其中打喷嚏的2个,所以P(打喷嚏|感冒)=2/3
  • 感冒的有3个,其中工人1个,所以P(工人|感冒)=1/3
  • 一共六个人,感冒3个,所以P(感冒)=1/2
  • 一共六个人,打喷嚏的3个,所以P(打喷嚏)=1/2
  • 一共六个人,其中工人2个,所以P(工人)=1/3

按照这个方法,计算“打喷嚏的工人”另外两种疾病的概率;

P(过敏|打喷嚏&工人)
= P(打喷嚏&工人|过敏)×P(过敏) / P(打喷嚏&工人)
= P(打喷嚏|过敏)× P(工人|过敏)× P(过敏) / P(打喷嚏)× P(工人)
= (1 × 0 × 1/6)/ (1/2 × 1/3)
= 0%
P(脑震荡|打喷嚏&工人)
= P(打喷嚏&工人|脑震荡)×P(脑震荡) / P(打喷嚏&工人)
= P(打喷嚏|脑震荡)× P(工人|脑震荡)× P(脑震荡) / P(打喷嚏)× P(工人)
= (0 × 1/2 × 1/3)/ (1/2 × 1/3)
= 0%

可见,“打喷嚏的工人”患感冒概率66.7%,初步判断应该是感冒。但是一般的分类器都要根据具体业务设置阈值,对于人命关天的事,最好严格一些,比如95%以上才做出判断,那么这里最好的答案应该是“机器无法判断,建议去让医生看看”。

#补充说明#

  • 算法叫做朴素贝叶斯(NaiveBayes),是因为算法是在太简单了
  • ‘&’能分开两个概率相乘是因为变量的独立性,如果不独立的话,这样计算会有误差
  • 分母项 P(打喷嚏)× P(工人)在每次计算中都一样,可以只互相比较分子计算的结果作出判断
  • 例子中最初的6个病人的数据叫做训练集

#训练集样本较小情况下的概率调整#
P(打喷嚏|过敏)和P(工人|过敏)分别为1,0,实际中不可能是这样的,因为没有什么是一定不发生,也没有什么100%发生。出现这种情况是因为我们的样本太少,如果样本足够多,概率会相对靠谱。
在起步阶段,样本就是很少,为了避免0,1这种极端概率,需要人为做一些数学变换。
比如,对过敏来说,每个症状的初始概率都为50%,当来了一个过敏病人,如果出现打喷嚏,那么P(打喷嚏|过敏)的概率就提升一点点,反之如果不打喷嚏,则P(打喷嚏|过敏)的概率就下降一点点。
这样使得每一个概率都变得在(0,1)之间平滑变化,对其他的变量也这样处理。
在《Programming Collective Intelligence》这本书中给出了这个变换的公式,我套用到过敏来说就是:

P(打喷嚏|过敏)调整 =(1×0.5 + 打喷嚏数 × P(打喷嚏|过敏)) / (1+打喷嚏数)
所以调整后的概率为:
P(打喷嚏|过敏)调整 = (0.5 + 3 ×1 )/(1+3 )=87.5%
P(工人|过敏)调整 = (0.5 + 2 ×0)/ (1+2)=16.7%

所以,在上例中计算第二种疾病的时候,如果用调整后的概率结果如下:

P(过敏|打喷嚏&工人)
= P(打喷嚏&工人|过敏)×P(过敏) / P(打喷嚏&工人)
= P(打喷嚏|过敏)× P(工人|过敏)× P(过敏) / P(打喷嚏)× P(工人)
= (87.5% × 16.7% × 1/6)/ (1/2 × 1/3)

= 14.6%

****#连续变量处理#****
对于上例来说,不论是职业还是症状,都是离散变量,也就是取值数有限,这样都可以通过数个数的方式来计算概率(古典概率模型),但是如果出现连续型变量就不能靠数个数了,比如身高,可以有175cm 176cm 176.1cm 176.11cm,无穷尽……

  1. 处理方式一:离散化
    身高来说,可以就精确到cm,那么基于现实世界从40cm(婴儿)到230cm(姚明)基本就够用了,可以数个数。要么就分段【小于100cm】【100-150cm】【150-180cm】……这样也可以。
  2. 处理方式二:利用变量的分布来计算概率
    一般来说自然界中的大部分变量都是符合正态分布的,正态分布是一个钟型曲线,概率意义是,一次实验取到均值附近概率最大,去到远离均值的值的概率越来越小。那么可以计算样本的均值和标准差,利用Z值【(实际值-均值)/标准差】,查标准正态分布表,查出取到每个样本值的概率。
    当然,如果明确知道变量属于某个其他分布,如泊松分布,那么就直接用分布函数求概率即可。

#数学表达以备装B之需#

NativeBayes
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容