朴素贝叶斯法
2016-07-25 19:51
288 查看
朴素贝叶斯基本概念
朴素贝叶斯法基于贝叶斯定理和特征条件独立假设对于训练数据集合先学习输入和输出的联合概率分布
对于预测输入,根据贝叶斯定理求出后验概率最大的输出y
具体的需要先学习先验概率分布P(y=ck)和条件概率分布p(X=x|Y=ck)
条件概率分布的参数数量为指数量级,直接估计是不可行的
条件独立性假设:
P(X=x|Y=ck)=∏j=1nP(X(j)=x(j)|Y=ck)
朴素贝叶斯法属于生成模型,要注意条件独立性假设的适用性
后验概率:
P(Y=ck|X=x)=P(Y=ck)∏jP(X(j)=x(j)|Y=ck)∑kP(Y=ck)∏jP(X(J)=x(j)|Y=xk)
策略:
y=f(x)=argmaxckP(Y=ck|X=x)
后验概率最大化等价于期望风险最小化,可使用0-1损失函数进行验证
朴素贝叶斯法的参数估计
极大似然估计
先验概率的极大似然估计:P(Y=ck)=∑Ni=1I(yi=ck)N
条件概率:
P(X(j)=aji|Y=ck)=∑Ni=1I(x(j)i=aji,yi=ck)∑Ni=1I(yi=ck)
这里假设了x(j)的取值是离散的,如果是连续变化的特征要如何处理?划分定义域连续变量离散化?
公式推导(截图来源https://www.zhihu.com/question/33959624)
条件概率类比可推
贝叶斯估计
极大似然估计会出现概率值为0的情况,也就是模型认为对应的事件永远不会发生,这是不合理的(过度拟合),采用贝叶斯估计来解决这个问题条件概率的贝叶斯估计:
P(X(j)=ajl|Y=ck)=∑Ni=1I(x(j)i=ajl,yi=ck)+λ∑Ni=1I(yi=ck)+Sjλ
这里Sj是第j个特征的所有取值可能数
Y为由输出哑变量构成的列向量, Θ中元素为Y中对应哑变量为1的概率
P(Y|Θ)=ΘTY
由概率的性质∑YP(Y|Θ)=∑k=1kθk=1
对于样本D={Y1,Y2,…,YN}
P(D|Θ)=∏n=1NΘTYn=∏k=1KθmKk, mk为对应结果出现次数
Mult(m1,m2,…,mK|Θ,N)=(Nm1,m2,…,mK)∏k=1Kθmkk
多项式分布将作为贝叶斯估计中的似然函数
贝叶斯估计中的先验分布选取狄利克雷分布
Dir(Θ|α)=Γ(α0)Γ(α1)…Γ(αK)∏k=1Kθαk−1k, 其中α0=∑k=1Kαk
后验分布
P(Θ|D,α)=Dir(Θ|α+m)=Γ(α0+N)Γ(α1+m1)…Γ(αK+mK)∏k=1Kθαk+mk−1k, m=(m1,m2,…,mK)T
加上拉格朗日乘子, 求极大似然
l(θ,λ)=∑k=1Kmklogθk+∑k=1K(αk−1)logθk+λ(1−∑k=1Kθk), 这里略掉了常数项
∂l∂λ=1−∑k=1Kθk=0
∂l∂θk=mk+αk−1θk−λ=0
得到
λ=N+α0−K
θk=mk+αk−1N+α0−K
所以李航老师的《统计学习方法》中所说的拉普拉斯平滑相当于取αk=2
条件密度的贝叶斯估计同理可推
参考
Machine Learning - A probabilistic perspective, Sections 2.5.4 (pgs 47-49) and 3.4, (pgs 78-82)《统计学习方法》第四章 朴素贝叶斯法
相关文章推荐
- 用Python从零实现贝叶斯分类器的机器学习的教程
- My Machine Learning
- 机器学习---学习首页 3ff0
- Spark机器学习(一) -- Machine Learning Library (MLlib)
- 反向传播(Backpropagation)算法的数学原理
- 关于SVM的那点破事
- 也谈 机器学习到底有没有用 ?
- #ML-SDN
- TensorFlow人工智能引擎入门教程之九 RNN/LSTM循环神经网络长短期记忆网络使用
- TensorFlow人工智能引擎入门教程之十 最强网络 RSNN深度残差网络 平均准确率96-99%
- TensorFlow人工智能引擎入门教程所有目录
- Tensorflow 杂记
- 如何用70行代码实现深度神经网络算法
- 量子计算机编程原理简介 和 机器学习
- 近200篇机器学习&深度学习资料分享(含各种文档,视频,源码等)
- 已经证实提高机器学习模型准确率的八大方法
- 初识机器学习算法有哪些?
- 机器学习相关的库和工具
- 10个关于人工智能和机器学习的有趣开源项目
- 机器学习实践中应避免的7种常见错误