《统计学习方法》(第二版)第4章

4 朴素贝叶斯法

生成模型

4.1 学习与分类

  1. 基于特征条件独立假设学习输入输出的联合概率分布

  2. 基于联合概率分布,利用贝叶斯定理求出后验概率最大的输出

条件独立假设

\[
P(X=x|Y=c_k)=\prod_{j=1}^n P(X^{(j)}=x^{(j)}|Y=c_k)
\]

等于说用于分类的特征在类确定的条件下都是条件独立的。

联合概率分布\(P(X,Y)\)

需要学习先验概率分布\(P(Y=c_k)\)和条件概率分布\(P(X=x|Y=c_k)\)

因为\(P(X=x,Y=c_k)=P(Y=c_k)P(X=x|Y=c_k)\)

后验概率最大

将后验概率最大的类作为\(x\)的类输出。
\[
后验概率:P(Y=c_k|X=x)=\frac{P(Y=c_k)\prod_{j=1}^n P(X^{(j)}=x^{(j)}|Y=c_k)}
{\sum_kP(Y=c_k)\prod_{j=1}^n P(X^{(j)}=x^{(j)}|Y=c_k)}
\]

\[
朴素贝叶斯分类器:y=\arg \max_{c_k}P(Y=c_k)\prod_{j=1}^n P(X^{(j)}=x^{(j)}|Y=c_k)
\]

等价于期望风险最小化.

期望风险\(R_{exp}(f) = E[L(Y, f(X))]\)

选择0-1损失函数,经验风险最小化函数
\[
f(x)=\arg \min_{y \in Y} \sum_{k=1}^K L(c_k,y)P(c_k|X=x) \\
=\arg \min_{y \in Y}P(y≠c_k|X=x) \\
=\arg \min_{y \in Y}(1-P(y=c_k|X=x)) \\
=\arg \max_{y \in Y}P(y=c_k|X=x) \\
\]

4.2 参数估计

极大似然估计

\[
P(Y=c_k)=\frac{\sum_{i=1}^NI(y_i=c_k)}{N}
\]

\[
P(X^{(j)}=a_{jl}|Y=c_k)=\frac{\sum_{i=1}^NI(x_i^{(j)}=a_{jl},y_i=c_k)}{\sum_{i=1}^NI(y_i=c_k)}
\]

可能会出现所要估计的概率值为0的情况,会影响到后验概率的计算,从而使分类产生偏差。

朴素贝叶斯算法

  1. 计算先验概率及条件概率
  2. 对于给定的实例\(x\),计算后验概率
  3. 根据后验概率最大的确定实例\(x\)的类

贝叶斯估计

\[
P_\lambda(Y=c_k)=\frac{\sum_{i=1}^NI(y_i=c_k)+\lambda}{N+K\lambda}
\]

\[
P_\lambda (X^{(j)}=a_{jl}|Y=c_k)=\frac{\sum_{i=1}^NI(x_i^{(j)}=a_{jl},y_i=c_k)+\lambda}{\sum_{i=1}^NI(y_i=c_k)+S_j\lambda}
\]

其中\(\lambda>0\),常取\(\lambda=1\),称为拉普拉斯平滑。\(K\)为\(Y\)取值个数,\(S_j\)为\(x\)的特征\(l\)的个数。

朴素贝叶斯法(naive Bayes)的更多相关文章

  1. PGM:贝叶斯网表示之朴素贝叶斯模型naive Bayes

    http://blog.csdn.net/pipisorry/article/details/52469064 独立性质的利用 条件参数化和条件独立性假设被结合在一起,目的是对高维概率分布产生非常紧凑 ...

  2. 【机器学习速成宝典】模型篇05朴素贝叶斯【Naive Bayes】(Python版)

    目录 先验概率与后验概率 条件概率公式.全概率公式.贝叶斯公式 什么是朴素贝叶斯(Naive Bayes) 拉普拉斯平滑(Laplace Smoothing) 应用:遇到连续变量怎么办?(多项式分布, ...

  3. 【机器学习实战】第4章 朴素贝叶斯(Naive Bayes)

    第4章 基于概率论的分类方法:朴素贝叶斯 朴素贝叶斯 概述 贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类.本章首先介绍贝叶斯分类算法的基础——贝叶斯定理.最后,我们 ...

  4. 【Spark机器学习速成宝典】模型篇04朴素贝叶斯【Naive Bayes】(Python版)

    目录 朴素贝叶斯原理 朴素贝叶斯代码(Spark Python) 朴素贝叶斯原理 详见博文:http://www.cnblogs.com/itmorn/p/7905975.html 返回目录 朴素贝叶 ...

  5. 朴素贝叶斯(Naive Bayes)

    1.朴素贝叶斯模型 朴素贝叶斯分类器是一种有监督算法,并且是一种生成模型,简单易于实现,且效果也不错,需要注意,朴素贝叶斯是一种线性模型,他是是基于贝叶斯定理的算法,贝叶斯定理的形式如下: \[P(Y ...

  6. 朴素贝叶斯(naive bayes)算法及实现

    处女文献给我最喜欢的算法了 ⊙▽⊙ ---------------------------------------------------我是机智的分割线----------------------- ...

  7. 深入理解朴素贝叶斯(Naive Bayes)

    https://blog.csdn.net/li8zi8fa/article/details/76176597 朴素贝叶斯是经典的机器学习算法之一,也是为数不多的基于概率论的分类算法.朴素贝叶斯原理简 ...

  8. 模式识别之贝叶斯---朴素贝叶斯(naive bayes)算法及实现

    处女文献给我最喜欢的算法了 ⊙▽⊙ ---------------------------------------------------我是机智的分割线----------------------- ...

  9. 【分类算法】朴素贝叶斯(Naive Bayes)

    0 - 算法 给定如下数据集 $$T=\{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\},$$ 假设$X$有$J$维特征,且各维特征是独立分布的,$Y$有$K$种取值.则 ...

  10. 朴素贝叶斯分类器Naive Bayes

    优点Naive Bayes classifiers tend to perform especially well in one of the following situations: When t ...

随机推荐

  1. bzoj2616

    树形dp+笛卡尔树+单调栈 这道题跟树形dp有什么关系? 事实上,我们对矩形建立笛卡尔树,先找出最矮的矩形,向两边区间最矮的矩形连边,这样就构成了一棵二叉树,因为只有一个矮的区间会对高的区间造成影响, ...

  2. pl/sql developer安装使用即时客户端

    pl/sql developer安装使用即时客户端 背景:由于Oracle的安装比较麻烦,大部分人都使用远程Oracle,而Oracle Instantclient Basic package可以解决 ...

  3. 洛谷 - P1004 - 方格取数 - 简单dp

    https://www.luogu.org/problemnew/show/P1004 这道题分类到简单dp但是感觉一点都不简单……这种做两次的dp真的不是很懂怎么写.假如是贪心做两次,感觉又不能证明 ...

  4. XTU1267:Highway(LCA+树的直径)

    传送门 题意 有n个小镇,Bobo想要建造n-1条边,并且如果在u到v建边,那么花费是u到v的最短路长度(原图),问你最大的花费. 分析 比赛的时候没做出来,QAQ 我们首先要找到树的直径起点和终点, ...

  5. 51nod 1133【贪心】

    思路: 按照终点升序,然后遍历一下就好了: #include <bits/stdc++.h> using namespace std; typedef long long LL; cons ...

  6. python 字符串操作一

    一.创建字符串 >>> s1 = '12345' >>> s1 '12345' >>> s2 = str(12345) >>> ...

  7. Ubuntu 18.04 LTS 安装过程

    电脑: acer 1. F12开启boot menu,如果没开启,F2进去开启 2. 早点插优盘,否则进入F12的时候检测不出来,选择U盘启动,先不安装试用,进入桌面后有安装文件再安装,想直接安应该也 ...

  8. Centos 6.8安装 SVN

    SVN SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS.CVS,它采用了分支管理系统,它的设计目标就是取代CVS.互联网上很多版本控制服务已从CVS迁移到Subver ...

  9. <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>

    那么 pageEncoding , contentType 分别用来做什么那?在解释之前让我们先了解下jsp从被请求到响应经历的三个阶段: 第一阶段:将jsp编译成Servlet(.java)文件.用 ...

  10. centos7上使用locate命令-文件查找

    centos7上使用locate命令   小贴士:在centOS7以上的系统中使用“locate”文件查找命令,发现该命令不可用. 检查了下,原来是centos7默认没有安装该命令,在联网状态运行“y ...