朴素朴素贝叶斯
2015-06-25 22:09
253 查看
理论基础:贝叶斯定理和条件独立性假设
一、优缺点
优点:实现简单,学习预测效率比较高
缺点:准确率可能并不是非常高
二、原理性的东西
1、朴素贝叶斯方法实际上是学习先验概率分布和条件概率分布,通过先验概率分布和条件概率分布实际上就能确定联合概率分布。计算公式如下。
$P(X,Y)=P(X|Y)*P(Y)$ ———— (1)
根据贝叶斯定理,我们知道
$P(Y_{i}|X)=\frac{P(X,Y_{i})}{\sum_{k=1}^{N}P(X,Y_{k})}$ ————(2)
根据公式(1),公式(2)可以转化为,
$P(Y_{i}|X)=\frac{P(Y_{i})*P(X|Y_{i})}{\sum_{k=1}^{N}P(Y_{k}*P(X|Y_{k}))}$ ————(3)
实际上这就是贝叶斯方法,同时这也是进行预测的过程
那么何为朴素贝叶斯方法呢?
2、从贝叶斯方法转化为朴素贝叶斯方法的关键是条件独立性假设
问题起源于$P(X|Y_{k}),k=1,2,3,...,N$的学习的难度。假设X是一个M维的向量,每一个维的取值为$S_{k},k=1,2,3,...,N$,并且Y的取值个数为$NUM_{Y}$那么我们需要学习的总的条件概率的个数为
$NUM_{Y}\prod_{k=1}^{M}S_{k}$
复杂度太高,学习的难度较大。朴素贝叶斯方法的聪明之处,对特征进行了条件独立性假设的分解,它假设。
$P(X|Y)=\prod_{k=1}^{M}P(X_{k}|Y)$
这样实际上有点类似数据库中对范式进行分解的意味。如果这样的话,我们需要计算的条件概率的个数变为了
$NUM_{Y}\sum_{k=1}^{M}S_{k}$
运用上面的化简,公式(3)可以进一步化简为
$P(Y_{i}|X)=\frac{P(Y_{i})*\prod_{j=1}^{M}P(X_{j}|Y_{i})} {\sum_{k=1}^{N}P(Y_{k})*\prod_{j=1}^{M}P(X_{j}|Y_{k})}$ ————(4)
分母部分实际上是一个常数,我们一般不会考虑,从而,预测模型变为了
$P(Y_{i}|X) = argmax_{i}(P(Y_{i})*\prod_{j=1}^{M}P(X_{j}|Y_{i}))$
一、优缺点
优点:实现简单,学习预测效率比较高
缺点:准确率可能并不是非常高
二、原理性的东西
1、朴素贝叶斯方法实际上是学习先验概率分布和条件概率分布,通过先验概率分布和条件概率分布实际上就能确定联合概率分布。计算公式如下。
$P(X,Y)=P(X|Y)*P(Y)$ ———— (1)
根据贝叶斯定理,我们知道
$P(Y_{i}|X)=\frac{P(X,Y_{i})}{\sum_{k=1}^{N}P(X,Y_{k})}$ ————(2)
根据公式(1),公式(2)可以转化为,
$P(Y_{i}|X)=\frac{P(Y_{i})*P(X|Y_{i})}{\sum_{k=1}^{N}P(Y_{k}*P(X|Y_{k}))}$ ————(3)
实际上这就是贝叶斯方法,同时这也是进行预测的过程
那么何为朴素贝叶斯方法呢?
2、从贝叶斯方法转化为朴素贝叶斯方法的关键是条件独立性假设
问题起源于$P(X|Y_{k}),k=1,2,3,...,N$的学习的难度。假设X是一个M维的向量,每一个维的取值为$S_{k},k=1,2,3,...,N$,并且Y的取值个数为$NUM_{Y}$那么我们需要学习的总的条件概率的个数为
$NUM_{Y}\prod_{k=1}^{M}S_{k}$
复杂度太高,学习的难度较大。朴素贝叶斯方法的聪明之处,对特征进行了条件独立性假设的分解,它假设。
$P(X|Y)=\prod_{k=1}^{M}P(X_{k}|Y)$
这样实际上有点类似数据库中对范式进行分解的意味。如果这样的话,我们需要计算的条件概率的个数变为了
$NUM_{Y}\sum_{k=1}^{M}S_{k}$
运用上面的化简,公式(3)可以进一步化简为
$P(Y_{i}|X)=\frac{P(Y_{i})*\prod_{j=1}^{M}P(X_{j}|Y_{i})} {\sum_{k=1}^{N}P(Y_{k})*\prod_{j=1}^{M}P(X_{j}|Y_{k})}$ ————(4)
分母部分实际上是一个常数,我们一般不会考虑,从而,预测模型变为了
$P(Y_{i}|X) = argmax_{i}(P(Y_{i})*\prod_{j=1}^{M}P(X_{j}|Y_{i}))$
相关文章推荐
- 【OpenGL ES系列教程四】着色语言 Shading Language(二)
- 手斧Linux – 从LFS到Funtoo (56)
- 手斧Linux – 从LFS到Funtoo (55)
- RTL Compiler之synthesis flow
- 批处理 批量删除当前目录及子目录下多个指定的扩展名文件
- DatagramPacket,DatagramSocket
- 配置ssh时sshd不能启动解决办法
- 重写(override),重载(overload),多态(polymorphism)
- 时间类的运算符
- 手斧Linux – 从LFS到Funtoo (54)
- codeforces #309 553B B. Kyoya and Permutation(斐波那契数)
- 程序员果真有前端后端客户端吗
- 牛腩新闻系统(五)——一些小技巧
- ProgressDialog show()的时候 12-18 11:05:55.356: E/AndroidRuntime(461): android.view.WindowManager$Ba
- iOS开发面试题(更新中...)
- 黑马程序员-IOS学习笔记(二)常用关键字和方法
- 库和框架的区别
- 手斧Linux – 从LFS到Funtoo (53)
- 写的手机安全卫士程序, 当服务器没有开启.程序执行到if(conn.getResponseCode() == 200)即conn.getResponseCode()时没反应了.
- 虚拟机中Centos7搭建本地仓库