理解概率概念对于机器学习工程师或数据科学专业人员来说是必须的。许多数据科学挑战性问题的解决方案本质上是从概率视角解决的。因此,更好地理解概率将有助于更有效地理解和实现这些算法。

每当你阅读任何概率书、博客或论文时,大多数时候你会发现这些书中的讲解太过理论化。据研究,65%的人是视觉学习者。以图形方式理解定理和证明是一种可视化信息和数据的有效方式,而且不仅以可视方式呈现数据已被证明长期有效。因此,本文以可视方式透彻展示、讲解概率概念。

本文安排如下:

1. 什么是条件概率?2. 总概率定律3. 贝叶斯定理4. 贝叶斯定理的应用什么是条件概率?

根据维基百科, 条件概率是一个事件概率依赖于另一个事件(已然发生)的度量,假设(通过假设、推定、断言或证据)另一个事件发生的概率,表示为P(A / B)。

现在让我们尝试通过一种新的方法在视觉上解释它。

条件概率图

让我们假设我们在START的时间线内开始观察。P(A)表示在我们开始观察时间线之后发生事件A的概率。在A之后还有可能发生另一个事件B,并且其几率由P(B | A)表示。

由于两个事件都是连续发生的,所以整个时间线出现的概率(即A和B都发生,B发生在A之后)是

P(A)·P(B | A)

由于我们正在考虑A和B都发生的概率,它也可以解释为P(A∩B)

交叉规则(A∩B)

P(A∩B)= P(A)·P(B | A)

这里P(B | A)被称为条件概率,因此可以简化为

P(B | A)= P(A∩B)/ P(A),假设P(A)≠0

请注意,上述情况的前提是,事件序列发生且彼此相互依赖。也有可能A不影响B,如果是,则这些事件彼此独立并称为独立事件。

独立事件

在独立事件的情况下,A发生的几率不会影响B发生的几率。

P(B | A)= P(B)

总概率定律

总概率定律将计算分为不同的部分。它用于计算事件的概率,该事件与前一事件之前发生的两个或多个事件相关。

太抽象了?让我们尝试一种视觉方法

总概率图

设B是可以在任何" n"个事件(A1,A2,A3,...... ...... An)之后发生的事件。如上所定义P(Ai∩B)= P(Ai)P(B | Ai)i∈[1,n]

事件A1,A2,A3,...... A是相互排斥的,不能同时发生,我们可以通过A1或A2或A3或......或An到达B. 因此,用和的表达如下:

P(B)= P(A1∩B)+ P(A2∩B)+ P(A3∩B)+ ...... + P(An∩B)

进而:

P(B)= P(A1)·P(B | A1)+ P(A2)·P(B | A2)+ ...... + P(An)·P(B | An)

上述表达式称为总概率规则或总概率定律。

贝叶斯定理

贝叶斯定理是一种基于某些概率的先验知识来预测起源或来源的方法

我们已经知道P(B | A)= P(A∩B)/ P(A),假设两个相关事件的P(A)≠0。有没有想过P(A | B)=?,从语义上说它没有任何意义,因为B发生在A之后,时间线无法逆转(即我们不能从B向上行进到START)

数学上我们根据条件概率知道

P(A | B)= P(B∩A)/ P(B),假设P(B)≠0

P(A | B)= P(A∩B)/ P(B),P(A∩B)= P(B∩A)

我们知道

P(A∩B)= P(B | A)·P(A)

代入:

P(A | B)= P(B | A)·P(A)/ P(B)

这是贝叶斯定理的最简单形式。

现在,假设B依赖于它之前发生的多个事件。将Total Probability Rule应用于上面的表达式,我们得到

P(Ai | B)= P(B | Ai)·P(Ai)/(P(A1)·P(B | A1)+ ...... + P(An)·P(B | An))

这是我们通常在各种实际应用中使用的贝叶斯定理的形式。

贝叶斯定理的应用

由于其预测性,我们使用贝叶斯定理推导出朴素贝叶斯,这是一种流行的机器学习分类器

如上所述,贝叶斯定理基于可能与事件相关的因素的先验知识来定义事件的概率。

现在,基本上对于数据点xi,我们必须预测当前输出Y所属的类。假设输出的总类数为'j'。然后, P(y = c1 | x = xi) - - >告诉我们,对于给定的输入xi,y是c1的概率是多少。 P(y = c2 | x = xi) - - >告诉我们,对于给定的输入xi,y是c2的概率是多少。

在所有这些概率计算中,y属于具有最大概率的特定类。

我们将使用贝叶斯定理进行这些概率计算。

这给出了输出属于数据点(xi)的当前值的第j类的概率。 因为对于所有类1,2,...,j,分母将具有相同的值,所以我们可以在进行比较时忽略它。因此,我们获得了计算概率的公式。

为什么它被称为朴素??

我们之所以称之为朴素,是因为我们做了一个简单的假设,即类中特定特征的存在与任何其他特征的存在无关,这意味着每个特征彼此独立。

概率P(y = cj)的估计可以直接从训练数据点的数量来计算。 假设有100个训练点和3个输出类,10个属于c1类,40个属于C2类,其余50个属于C3类。 类概率的估计值将是:

P(y = C1)= 10/100 = 0.1

P(y = C2)= 40/100 = 0.4

P(y = C3)= 50/100 = 0.5

为了对P(x = xi | y = cj)进行概率估计,朴素贝叶斯分类算法假设所有特征都是独立的。因此,我们可以通过单独乘以为所有这些特征获得的概率(假设特征是独立的)来计算这个,用于第j类的输出。

P(x = xi | y = cj)= P(x = xi(1)| y = cj)P(x = xi(2)| y = cj).... P(X = XI(N)| Y = CJ)

这里,xi(1)表示第i个数据点的第1特征的值,x = xi(n)表示第i个数据点的第n个特征的值。

在接受了朴素假设之后,我们可以很容易地计算出单个特征概率,然后通过简单地乘以结果来计算最终概率P'。

使用上面的公式,我们可以计算输出y对于给定的第i个数据点属于第j个类的概率。

这是贝叶斯定理在实际应用中的主要应用。

形象快速理解贝叶斯定理相关推荐

  1. 通过一个具体实例来快速理解贝叶斯定理

    简介 贝叶斯定理是概述中很基本也是最常用的一个定理,也是自然语言处理中一个最基本的公式.它的公式并不复杂,但是理解起来还是有点困难.网上有很多文章介绍如何它是什么或如何使用,但是很少有文章通过具体的实 ...

  2. Java快速创建大量对象_3分钟 快速理解JVM创建对象的步骤!

    原标题:3分钟 快速理解JVM创建对象的步骤! 我们平时创建一个对象只需要new.然而我们知道对象的创建到底经历了哪些呢?实际上只不过仅仅的3步就完成了.先来看看完整的创建过程,再来一步一步的分析. ...

  3. python爬虫入门教程--快速理解HTTP协议(一)

    http协议是互联网里面最重要,最基础的协议之一,我们的爬虫需要经常和http协议打交道.下面这篇文章主要给大家介绍了关于python爬虫入门之快速理解HTTP协议的相关资料,文中介绍的非常详细,需要 ...

  4. 通俗易懂:快速理解ipv4的NAT穿透原理

    NAT基础   IPv4由于最初的设计原因,长度只有32位,所以只提供了大约40亿个地址.这造成了地址耗尽危机.   NAT(Network Address Translation,网络地址转换),也 ...

  5. 学一点 mysql 双机异地热备份----快速理解mysql主从,主主备份原理及实践

    学一点 mysql 双机异地热备份----快速理解mysql主从,主主备份原理及实践 原文 学一点 mysql 双机异地热备份----快速理解mysql主从,主主备份原理及实践 感谢大家在上一篇 学一 ...

  6. TensorFlow学习笔记(二):快速理解Tutorial第一个例子-MNIST机器学习入门 标签: 机器学习SoftmaxTensorFlow教程 2016-08-02 22:12 3729人阅

    TensorFlow学习笔记(二):快速理解Tutorial第一个例子-MNIST机器学习入门 标签: 机器学习SoftmaxTensorFlow教程 2016-08-02 22:12 3729人阅读 ...

  7. 一篇文章带你快速理解JVM运行时数据区 、程序计数器详解 (手画详图)值得收藏!!!

    受多种情况的影响,又开始看JVM 方面的知识. 1.Java 实在过于内卷,没法不往深了学. 2.面试题问的多,被迫学习. 3.纯粹的好奇. 很喜欢一句话:"八小时内谋生活,八小时外谋发展. ...

  8. IM开发基础知识补课(三):快速理解服务端数据库读写分离原理及实践建议

    1.前言 IM应用从服务端数据的角度来看,它是一种很特殊的应用场景,抛开基础数据.增值业务和附属功能不谈,单从IM聊天工具的立身之本--聊天数据来说,理论上是不需要在服务端存储的(或者说只需要短暂存储 ...

  9. 网络编程懒人入门(三):快速理解TCP协议一篇就够

    1.前言 本系列文章的前两篇<网络编程懒人入门(一):快速理解网络通信协议(上篇)>.<网络编程懒人入门(二):快速理解网络通信协议(下篇)>快速介绍了网络基本通信协议及理论基 ...

最新文章

  1. 初试linux编译(ubuntu+vim)+玩转智能蛇
  2. 用excel表格做好客户关系管理
  3. python语言单行注释符_Pyhton 单行、多行注释符号使用方法及规范
  4. 一行代码都不用写,教你如何快速搭建Github博客!!!
  5. 【Windows】字符串处理
  6. 解决opencv错误AttributeError: module ‘cv2.cv2‘ has no attribute ‘xfeatures2d‘
  7. 如何让服务器端持续监听客户端的请求?
  8. qt中记录数据的一次接收处理方法
  9. 业界 | 成为CTO之前,我希望有人告诉我这些
  10. oracle数据库基础测试,ORACLE数据库基础测试题oracle数据库复习题.docx
  11. 2019年注册测绘师备考历程
  12. 中兴笔试c语言,中兴面试C语言题1
  13. 如何利用信息差来创造价值?
  14. CentOS 7.4 Tengine安装配置详解(二)
  15. 深度学习中各种图像库的图片读取方式
  16. 递归算法中的小Tips
  17. 一流的产品,繁荣的生态,优质的服务,领先的市场,强大的组织 —2022新年寄语
  18. 区块链革命,革的是哪些“黑中介”的命?
  19. “傻女孩的幸福”读后感
  20. Python 资源大全中文版

热门文章

  1. r语言qsignrank函数用法_R语言常用函数名
  2. excel二进制移位运算_位运算-秦斌的博客-51CTO博客
  3. anacnda软件打不开解决方法
  4. 银行元宇宙3D数字虚拟人的应用场景
  5. 【微信小程序】使用npm并引入vant-weapp组件库
  6. UML-----交互图(顺序图和合作图)
  7. CMIIT ID是什么意思
  8. 蓝牙mesh基本概念讲解
  9. 全球免费软件推荐(国外篇) 1
  10. yolov5系列速度测试