PGM:贝叶斯网表示之朴素贝叶斯模型naive Bayes
http://blog.csdn.net/pipisorry/article/details/52469064
独立性质的利用
条件参数化和条件独立性假设被结合在一起,目的是对高维概率分布产生非常紧凑的表示。
随机变量的独立性
[PGM:概率论基础知识 :独立性性质的利用]
条件参数化方法
Note: P(I), P(S | i0), P(S | i1)都是二项式分布,都只需要一个参数。
皮皮blog
朴素贝叶斯模型naive Bayes
朴素贝叶斯模型的学生示例
{这个示例很好的阐述了什么是朴素贝叶斯网络模型,后面将讲到其一般化模型和分类的应用实例}
问题描述
模型的因子表示
符号表示:I表示智商;S(AT)代表SAT成绩;G(rade)代表某些课程成绩。
如果我们知道一个学生是高智商的,那么他在SAT考试中获得的高分并不能为我们带来任何有关他课程成绩的信息。
Note: 这种表示中在3个二项式表示和2个三项式表示。
因子表示的优点
[概率图模型 原理与技术[(美)科勒,(以)弗里德曼著]
皮皮blog
朴素贝叶斯一般模型
朴素贝叶斯模型的一般化定义
给定类时特征条件独立
Note:对应上面的学生示例,就是说,当类变量C(示例中就是智商I)确定时,类的feature(示例中的Grade和SAT)之间就是独立的(其实就是贝叶斯网的tail-to-tail结构形式)。
朴素贝叶斯模型的贝叶斯网络:
朴素贝叶斯模型的因子分解及参数
共2n+1个二项分布,需要2n+1个独立参数。
朴素贝叶斯参数个数与变量个数呈线性关系,而不像联合分布的显式表示中那样呈指数关系。
使用朴素贝叶斯模型进行分类
也就是说朴素贝叶斯分类器主要是训练参数p(c){每个独立的p(ci)}和p(x|c){每个独立的p(xi|ci)=num(xi=i, ci=i)/num(ci=i)}(这些参数可以通过训练数据是直接通过频率计算出来的(MLE方法)),通过取最大的p(c|new_x)来预测new_x的类别。
构建这种模型的强假设降低了模型诊断的准确性,尤其是过度计算某些特定的证据,该模型倾向于过高估计其影响。例如高血压和肥胖症是心脏疾病的两个硬指标,不过这两个症状相互之间高度相关。引发疾病证据被重复计算。
朴素贝叶斯分类算法的优缺点
优点:在数据较少的情况下依然有效,可以处理多类别问题
缺点:对输入数据的准备方式敏感
适用数据类型:标称型数据
朴素贝叶斯方法不需要进行结构学习,建立网络结构非常简单,实验结果和实践证明,它的分类效果比较好。
但在实际的应用领域中,朴素贝叶斯网络分类器具有较强的限定条件即各个属性相互独立的假设很难成立。我们应该广义地理解这种独立性,即属性变量之间的条件独立性是指:属性变量之间的依赖相对于属性变量与类变量之间的依赖是可以忽略的,这就是为什么朴素贝叶斯网络分类器应用的最优范围比想象的要大得多的一个主要原因。朴素贝叶斯分类器以简单的结构和良好的性能受到人们的关注,它是最优秀的分类器之一。在理论上它在满足其限定条件下是最优的,但它有较强的限定条件,可以尝试减弱它的限定条件以扩大最优范围,产生更好的分类器。朴素贝叫斯分类器可以进行扩展为广义朴素贝叶斯分类器。
皮皮blog
朴素贝叶斯分类算法的实现
朴素贝叶斯分类算法的python实现
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
__title__ = '朴素贝叶斯算法(亦适用于多类分类)'
__author__ = 'pika'
__mtime__ = '16-5-23'
__email__ = 'pipisorry@126.com'
# code is far away from bugs with the god animal protecting
I love animals. They taste delicious.
"""
import numpy as np
TRAIN_FILE = r'./trainingData.txt'
TEST_FILE = r'./testingData.txt'
def train_naive_bayes(x, y):
'''
训练参数:p(c){包含每个独立的p(ci)}和p(x|c){包含每个独立的p(xi|ci)}
'''
p_c = {} # p(c) = {ci : p(ci)}
p_x_cond_c = {} # p(x|c) = {ci : [p(xi|ci)]}
for l in np.unique(y):
# label l下, x=1 [xi = 1]时的概率array[p(xi=1|c=l)]; 则1-array[p(xi=1|c=l)]就是array[p(xi=0|c=l)]
p_x_cond_c[l] = x[y == l].sum(0) / (y == l).sum()
p_c[l] = (y == l).sum() / len(y) # p(c=l)的概率
print("θC: {}\n".format(p_c))
print("θA1=0|C: {}\n".format({a[0]: 1 - a[1][0] for a in p_x_cond_c.items()}))
print("θA1=1|C: {}\n".format({a[0]: a[1][0] for a in p_x_cond_c.items()}))
return p_c, p_x_cond_c
def predict_naive_bayes(p_c, p_x_cond_c, new_x):
'''
预测每个新来单个的x的label,返回一个label单值
'''
# new_x在类别l下的概率array
p_l = [(l, p_c[l] * (np.multiply.reduce(p_x_cond_c[l] * new_x + (1 - p_x_cond_c[l]) * (1 - new_x)))) for l in
p_c.keys()]
p_l.sort(key=lambda x: x[1], reverse=True) # new_x在类别l下的概率array按照概率大小排序
return p_l[0][0] # 返回概率最大对应的label
if __name__ == '__main__':
tdata = np.loadtxt(TRAIN_FILE, dtype=int)
x, y = tdata[:, 1:], tdata[:, 0]
p_c, p_x_cond_c = train_naive_bayes(x, y)
tdata = np.loadtxt(TEST_FILE, dtype=int)
x, y = tdata[:, 1:], tdata[:, 0]
predict = [predict_naive_bayes(p_c, p_x_cond_c, xi) for xi, yi in zip(x, y)]
error = (y != predict).sum() / len(y)
print("test error: {}\n".format(error))
[机器学习经典算法详解及Python实现---朴素贝叶斯分类及其在文本分类、垃圾邮件检测中的应用]
from: http://blog.csdn.net/pipisorry/article/details/52469064
ref: [概率图模型 原理与技术[(美)科勒,(以)弗里德曼著]*
PGM:贝叶斯网表示之朴素贝叶斯模型naive Bayes相关推荐
- 细讲逻辑斯蒂回归与朴素贝叶斯、最大熵原理的爱恨交织(长文)
好早之前就发现逻辑斯蒂回归好像和朴素贝叶斯里面的后验概率公式还有最大似然.信息熵.交叉熵.伯努利分布.回归分析.几率(odds)等等有着千丝万缕CZFZ(错综复杂).PSML(扑朔迷离)的关系.一直感 ...
- 机器学习(二)--sklearn之逻辑斯蒂回归和朴素贝叶斯
文章目录 1.逻辑斯蒂回归 2.朴素贝叶斯 3.三种分类算法的比较 上回说到,sklearn中的k近邻算法解决多分类问题.k近邻的基本步骤是:收集数据.创建分类器.训练.预测.评估性能.调参(参数就是 ...
- 三种常用的朴素贝叶斯实现算法——高斯朴素贝叶斯、伯努利朴素贝叶斯、多项式朴素贝叶斯
朴素贝叶斯 在机器学习中,朴素贝叶斯分类器是一系列以假设特征之间强(朴素)独立下运用贝叶斯定理为基础的简单概率分类器. 朴素贝叶斯算法Naive Bayes定义中有两个关键定义:特征之间强假设独立和贝 ...
- 【阿旭机器学习实战】【10】朴素贝叶斯模型原理及3种贝叶斯模型对比:高斯分布朴素贝叶斯、多项式分布朴素贝叶斯、伯努利分布朴素贝叶斯
[阿旭机器学习实战]系列文章主要介绍机器学习的各种算法模型及其实战案例,欢迎点赞,关注共同学习交流. 本文介绍了机器学习中的朴素贝叶斯的基本原理,并对3种贝叶斯模型根据鸢尾花实例进行了比较. 目录 朴 ...
- 朴素贝叶斯python代码_朴素贝叶斯模型及python实现
1 朴素贝叶斯模型 朴素贝叶斯法是基于贝叶斯定理.特征条件独立假设的分类方法.在预测时,对输入x,找出对应后验概率最大的 y 作为预测. NB模型: 输入: 先验概率分布:P(Y=ck),k=1,2, ...
- R构建朴素贝叶斯分类器(Naive Bayes Classifier)
R构建朴素贝叶斯分类器(Naive Bayes Classifier) 目录 R构建朴素贝叶斯分类器(Naive Bayes Classifier) 朴素贝叶斯原理及分类器
- 朴素贝叶斯分类器(Naive Bayes classifier)
朴素贝叶斯 生活中很多场合需要用到分类,比如新闻分类.病人分类等等. 本文介绍朴素贝叶斯分类器(Naive Bayes classifier),它是一种简单有效的常用分类算法. 病人分类 让我从一个例 ...
- 贝叶斯数据分析_Python数据分析 · 朴素贝叶斯详解
文章来源:公众号-俊红的数据分析之路 一.统计知识 01|随机事件: 1.概念 随机事件是在随机试验中,可能出现也可能不出现,而在大量重复试验中具有某种规律性的事件叫做随机事件(简称事件).随机事件通 ...
- python朴素贝叶斯对wine_基于朴素贝叶斯对Wine数据集分类
夏赵建+杜友福 摘要:为了解决由于葡萄酒的组成成分十分复杂与多样而导致它的类型分类与品质划分困难的问题,减少由于感官评审法对葡萄酒的评测周期长.影响因素多,主观性强和重复性差以及近红外光谱和三维荧光光 ...
- 朴素贝叶斯+Python3实现高斯朴素贝叶斯
1. 什么是朴素贝叶斯法 朴素贝叶斯(naive Bayes)法是基于贝叶斯定理与特征条件独立假设的分类方法.对于给定的训练数据集,首先基于特征条件独立假设学习输入输出的联合概率分布:然后基于此模型, ...
最新文章
- Linux下使用rsync最快速删除海量文件的方法
- hp unix oracle rac节点一磁盘损坏,节点修复
- Genymotion出现unknown generic error和This may occur if you are using a proxy错误的解决方案
- feedback for last final year project meeting
- idea生成方法注释的正确方法
- Steeltoe之Config客户端篇
- stomp java客户端_Stomp-Spring服务器端的Web套接字Java客户端
- P2P技术原理及应用
- MacOS上 编译GMSSL
- 英文文献翻译-----改进三维网格分析和分割的马尔可夫随机场
- NPOI word中插入图片
- python:修改图片的尺寸
- Internet Download Manager(最新版win/mac)最快下载器工具使用教程
- 设置<hr>标签的样式
- Python API+Postman+jmeter
- django中cookie模板引用
- 《GitHub详细教程》
- 面试题大全1-javaSE部分-JavaEE框架中间件
- maya2018放大字体及窗口
- 江歌和王昌龄 论程序猿的职场情商