公式:P(Y|X) = P(X|Y)P(Y) / P(X)
即在X事件已经确定发生的情况下,Y发生的概率P(Y|X)
等于P(X|Y)即是Y发生的情况下,X发生的概率,乘以Y发生的P(Y)概率,除以X发生的概率P(X).
所以联合概率P(X,Y) = P(X|Y)P(Y) = P(Y|X)P(X)
P(Y)是先验概率,P(Y|X)是后验概率P(X,Y)则是联合概率
用机器学习的角度来了解
其实就是概率性质的转换,把具有某特征同时属于某类的概率转换成属于某类同时具有某特征的概率
属于有监督学习
条件独立假设:
P(X|C) = P(X1,X2,X3...Xn|C)=P(X1|C)*P(X2|C)*P(X3|C)....P(Xn|C)
比如拿垃圾邮件去举例,把邮件内容分割成一个个的词
然后根据单个词在垃圾邮件的出现率求个概率P(X),然后根据单个词在正常邮件里面的出现率求个概率P(Y),然后P(X)/P(Y)>1即是垃圾邮件
既然是分割成一个个词,就代表Niave完全不考虑词汇的顺序,也即是'我''爱''你'=='你''爱''我'
衍生出来的概率叫词袋
朴素贝叶斯的三种模型
伯努利模型
所有词汇只考虑一次并不考虑重复的问题
多项式模型
考虑具体的词汇出来的次数,出现几次就求多少次方的概率
混合模型
在训练的时候考虑重复出现的概率,在判断的时候不考虑
平滑技术
平滑技术就是为了解决当一个词在垃圾和正常邮件均没出现过,使得概率变为0,计算变的无意义而存在的技术
平滑技术的核心在于增加未出现词的概率,减少已知词的概率,使其整体相加还是1
伯努利模型
P('word'|S) = 出现'word'的垃圾邮箱封数+1/所有的垃圾邮箱的所有词出现的次数(只计算一次)+2
多项式模型
P('word'|S) = 出现'word'在垃圾邮箱的次数总和+1/所有的垃圾邮箱的所有词出现的次数+被统计词表的词语数量
古德图灵平滑
公式r* = (r+1)*E(Nr+1)/E(Nr)
线性插值法
k-z回退
实际工业开发的一点小技巧
对于上面的P(X1|C)*P(X2|C)*P(X3|C)*....P(Xn|C) 取对数会使实际的计算效率要更高
log(P(X1|C))+log(P(X2|C))+log(P(X3|C))+...log(Xn|C) 就是这个计算模式
针对词语的重要性,在上面还可以适当加些系数
朴素贝叶斯的优点
1.简单快速
2.对于多分类问题也同样很有效,复杂度也不会有大程度上升
3.在分布独立这个假设成立的情况下,贝叶斯分类效果比较好,会略胜于逻辑回归,同时我们需要的样本量更少一些
4.对于类别类的输入特征变量,效果好,对于数量值型变量特征,我们是默认它符合正态分布
朴素贝叶斯的缺点
1.朴素贝叶斯处理不了概率为0的情况.所以必须借助平滑技术,其中包括拉普拉斯,古德图灵,线性插值,k-z回归
2.朴素贝叶斯算出的概率比较大小还可以,实际没物理意义
3.朴素贝叶斯要求假设独立前提,现实很难有这种前提,所以一般存在误差
LR和NB的异同点
lR(逻辑回归),是求根据损失函数,最优解求出的值
NB(朴素贝叶斯),则木有损失函数,也不用求什么最优解,根据统计学原理,进行运算,得到的值,划定界限求值
还有NB需要是条件独立假设
LR是判别模型NB是生成模型,这个没太多实际意义,以理论为主
贝叶斯网络
一个简单的贝叶斯网络图
一个正常的贝叶斯网络,在知道一部分的概率和联合概率反推其它未知的概率