朴素贝叶斯算法(Naive Bayes)适用于在Training Set中,输入X和输出Y都是离散型的情况。如果输入X为连续,输出Y为离散,我们考虑使用逻辑回归(Logistic Regression)或者GDA(Gaussian Discriminant Algorithm)。

试想,当我们拿到一个全新的输入X,求解输出Y的分类问题时,相当于,我们要求解概率p(Y|X)这里的X和Y都是向量,我们要根据p(Y|X)的结果,找出可能性最大的那个y值,进行输出。举个经典的垃圾邮件(Spam)分类例子:如果在邮件中出现了"buy","discount","now",但没有出现"sale","price",试问这份邮件是垃圾邮件吗?首先我们将这5个单词分别对应到X中(顺序分别为"buy","discount","now","sale","price"):

然后,我们要计算出p(y=1|x)和p(y=0|x),以决定邮件是否为垃圾邮件。在实际情况中,X的维度可能是数万,甚至更多,直接求解的可能性为0,所以需要用到Naive Bayes。我们知道贝叶斯定理:

运用到此例子上,可以写为:

而Naive Bayes的Naive就在于,在给定y的情况下,我们认为X各个维度之间相互独立,即:

所以有:

由全概率公式:

也就是说,我们预先通过建模,知道在一般情况下垃圾邮件的概率,以及垃圾邮件和非垃圾邮件中中,包含某一个词的概率,然后即可利用此公式进行计算。拓展到一般的情况:

拉普拉斯平滑,当在我们碰到没见过的xi,会导致上式的分子和分母都为0,则p(y=1|x)及p(y=0|x)的值无法得出,为了解决此问题,引入拉普拉斯平滑。下面先举例来说明:假设邮件分类中,有2个类,在指定的训练样本中,某个词语K1,观测计数分别为990,10,K1的概率为0.99,0.01,对这两个量使用拉普拉斯平滑的计算方法如下:991/1002=0.988,11/1002=0.012

通用版公式如下:

我最初的疑问是,为什么分母要加k(类别数)?因为你在k个分类概率的分子处都加了1,总共加了k个,为了保证全概率为1,所以分母也要加k。总体的思路是,异常值不要影响我们整体的概率。

Naive Bayes Algorithm And Laplace Smoothing的更多相关文章

  1. 6 Easy Steps to Learn Naive Bayes Algorithm (with code in Python)

    6 Easy Steps to Learn Naive Bayes Algorithm (with code in Python) Introduction Here’s a situation yo ...

  2. 机器学习---用python实现朴素贝叶斯算法(Machine Learning Naive Bayes Algorithm Application)

    在<机器学习---朴素贝叶斯分类器(Machine Learning Naive Bayes Classifier)>一文中,我们介绍了朴素贝叶斯分类器的原理.现在,让我们来实践一下. 在 ...

  3. Naive Bayes Algorithm

    朴素贝叶斯的核心基础理论就是贝叶斯理论和条件独立性假设,在文本数据分析中应用比较成功.朴素贝叶斯分类器实现起来非常简单,虽然其性能经常会被支持向量机等技术超越,但有时也能发挥出惊人的效果.所以,在将朴 ...

  4. 朴素贝叶斯法(naive Bayes algorithm)

    对于给定的训练数据集,朴素贝叶斯法首先基于iid假设学习输入/输出的联合分布:然后基于此模型,对给定的输入x,利用贝叶斯定理求出后验概率最大的输出y. 一.目标 设输入空间是n维向量的集合,输出空间为 ...

  5. [ML] Naive Bayes for Text Classification

    TF-IDF Algorithm From http://www.ruanyifeng.com/blog/2013/03/tf-idf.html Chapter 1, 知道了"词频" ...

  6. [Machine Learning & Algorithm] 朴素贝叶斯算法(Naive Bayes)

    生活中很多场合需要用到分类,比如新闻分类.病人分类等等. 本文介绍朴素贝叶斯分类器(Naive Bayes classifier),它是一种简单有效的常用分类算法. 一.病人分类的例子 让我从一个例子 ...

  7. 朴素贝叶斯方法(Naive Bayes Method)

        朴素贝叶斯是一种很简单的分类方法,之所以称之为朴素,是因为它有着非常强的前提条件-其所有特征都是相互独立的,是一种典型的生成学习算法.所谓生成学习算法,是指由训练数据学习联合概率分布P(X,Y ...

  8. 机器学习---朴素贝叶斯分类器(Machine Learning Naive Bayes Classifier)

    朴素贝叶斯分类器是一组简单快速的分类算法.网上已经有很多文章介绍,比如这篇写得比较好:https://blog.csdn.net/sinat_36246371/article/details/6014 ...

  9. 朴素贝叶斯分类器(Naive Bayes)

    1. 贝叶斯定理 如果有两个事件,事件A和事件B.已知事件A发生的概率为p(A),事件B发生的概率为P(B),事件A发生的前提下.事件B发生的概率为p(B|A),事件B发生的前提下.事件A发生的概率为 ...

随机推荐

  1. [常用类]StringBuffer 类,以及 StringBuilder 类

    线程安全,可变的字符序列. 字符串缓冲区就像一个String ,但可以修改. 在任何时间点,它包含一些特定的字符序列,但可以通过某些方法调用来更改序列的长度和内容. 字符串缓冲区可以安全地被多个线程使 ...

  2. [APIO2019] 奇怪装置

    $solution:$ 问题其实就是求两个式子的循环节. 钦定 $t\mod B=0$且 $(t\neq 0)$,其 $t$ 为循环节. 则将 $1$ 式拆开得 $\frac{t\times (B+1 ...

  3. 什么是dockerfile?

    什么是dockerfile? Dockerfile是一个包含用于组合映像的命令的文本文档.可以使用在命令行中调用任何命令. Docker通过读取Dockerfile中的指令自动生成映像. docker ...

  4. c# 实现ComboBox自动模糊匹配

    ComboBox自带有属性可以实现自动匹配,但是它有一个弊端,只能从头开始匹配,例如"李四LS",只能输入“李四”或"李"才能匹配出来,而输入"LS& ...

  5. BUUCTF--rsa

    测试文件:https://buuoj.cn/files/ed10ec009d5aab0050022aee131a7293/41c4e672-98c5-43e5-adf4-49d75db307e4.zi ...

  6. Tensorflow学习笔记3:卷积神经网络实现手写字符识别

    # -*- coding:utf-8 -*- import tensorflow as tf from tensorflow.examples.tutorials.mnist import input ...

  7. javaweb各种框架组合案例(六):springboot+spring data jpa(hibernate)+restful

    一.介绍 1.springboot是spring项目的总结+整合 当我们搭smm,ssh,ssjdbc等组合框架时,各种配置不胜其烦,不仅是配置问题,在添加各种依赖时也是让人头疼,关键有些jar包之间 ...

  8. 【串线篇】spring boot自动配置精髓

    一.SpringBoot启动会加载大量的自动配置类即绿色部分 二.我们看我们需要的功能有没有SpringBoot默认写好的自动配置类: 比如HttpEncodingAutoConfiguration ...

  9. k8s+jenkins

    1 server 的port , targetport, nodeport的区别 targetport为容器的暴露端口,为最后端的端口 port可以理解为pod的端口,pod是容器的外层,该端口可以在 ...

  10. Qt 倒计时验证码按钮效果

    本来还想继承QTimer跟QPushButton去实现,后来发现可以使用两个QTimer来实现: 验证码倒计时间:(60s) 封装到widget类里: 需要这几个数据:Button,TimerA,Ti ...