ML算法与代码实现——朴素贝叶斯

联合概率:包含多个条件,且所有条件同时成立的概率

记作:P(A,B) 

条件概率:就是事件A在另外一个事件B已经发生条件下的发生概率

记作:P(A|B)

贝叶斯定理

贝叶斯公式的理解:

百度百科吸毒者检测例子:

贝叶斯定理在检测吸毒者时很有用。假设一个常规的检测结果的敏感度与可靠度均为99%,也就是说,当被检者吸毒时,每次检测呈阳性(+)的概率为99%。而被检者不吸毒时,每次检测呈阴性(-)的概率为99%。从检测结果的概率来看,检测结果是比较准确的,但是贝叶斯定理却可以揭示一个潜在的问题。假设某公司将对其全体雇员进行一次鸦片吸食情况的检测,已知0.5%的雇员吸毒。我们想知道,每位医学检测呈阳性的雇员吸毒的概率有多高?令“D”为雇员吸毒事件,“N”为雇员不吸毒事件,“+”为检测呈阳性事件。

对于上述例子,

P(D):雇员吸毒的概率,0.5%

P(N):雇员不吸毒概率,1-P(D)=99.5%

P(+|D):吸毒的雇员检测为阳性(确认吸毒)的概率,99%

P(+|N):不吸毒的雇员检测为阳性(误认为吸毒)的概率,1%

P(+):雇员检测出阳性的概率,不考虑其他因素。P(+)为吸毒的雇员检测为阳性(确认吸毒)的概率(0.5% x 99% = 0.00495)+ 不吸毒的雇员检测为阳性(误认为吸毒)的概率(99.5% x 1% = 0.00995) = 0.0149,数学公式如下:

P(D|+):被检测为阳性的雇员确实吸毒的概率

在计算这个概率前,我们知道雇员吸毒且被检测为阳性的概率为:P(+,D)=P(D)P(+|D)=0.495%

同时:雇员吸毒且被检测为阳性的概率=雇员检测出阳性的概率×被检测为阳性的雇员确实吸毒的概率,即:

P(+,D)=P(+)P(D|+)=0.495% →P(D|+)=0.495/0.0149=33.22%

可以发现尽管检测可靠性达到了99%,但这样的检测结果让人堪忧,其中有\frac{2}{3} 的人都被错误的判断为吸毒了。

这时如果我们让被检测为阳性的雇员再次检测,此次检测我们将使用第一次检测为阳性的雇员,那么之前的P(D)要改为刚计算出的33.22%,

P(+,D)=P(D)P(+|D)=0.328878

P(+)=0.3322\times 0.99+(1-0.3322)\times 0.01=0.329

P(D|+) = P(+,D)/P(+) = 98.01%

此时可靠性高多了,如果让此人再次复检,再重复使用贝叶斯定理计算,会得到此人吸毒的概率为99.98%(99.9794951%)已经超过了检测的可靠度。

在这个例子的情况下,计算条件概率(雇员在检测为阳性事件发生的前提下雇员吸毒事件的概率)的公式为:

           P(D|+) =\frac{ P(+,D)}{ P(+)}=\frac{P(+|D)P(D)}{(P(+|D)P(D)+P(+|N)P(N))}

即贝叶斯公式。


朴素贝叶斯

上面我们介绍了贝叶斯公式,接下来我们讨论何为朴素贝叶斯。

现在我们来关注另一个流传于网络的案例(判断女神对你的喜欢情况):

上表为7个男性的职业、体型、是否被女神喜欢的样本。

根据上表中的信息,小明体型超重的产品经理,他现在比较关注自己是否被女神喜欢。即P(喜欢|产品,超重)=?

∵贝叶斯公式

P(喜欢|产品,超重)=\frac{P(产品,超重|喜欢)P(喜欢)}{P(产品,超重)}

对于上述7个样本中,我们发现由于样本数量太小,并不存在即使产品又超重的样本,即P(产品,超重)=0、P(产品,超重|喜欢)=0,这导致了无法计算结果。但是在现实生活中这样的人肯定存在,这两个概率都不可能为0。

这时侯小明又想知道被女神喜欢的概率,又不想去收集更多的样本。通常这种又要马儿跑又要马儿不吃草的做法是不对的,但是朴素贝叶斯可以帮助小明解决这个问题。

朴素贝叶斯,简单理解,就是假定了特征与特征之间相互独立的贝叶斯公式

也就是说,朴素贝叶斯,之所以朴素,就在于假定了特征与特征相互独立。

因此按照朴素贝叶斯的方式,我们认为体型与职业这两个特征之间相互独立

P(产品, 超重) = P(产品) * P(超重) =2/7*3/7=6/49

P(产品, 超重|喜欢) = P(产品|喜欢) * P(超重|喜欢) =1/2*1/4=1/8

P(喜欢|产品, 超重) = P(产品, 超重|喜欢)P(喜欢)/P(产品, 超重) =7/12

基于7个样本的信息,我们就可以告诉小明,你被女神喜欢的概率为58.33%。



朴素贝叶斯 的新闻分类

读入sklearn的20newsgroups数据,这里已经下载好了,使用data_home指定数据路径:

train_data = fetch_20newsgroups(subset='train',data_home='jupyter_data')

test_data = fetch_20newsgroups(subset='test',data_home='jupyter_data')

特征处理,将文本转为TF-IDF向量,文档中的每个单词出现的次数在文档的总字数的比例:

vectorizer = TfidfVectorizer()

vectors_train = vectorizer.fit_transform( train_data.data) vectors_test=vectorizer.transform( test_data.data)

训练模型,平滑参数设置0.1:

model=MultinomialNB(alpha=0.1)                                                                      model.fit( vectors_train,newsgroups_train.target)

预测和评估:

pred= model.predict(vectors_test) print(f1_score(newsgroups_test.target,pred,average='macro')) print(accuracy_score(newsgroups_test.target,pred))

结果:

0.81388938732554                                 0.8263409453000531


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

推荐阅读更多精彩内容

  • 贝叶斯定理是关于随机事件A和B的条件概率(或边缘概率)的一则定理。其中P(A|B)是在B发生的情况下A发生的可能性...
    马崇阅读 1,818评论 0 5
  • 【2017.6.27】 【台版序言 幕布】 不会保存导图形式的。后来发现是因为我用的免费软件。用用幕布看看好不好再...
    燕传熙阅读 531评论 0 1
  • 条件概率 先要从条件概率讲起,条件概率,一般记作P(A|B),意思是当B事件发生时,A事件发生的概率。其定义为 其...
    城市中迷途小书童阅读 435评论 0 1
  • 条件概率 先要从条件概率讲起,条件概率,一般记作P(A|B),意思是当B事件发生时,A事件发生的概率。其定义为其中...
    X猪阅读 2,519评论 1 5
  • 介绍 贝叶斯法则 贝叶斯定理是用来做什么的?简单说,概率预测:某个条件下,一件事发生的概率是多大? wiki 把为...
    andyJi阅读 1,970评论 1 7