数据挖掘-朴素贝叶斯算法

用途

朴素贝叶斯算法,主要用于对相互独立的属性的类变量的分类预测。(各个属性/特征之间完全没有关系,叫做相互独立,事实上这很难存在,但是这个方法依然比较有效。)

贝叶斯定理

大学的概率论里一般都学过这个贝叶斯定理,简单阐述如下:

设有两个相互独立的随机变量X,Y,则P(X=x,Y=y)是指X变量取x且Y变量取y的概率,P(Y=y|X=x)指的是在X取x的情况下,Y取y的概率,叫做条件概率,根据以上说法,有公式P(X,Y) = P(Y|X)*P(X) = P(X|Y)*P(Y)
变化一下可以得到:P(Y|X) = \frac{P(X|Y)*P(Y)}{P(X)}
其中P(X)就是X发生的概率,Y就是Y发生的概率,由于是相互独立的,可以不考虑其他因素,通常来说,求P(X)需要用到全概率公式

全概率公式

若事件X_1X_2,…构成一个事件且都有正概率,则对任意一个事件Y,有如下公式成立:则有P(Y) = \sum^n_{i=1}{P(X_i)P(Y|X_i)}

先验概率和后验概率

如果X表示特征/属性,Y表示类变量,如果类变量和属性之间的关系不确定,那么X和Y可以视作随机变量,则P(Y|X)为Y的后验概率,P(Y)为Y的先验概率。
以图为例:

图片摘自[https://blog.csdn.net/qiu_zhi_liao/article/details/90671932]

我们需要根据身高、体重、鞋码判断是男是女,则Y就是性别,X就是(身高、体重、鞋码)这一组特征。如果我们要先算是男的概率,则先验概率就是P(Y=男)=4/8=0.5,而后验概率则是我们未来将要输入的一组特征已知的情况下,Y=男的概率(要预测的分类的概率),这样的话,根据贝叶斯定理,我们就可以用P(X|Y)、P(X)、P(Y)来求出P(Y|X),这就是贝叶斯定理在预测中的应用。

朴素贝叶斯

假设Y变量取y值时概率为P(Y=y),X中的各个特征相互独立,则有公式如下:P(X|Y=y) = \prod_{i=1}^d{P(X_i|Y=y)}
其中每个特征集X包含d个特征。
根据公式,对比上面的图来说,如果性别是男的时候,身高是高,体重是重,鞋码为大的概率就等于

性别男时身高为高的概率*性别男时体重为重的概率*性别男时鞋码为大的概率。

有了这个公式,结合之前的贝叶斯公式,就能得到给定一组特征值的情况下, 这组特征属于什么样的类别的概率公式:P(Y|X) = \frac{P(Y)\prod^d_{i=1}P(X_i|Y)}{P(X)}
其中的X代表一组特征,X_i代表一组中的一个。
对于所有的Y来说,P(X)时固定的,因此只要找出使分子P(Y)\prod^d_{i=1}P(X_i|Y)最大的类别就可以判断预测的类别了。

P(X_i|Y)的概率分为两种情况来区别,一种是对分类特征的概率确定,一种是连续特征的概率确定。

接下来借用《数据挖掘导论》上的例子来说明概率确定的方式。

Tid 有房 婚姻状况 年收入 拖欠贷款
1 单身 125K
2 已婚 100K
3 单身 70K
4 已婚 120K
5 离婚 95K
6 已婚 60K
7 离婚 220K
8 单身 85K
9 已婚 75K
10 单身 90K

对分类特征的概率确定

对于分类的特征,可以首先找到训练集中为y值的个数,然后根据不同的特征类型占这些个数中的比例作为分类特征的概率。
例如上表中求不拖欠贷款的情况下,有房的人数就是P(X_{有房}=是|Y=否)=3/7,不拖欠贷款的有7个,其中有房的是3个。以此类推可以求出婚姻状况的条件概率。
年收入是连续特征,需要区分对待。

对连续特征的概率确定

  1. 把每个属性离散化,然后每个值落入哪个离散区间,就用该区间替换值,离散化的方法有:

    • 非监督离散化
      · 等宽
      · 等频率
      · 等深
      · 聚类
    • 监督离散化
      ·基于信息熵
      这样的话,根据离散化区间就可以按照对分类特征的概率确定方式来求条件概率,估计误差取决于离散化的方式和区间的数目,如果每个区间中的数据太少,则做不出可靠的预测,如果区间太少,则预测可能不准确。
  2. 可以假设连续特征符合某种分布,然后使用数据估计分布的参数,一般采用正态分布(高斯分布)来表示连续属性的条件概率分布,该分布有两个参数,均值μ和方差σ^2。对于每个类y_i,特征X_i的条件概率表示为:P(X_i=x_i|Y=y_j)=\frac{{1}}{{\sqrt{2\pi}σ_{ij}}}e^{-\frac{(x_i-μ_{ij})^2}{2σ_{ij}^2}}
    μ_{ij}可以用y_j下所有训练数据关于X_i的样均值来估计,同理σ_{ij}用这些训练数据的标准差来估计。以上面表格为例:μ_{ij} = \frac{125+100+70+···+75}{7}=110
    σ_{ij}^2 = \frac{(125-110)^2 + (100-110)^2 +···+(75-110)^2}{7(6)}=2975
    σ_{ij} = \sqrt{2975} = 54.54
    需要注意的是,总体方差和样本方差的差距,样本方差分母是n-1,总体是n,这就是7(6)的原因。
    另外,这些样本数据都是Y=否的数据,需要注意。

根据上述算法,如果要求没有拖欠贷款情况下,年收入是120K的概率,就是P(收入=120K|Y=否) = \frac{1}{\sqrt{2\pi}*54.54}e^{-\frac{(120-110)^2}{2*2975}} = 0.0072

例子

如果要预测测试记录X=(有房=否,婚姻状况=已婚,年收入=120K)这个样本是否可能拖欠贷款,则需要计算两个概率:P(Y=是|X)P(Y=否|X)
则有:P(Y=否|X) = \frac{{P(Y=否)P(X|Y=否)}}{P(X)}
由于P(X)是不变的(对于Y=是和Y=否),则只考虑上面的分子即可,那么抛开P(X)不看,则有:
P(有房=否|Y=否)*P(婚姻状况=已婚|Y=否)*P(年收入=120K|Y=否)
P(Y=否|X)=4/7 * 4/7 * 0.0072 * 7/10 * \alpha = 0.0024\alpha
其中7/10就是P(Y=否),α是P(X)
同理可得P(Y=是|X) = 1 * 0 * 1.2e-1 = 0.
这样一比较,那么分类就是否。

朴素贝叶斯的m估计

看这个例子中,如果有一个特征的条件概率是0,那么整体的概率就是0,从而后验概率也一定是0,那么如果训练集样本太少,这种方法就不是很准确了。
如果当训练集样本个数比特征还少的时候,就无法分类某些测试集了,因此引入m估计(m-estimate)来估计条件概率,公式如下:
P(x_i|y_j) = \frac{n_c + mp}{n + m}
其中,n是类y_j中的样本总数,n_c是类y_j中取x_i的样本数,m是称为等价样本大小的参数,p是用户指定的参数,p可以看作在类y_j中观察特征值x_i的先验概率。等价样本大小决定先验概率p和观测概率n_c/n之间的平衡。

引入m估计的根本原因是样本数量过小。所以为了避免此问题,最好的方法是等效的扩大样本的数量,即在为观察样本添加m个等效的样本,所以要在该类别中增加的等效的类别的数量就是等效样本数m乘以先验估计p。

在之前的例子中,设m=3,p=1/3(m可以设置为特征数量,p则是倒数)。则:P(婚姻状况=已婚|Y=是) = (0+3*1/3)/(3+3) = 1/6
从而可以重新计算P(Y=否|X) = 0.0026,P(Y=是|X) = 1.3e^{-10}。从而解决了某个条件概率为0的问题。

朴素贝叶斯算法的特征

面对相互独立的特征比较适用,如果有相关的特征,则会降低其性能。

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

推荐阅读更多精彩内容

  • 在所有的机器学习分类算法中,朴素贝叶斯和其他绝大多数的分类算法都不同。对于大多数的分类算法,比如决策树,KNN,逻...
    云时之间阅读 1,885评论 6 24
  • 朴素贝叶斯 在机器学习中,朴素贝叶斯分类器是一系列以假设特征之间强(朴素)独立下运用贝叶斯定理为基础的简单概率分类...
    七八音阅读 20,498评论 0 21
  • 忘光了概率统计的知识还想学朴素贝叶斯算法?这一篇就是为你准备的。虽然如此,作为初学者,别指望 5 分钟就能完全理解...
    kamidox阅读 2,658评论 4 7
  • 各位小伙伴们大家好,前些日子,我看了一些关于贝叶斯方法的文章,其中以今天这一篇文章觉得最好,不仅讲的简单通俗易懂并...
    云时之间阅读 5,625评论 4 72
  • 开场白以后,拿起音频分离器,连接上电视与功放,另一边链接DVD,放入速8,把音频分离设定为源码输出,然后把声道切为...
    山乡巨变阅读 142评论 0 0