【机器学习实战】03-朴素贝叶斯

【博客的主要内容主要是自己的学习笔记,并结合个人的理解,供各位在学习过程中参考,若有疑问,欢迎提出;若有侵权,请告知博主删除,原创文章转载还请注明出处。】

机器学习主要任务是分类和回归。
之前通过《机器学习实战》学习了kNN和决策树两种分类算法,本次学习朴素贝叶斯。学习内容不局限与书本内容,结合网上文章进行学习。

1. 贝叶斯(Bayes)定理介绍

贝叶斯定理是由英国数学家贝叶斯在1763年首次提出的定理,它用来描述两个条件概率之间的关系。

在实际情况中,事件A和事件B是相互独立事件。可获得事件A的数据资料,希望通过对事件A的有关状态及概率分析推导出事件B的状态及发生概率。这里用贝叶斯定理,其数学表示:

Paste_Image.png

2. 朴素贝叶斯分类(Naive Bayes Classifier)

朴素贝叶斯分类(Naive Bayes Classifier 或NBC)是基于贝叶斯定理与特征条件独立假设的分类方法。

2.1 分类的定义

1. 分类: 是将一个未知样本分到几个预先已知类的过程。

2. 数学角度对分类进行定义:
: 已知集合:$C={y_1,y_2,...,y_n}$ 和 $I={x_1,x_2,...,x_m}$,确定映射规则y=f(x),使得任意$x_i$属于 $I$ 有且仅有一个 $y_j$ 属于C使得$y_j= f(x_i)$成立。
C 称为类别集合,每个元素即为类别;I 称为项集合;每个元素是一个待分类项,f 叫做分类器。分类算法主要任务即构造分类器 f

3. 贝叶斯分类器
: 以贝叶斯定理为基础的一类分类算法,它是一类利用概率统计知识进行分类的算法。
常见的算法:朴素贝叶斯算法、TAN算法(树增强型朴树贝叶斯算法)。

2.2 条件概率(conditional probability)

设A,B是两个事件,且A不是不可能事件,则称

Paste_Image.png

为在事件A发生的条件下,事件B发生的条件概率。一般地,$P(B|A) ≠ P(B)$,且它满足以下三条件:
(1)非负性;(2)规范性;(3)可列可加性。

2.3 贝叶斯定理描述

如果已知$P(A|B)$,要求得$P(B|A)$,那么可以得到:


Paste_Image.png

2.4 贝叶斯定理的含义

贝叶斯分类原来是通过某对象的先验概率,利用贝叶斯公式计算出其后后验概率,即该对象属于某一类的概率,选在具有最大后验概率的类作为该对象所属的类。

把$P(A)$称为“先验概率(Prior probability)”,即在B事件发生之前,对A事件概率的一个判断;

$P(A|B)$称为“后验概率(Posterior probability)”,即在B事件发生之后, 对A事件概率的重新评估;

可能性函数(Likely hood)” $\frac {P(B|A)} {P(B)} $ 一个调整因子,使得预估概率更接近真实概率。

  • 如果“可能函数” > 1 , 意味着“先验概率”被增强,事件A的发生的可能性变大;
  • 如果“可能性函数” = 1,则事件无助于事件A的可能性;
  • 如果“可能性函数” < 1,意味着“先验概率”被消弱,事件A的可能性变小。

3. 朴素贝叶斯分类推导

3.1 分类推导

朴素贝叶斯分类是基于贝叶斯定理的一种分类算法。根据数据特性分析由“离散型数据”和“连续性数据”,在先介绍两个基本概念:

1.离散型随机变量
如果一个随机变量X所有可能取到的值是有限个或者是可列无限多个,并且以确定的概率取这些不同的值,成为 离散型随机变量 例如X=1,2,3,……n

2.连续性随机变量
如果对于随机变量X的分布函数F(X)存在非负函数f(x)使得对于任意实数x有 $F(x)=\int f(t)dt$,积分下限是负无穷,上限是x,则称X为 连续性随机变量

3.1.1 离散型随机数据推导

假设:现有训练数据集(X,Y)
: 1. 每个样本 $x$ 都包括 $n$ 维特征,$X={x_1,x_2,...,x_n}$
: 2. 类标记集合含有 $k$ 中类别,$ Y={y_1,y_2,...,y_k}$
现有新样本 $x$,如何判断其所属类别?

分析
使用朴素贝叶斯算法进行分类,其主旨:选择具有最高概率的决策.
计算新样本x在类标记结合中的概率:$P(y_1|x),P(y_2|x),...,P(y_k|x)$,取最大概率 $argmax_{y_k} P(y_k|x)$

推导
1.朴素贝叶斯公式:

Paste_Image.png

2.根据 全概率公式 ,朴素贝叶斯公式演变为:

Paste_Image.png

> [全概率公式]
如果事件$B_1、B_2、B_3…B_n $构成一个完备事件组,即它们两两互不相容,其和为全集;并且$P(B_i) > 0 $,则对任一事件A有:
$$P(A)=P(A|B_1)P(B_1) + P(A|B_2)P(B_2) + ... + P(A|B_n)P(B_n) = P(AB_1)+P(AB_2)+...+P(AB_n))$$.
其中$ A $与 $B_n$ 的关系为交,即:

Paste_Image.png

3.从推导公式可知,需要计算 $P(y_k)$ 和 $P(x|y_k)$。
$P(y_k)$ 通过数据计算可以获取;问题在于 $P(x|y_k) = P(x_1,x_2,...,x_n|y_k)$ 值?

若第i维特征 $x_i$ 可取值的个数有 $s_i$ 个值,类别可取个数为 $k$ 个,结果将以几何级数增加,其参数个数为 $k \prod_{i=1} ^n {s_i} $

4.现在对数据事件做“独立性”假设,即假设$x_1,x_2,...,x_n 是相互独立$,此时公式:

Paste_Image.png

由统计学知,如果每个特征需要N个样本,那么对于10个特征将需要N10个样本,对于包含1000个特征的数据将需要N1000个样本。
如果特征之间相互独立,那么样本从N^1000减少到1000*N.

5.最终朴素贝叶斯公式:

Paste_Image.png

3.1.2 连续型随机数据推导

若数据特征属性为连续型值时,该值服从高斯分布(即正态分布)。数学公式:

Paste_Image.png

3.2 常用模型:高斯、多项式、伯努利

3.2.1 多项式

在特征为离散情况下,通过多项式模型对公式进行平滑处理。
多项式模型在计算先验概率$P(y_k)$ 和 条件概率 $P(x_i|y_k)$时:
$P(y_{k})=\frac{N_{y_{k}}+\alpha}{N+k\alpha}$

N是总的样本个数,k是总的类别个数,$N_{yk}$是类别为$y_k$的样本个数,$\alpha$是平滑值。

$P(x_{i}|y_{k})=\frac{N_{y_{k},x_{i}}+\alpha}{N_{y_{k}}+n\alpha}$

$N_{yk}$是类别为yk的样本个数,n是特征的维数,$N_{y_k,x_i}$是类别为$y_k$的样本中,第i维特征的值是$x_i$的样本个数,$\alpha$是平滑值。

当$\alpha = 1$时,称作Laplace平滑;
当$0< \alpha < 1$时,称作Lidstone平滑;
当$\alpha = 0$ 时,不做平滑。

如果不做平滑,当某一维特征的值$x_i$没在训练样本中出现过时,会导致$P(x_i|y_k) = 0$,从而导致后验概率为0.

3.2.2 高斯

当特征为连续变量时,每一维特征都服从于高斯分布(即正态分布)。示例:性别分类

3.2.3 伯努利

伯努利模型适用于离散特征的情况,伯努利模型中每个特征的取值只能是1和0.

伯努利模型中,条件概率$P(x_i|y_k)$的计算方式是:
当特征值$x_i$ = 1时,$P(x_i|y_k)=P({x_i}=1|y_k)$;
当特征值$x_i$ = 0时,$P(x_i|y_k)=1−P({x_i}=1|y_k)$;

3.3 案例分析

3.3.1 病人分析

1、问题:已收集6名病人职业、症状及诊断数据。现有一名打喷嚏建筑工人入院,判断其感冒概率?

![Uploading Paste_Image_232771.png . . .]

2、计算:
a. 依据朴素贝叶斯公式:$$P(A|B) = \frac {P(B|A)P(A)}{P(B)}$$
可得:$P(感冒|打喷嚏建筑工人) = \frac {P(打喷嚏建筑工人| 感冒) * P(感冒)} {P(打喷嚏*建筑工人)} $

b. 假定“打喷嚏”和“建筑工人”两个特征是相互对立,则公式可以变成:

$P(感冒|打喷嚏*建筑工人) = \frac {P(打喷嚏|感冒) * P(建筑工人|感冒) * P(感冒)} {P(打喷嚏) * P(建筑工人)}$

c. 计算可得:

$P(感冒|打喷嚏*建筑工人) = \frac {0.66 * 0.33 * 0.5} {0.5 * 0.33} = 0.66 $

3.3.2 账号分类

1、描述:
现有SNS社区需对现有账户进行运营及监管,但其大量账户中存在"真实账户"和"虚假账户"两类。为提升运维效率及监管需对现有账户进行过滤分类。

2、分析过程:
假设
已有类别:A = {a0 表示真实账号,a1表示虚假账号}
待分特征属性: B = {b1,b2,b3}

根据贝叶斯公式: $ P(A|B) = \frac {P(B|A)P(A)}{P(B)}$
推导过程
1、已分类集合:A={a0,a1} ;
待分类特征集合:B={b1,b2,b3}

2、依据朴素贝叶斯准则,则计算(在B条件下,A发生的概率):
$P(a_1|B),P(a_2|B)$取$P(a_i|B) = max{P(a_1|B),P(a_2|B)}$

3、根据贝叶斯公式,将计算转换为(在A条件下,B事件的概率):
$P(B|a_i)P(a_i) = P(a_i)\prod_{i=1} ^ {n} {P(B|a_i)}$

在此详细推算过程
a、特征属性及划分
根据账号信息划分出“真实账号”和“虚假账号”的特征属性。
b1=日志数量/注册天数; b2=好友数量/注册天数; b3=是否使用真实头像

$b1={b <=0.05,0.05<b<0.2,b>0.2}$
$b2={b <=0.1,0.1<b<0.8,b>=0.8}$
$b3={b=0,b=1} (b=0非真实头像,1真实头像)$

b、获取1万条数据作为训练样本
真实账号:8900条;虚假账号:1100条

c、计算训练样本中每个类别的频率
$P(a_0) = \frac{8900}{10000} = 0.89$
$P(a_1) = \frac{1100}{10000} = 0.11$

d、计算每个类别条件下各特征属性划分的频率(在A条件下,B发生的概率)

$ P(b_1<=0.05 | a_0) = 0.3 $
$ P(0.05<b1<0.2|a0) = 0.5 $
$P(b1>=0.2|a0)=0.2$
$P(b1<=0.05|a1) = 0.8$
$P(0.05<b1<0.2|a1) = 0.1$
$P(b1>=0.2|a1)= 0.1$

$P(b2<=0.1|a0) = 0.1$
$P(0.1<b2<0.8|a0) = 0.7$
$P(b2>=0.8|a0)=0.2$
$P(b2<=0.1|a1) = 0.7$
$P(0.1<b2<0.8|a1) = 0.2$
$P(b2>=0.8|a1)=0.1$

$P(b3=0 | a0)=0.2$
$P(b3=1 |a0)=0.8$
$P(b3=0|a1)=0.9$
$P(b3=1|a1)=0.1$

e、使用分类器进行鉴别
现在鉴别一个账号,该账号b3=0,b2=0.2,b1=0.1,即:
$P(a0)P(x|a0) = P(a0) P(0.05<b1<0.2|a0) P(0.1<b2<0.8|a0) P(b3|a0) $
$= 0.89 * 0.5 * 0.7 * 0.2 = 0.0623$

$P(a1)P(x|a1) = P(a1) P(0.05<b1<0.2|a1) P(0.1<b2<0.8|a1) P(b3|a1) $
$= 0.11 * 0.1 * 0.2 * 0.9 = 0.00198$

由此可以看出该账号更趋向于真实账号。

3.3.3 性别分类

人类身体特征统计数据:

Paste_Image.png

已知某人身高6英尺、体重130磅、脚掌8英寸,问是男是女?

  1. 数据描述
    类别:{男性,女性}
    特征属性:{身高,体重,脚掌}

依据朴素贝叶斯推导,其最终需计算:

Paste_Image.png

由于身高、体重、脚掌都是连续变量,无法采用离散变量统计计算。在此假设身高、体重、脚掌都是正态分布,通过样本计算出均值和方差,从而获得正太分布的密度函数。

假设,男性升高的均值为5.855、方差0.035的正态分布,由此升高6英尺男性概率:

Paste_Image.png
  1. 计算分类
Paste_Image.png

可以得知,该人更倾向为女性。

4. 【参考】

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

推荐阅读更多精彩内容