机器学习算法 --- Naive Bayes classifier
一、引言
在开始算法介绍之前,让我们先来思考一个问题,假设今天你准备出去登山,但起床后发现今天早晨的天气是多云,那么你今天是否应该选择出去呢? 你有最近这一个月的天气情况数据如下,请做出判断。
- 这个月下雨的天数占10%
- 这个月早晨是多云的天数占40%
- 在下雨的天数中早晨是多云的占50%
如果有普通本科的概率论知识,这个问题就不难解决,计算一下今天会下雨的概率,然后根据概率决定即可。解决方式如下:

可以发现,今天下雨的概率只有12.5%,还是可以出去玩的(当然如果怕万一,那还是呆在家里)。
二、Bayes’s theorem
没错,上面的计算公式就是贝叶斯定理,这个定理的数学表示如下:

这个定理在日常生活中的应用非常广泛,比如:
If dangerous fires are rare (1%) but smoke is fairly common (10%) due to barbecues, and 90% of dangerous fires make smoke. 如果烟雾报警器检测到有烟,请问发生火灾的可能为多少?
- Suppose that a test for using a particular drug is 99% sensitive and 99% specific. That is, the test will produce 99% true positive results for drug users and 99% true negative results for non-drug users. Suppose that 0.5% of people are users of the drug. What is the probability that a randomly selected individual with a positive test is a drug user?
- ....
对上述公式做一个变形如下:

在对其进行扩展则如下:

三、Naive Bayes Classifier
上面说了这么多,好像与机器学习分类器没啥关系啊!但是不是,是有关系的, Naive Bayes Classifier就是一种基于概率的分类器。
首先,我们假设一组向量
,这组向量的各个值表示某个数据的特征值,那么它属于某个类别
的概率就可用这个形式表示:
。
根据上面的 Bayes’s theorem,这个概率的计算方法就如下:
(1)
对于条件概率的定义如下:

则,
=
可将上式写成如下形式:
(2)
然后,我们假设xi与xj(j不等于i)独立(即特征之间没有关系),则:

则,对于(2)式(即(1)式右半部分的分母),就可以写成如下形式:



假设
,则(1)式可以写成如下形式:
(3)
通过(3)式,我们就可以计算一个数据属于某个类别的概率,分类结果也就是概率最大的那一个类别,所以Naive Bayes Classifier的完整表达形式如下:

注意:由于在最后的结果比较中,每一个结果的计算都含有
,即它不影响比较结果,可以直接忽略。
四、说明
关于Naive Bayes Classifier,我们假设了特征之间不存在任何关系,然而现实是特征之间是不可能没有关系的。比如对于水果的类别,它们的颜色,大小,重量之间比如存在某种联系;再比如对于人类的性别,身高与体重等特征也是存在联系的。但是,Naive Bayes Classifier往往会取得比较好的结果,如果对数据和样本能做一些合适的预处理,它取得的结果是非常好的。
Naive Bayes Classifier在现实生活中的应用:垃圾邮件的分类,拼写检查与自动纠正,银行关于信用卡欺诈的检测等等。
五、参考与扩展链接
关于本篇文章的参考链接:https://www.mathsisfun.com/data/bayes-theorem.html
https://www.wikiwand.com/en/Bayes%27_theorem#
https://www.wikiwand.com/en/Naive_Bayes_classifier
这些链接中的很多知识本篇文章中还没有讲到,推荐大家去阅读学习。
机器学习算法 --- Naive Bayes classifier的更多相关文章
- 学习笔记之Naive Bayes Classifier
Naive Bayes classifier - Wikipedia https://en.wikipedia.org/wiki/Naive_Bayes_classifier In machine l ...
- 朴素贝叶斯分类器的应用 Naive Bayes classifier
一.病人分类的例子 让我从一个例子开始讲起,你会看到贝叶斯分类器很好懂,一点都不难. 某个医院早上收了六个门诊病人,如下表. 症状 职业 疾病 打喷嚏 护士 感冒 打喷嚏 农夫 过敏 头痛 建筑工 ...
- 机器学习---朴素贝叶斯分类器(Machine Learning Naive Bayes Classifier)
朴素贝叶斯分类器是一组简单快速的分类算法.网上已经有很多文章介绍,比如这篇写得比较好:https://blog.csdn.net/sinat_36246371/article/details/6014 ...
- [机器学习] 分类 --- Naive Bayes(朴素贝叶斯)
Naive Bayes-朴素贝叶斯 Bayes' theorem(贝叶斯法则) 在概率论和统计学中,Bayes' theorem(贝叶斯法则)根据事件的先验知识描述事件的概率.贝叶斯法则表达式如下所示 ...
- PGM学习之三 朴素贝叶斯分类器(Naive Bayes Classifier)
介绍朴素贝叶斯分类器的文章已经很多了.本文的目的是通过基本概念和微小实例的复述,巩固对于朴素贝叶斯分类器的理解. 一 朴素贝叶斯分类器基础回顾 朴素贝叶斯分类器基于贝叶斯定义,特别适用于输入数据维数较 ...
- Naive Bayes Classifier 朴素贝叶斯分类器
贝叶斯分类器的分类 根据实际处理的数据类型, 可以分为离散型贝叶斯分类器和连续型贝叶斯分类器, 这两种类型的分类器, 使用的计算方式是不一样的. 贝叶斯公式 首先看一下贝叶斯公式 $ P\left ( ...
- 【机器学习算法】cascade classifier级联分类器
前言 参考 1.级联分类器: 完
- naive bayes classifier in data mining
https://www-users.cs.umn.edu/~kumar001/dmbook/slides/chap4_naive_bayes.pdf -- textbook https://www. ...
- Python机器学习算法 — 朴素贝叶斯算法(Naive Bayes)
朴素贝叶斯算法 -- 简介 朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法.最为广泛的两种分类模型是决策树模型(Decision Tree Model)和朴素贝叶斯模型(Naive Baye ...
随机推荐
- 【转】【iOS开发】打开另一个APP(URL Scheme与openURL)
目标 平常我们做iOS开发,会经常遇到打开其他的APP的功能.本篇文章讲的就是打开别人的APP的一些知识.我们的目标是: 打开别人的APP 让别人打开我们的APP iOS9的适配问题 使用URL Sc ...
- 最长公共子序列&最长公共子串
首先区别最长公共子串和最长公共子序列 LCS(计算机科学算法:最长公共子序列)_百度百科 最长公共子串,这个子串要求在原字符串中是连续的.而最长公共子序列则并不要求连续. 最长公共子序列: http ...
- 说说Javac
Java语言有Java语言的规范,,这个规范详细描述了Java语言有哪些词法.语法,而Java虚拟机也有其Java虚拟机的规范,同样Java虚拟机的规范和Java语言规范并不一样,它们都有自己的词法和 ...
- 记一次ajax交互问题
问题描述:仍然在表单中,像往常一样,异步获取表单内所有输入框的信息,点击提交,确实也走了后台,但是结果却走了ajax的error.这一点使我当时非常疑惑,为什么会走error呢? 一般走error的原 ...
- NYOJ-171 聪明的kk 填表法 普通dp
题目链接: http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=171 聪明的kk 时间限制:1000 ms | 内存限制:65535 KB 难 ...
- 单链表(c语言实现)贼详细
直接上代码吧 #include<stdio.h> #include<malloc.h> /* 单链表特点: 它是一种动态的储存结构,链表中每个节点占用的储存空间不是预先分配的, ...
- JS数组的赋值
var test=[1,2,3,4,5,6,7]; var arr=test; arr.splice(2,1); alert(test);//1,2,4,5,6,7 JS数组实质上是对象.因此, ...
- starshot常见问题(New)
Element组件网址: http://element-cn.eleme.io/#/zh-CN/component/message Layer组件网址: https://www.layui.com/d ...
- Delphi按名字调用方法高级解决方案
转帖于https://lfzhs.iteye.com/blog/980200 按名字调用方法似乎一直以来都是大家比较关注的技术,在论坛上有一个经典的答复: type TProcedure = proc ...
- day91 DjangoRestFramework学习三之认证组件、权限组件、频率组件、url注册器、响应器、分页组件
DjangoRestFramework学习三之认证组件.权限组件.频率组件.url注册器.响应器.分页组件 本节目录 一 认证组件 二 权限组件 三 频率组件 四 URL注册器 五 响应器 六 分 ...