机器学习学习笔记之三:朴素贝叶斯

条件概率和贝叶斯公式

(p(x|y)) 表示在 (y) 发生的条件下 (x) 发生的概率。

条件概率公式:
已知 (p(x)) 和 (p(y)),以及(x), (y)同时发生的概率(p(xy)),那么

[p(x|y) = \frac{p(xy)}{p(y)} ]

[p(y|x) = \frac{p(xy)}{p(x)} ]

由以上两个公式我们还可以得到

[p(x|y) = \frac{p(y|x)p(x)}{p(y)} ]

这就是 贝叶斯公式。其中,
(p(x)) 称为 (x) 的 先验概率
(p(y)) 称为 (y) 的 先验概率
(p(y|x)) 称为 (y) 在 (x) 发生后的 后验概率
(p(x|y)) 称为 (x) 在 (y) 发生后的 后验概率

我们把其中的(x, y)替换成”特征”,”类别”,于是就有更容易理解的公式:

[p(类别|特征) = \frac{p(特征|类别)p(类别)}{p(特征)} ]

使用朴素贝叶斯算法对数据进行分类

假设我们有两种类别(c_1, c_2),如何对特征(\vec{w})进行分类?只要计算(p(c_1|\vec{w}))与(p(c_2|\vec{w})),然后判断哪个概率更大。
(\text{if}\ p(c_1|\vec{w}) > p(c_1|\vec{w})\ \text{then} \ \vec{w} \in c_1)
(\text{if}\ p(c_1|\vec{w}) < p(c_1|\vec{w})\ \text{then} \ \vec{w} \in c_2)

例1:简单的数据分类

已知某女择偶标准可分为[帅,富,高,上进]四个特征。其中根据四个特征分别取值1和0,根据该女过去的相亲记录,有如下分布:

帅富高上进嫁 00000 00010 00100 00111 01011 01101 01111 10000 10010 11101

现在有一男,特征分别是[帅,不富,高,不上进],请问是否符合该女的择偶标准?

:根据贝叶斯公式,我们要求的量是 (p(嫁|[帅,不富,高,不上进])) 和 (p(不嫁 | [帅,不富,高,不上进]))。
我们先计算比较容易计算的量:(p([帅,不富,高,不上进])),由于朴素贝叶斯的条件,我们认为这四个特征是彼此独立的。因此

[\begin{align} p([帅,不富,高,不上进]) & = p(帅)p(不富)p(高)p(不上进) \ & = 0.3 \times 0.6 \times 0.5 \times 0.5 \ & = 0.045 \end{align}]

另外我们还可以求得

[p(嫁) = 0.5, p(不嫁) = 0.5 ]

由于各特征彼此独立,所以

[\begin{align}p([帅,不富,高,不上进] | 嫁) &= p(帅|嫁)p(不富|嫁)p(高|嫁)p(不上进|嫁) \ & = \frac{p(帅,嫁)}{p(嫁)} \times \frac{p(不富,嫁)}{p(嫁)} \times \frac{p(高,嫁)}{p(嫁)} \times \frac{p(不上进,嫁)}{p(嫁)} \ & = \frac{0.1}{0.5} \times \frac{0.1}{0.5} \times \frac{0.4}{0.5} \times \frac{0.2}{0.5} \ & = 0.0128 \end{align}]

[\begin{align}p([帅,不富,高,不上进] | 不嫁) &= p(帅|不嫁)p(不富|不嫁)p(高|不嫁)p(不上进|不嫁) \ & = \frac{p(帅,不嫁)}{p(不嫁)} \times \frac{p(不富,不嫁)}{p(不嫁)} \times \frac{p(高,不嫁)}{p(不嫁)} \times \frac{p(不上进,不嫁)}{p(不嫁)} \ & = \frac{0.2}{0.5} \times \frac{0.5}{0.5} \times \frac{0.1}{0.5} \times \frac{0.3}{0.5} \ & = 0.048 \end{align}]

[\begin{align} p(嫁|[帅,不富,高,不上进]) &= \frac{p([帅,不富,高,不上进] | 嫁)p(嫁)}{p([帅,不富,高,不上进])} \ &=\frac{0.0128 \times 0.5}{0.045} \ &=0.142 \end{align}]

[\begin{align} p(不嫁 | [帅,不富,高,不上进]) &= \frac{p([帅,不富,高,不上进] | 不嫁)p(不嫁)}{p([帅,不富,高,不上进])} \ &= \frac{0.048 \times 0.5}{0.045} \ &= 0.533 \end{align}]

显然 (p(不嫁 | [帅,不富,高,不上进]) > p(嫁|[帅,不富,高,不上进])),所以该男不符合该女的择偶标准。

但是,这个例子仅仅是通过现有的数据和贝叶斯公式直接得出结论,缺少训练的步骤。下面这个例子会通过对垃圾邮件进行分类来详细说明训练和测试的步骤。

例二:垃圾邮件分类

本质上,垃圾邮件分类可以用贝叶斯公式表示如下:

[p(是垃圾邮件|词向量\vec{w_i}) = \frac{p(\vec{w_i}|是垃圾邮件)p(是垃圾邮件)}{p(\vec{w_i})} ]

因此,我们要计算的就是等式右边的三个概率。

[p(\vec{w_i}) = p(w_0)p(w_1)p(w_2)…p(w_n), \ w0,w1,…w_n \in \vec{w_i} ]

[p(\vec{w_i}) = \prod_{k=1}^N \frac{在文本t_i中w_k出现的次数}{w_k出现的总次数} ]

[\begin{align} p(\vec{w_i} | 是垃圾邮件) & = \prod_{i=1}^N \frac{p(\vec{w_i}, 是垃圾邮件)}{p(是垃圾邮件)} \end{align}]

使用对数可以消除乘除法带来的误差,所以上述公式又可表示成

[\begin{align} \ln p(是垃圾邮件|\vec{w_i}) & = \ln p(\vec{w_i} | 是垃圾邮件) + \ln p(是垃圾邮件) – \ln p(\vec{w_i})\ \end{align}]

Original: https://www.cnblogs.com/ryuasuka/p/7405142.html
Author: 飞鸟_Asuka
Title: 机器学习学习笔记之三:朴素贝叶斯

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/610470/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 面试题:海量数据处理利器-布隆过滤器

    概念 原理 布隆过滤器的使用场景 简单模拟布隆过滤器 Guava布隆过滤器 Redis布隆过滤器 布谷鸟过滤器 作者:小牛呼噜噜 | https://xiaoniuhululu.c…

    Linux 2023年6月6日
    0178
  • 零成本搭建个人博客之图床和cdn加速

    本文属于零成本搭建个人博客指南系列 为什么要使用图床 博客文章中的图片资源文件一般采用本地相对/绝对路径引用,或者使用图床通过外链进行引用展示。本地引用的弊端我认为在于: 图片和博…

    Linux 2023年6月7日
    0123
  • Red Hat Enterprise Linux (RHEL) 9 更新了什么,即 Rocky Linux 9 和 AlmaLinux 9 展望

    请访问原文链接:https://sysin.org/blog/rhel-9-vision/,查看最新版。原创作品,转载请保留出处。 作者:gc(at)sysin.org,主页:ww…

    Linux 2023年5月27日
    0114
  • 5.7 Linux Vim可视化模式

    相信大家都使用过带图形界面的操作系统中的文字编辑器,用户可以使用鼠标来选择要操作的文本,非常方便。在 Vim 编辑器中也有类似的功能,但不是通过鼠标,而是通过键盘来选择要操作的文本…

    Linux 2023年6月7日
    0132
  • 数据结构——光纤网络设计

    设计进度安排 1、分析居民区光纤网络的数据属性,并依据光纤铺设的功能要求,确定算法设计方案; 2、完成网络光纤铺设的数据结构设计工作,包括图文件的结构与存储结构、最小生成树的存储结…

    Linux 2023年6月6日
    092
  • http代理连接

    基于Linux服务器的http代理连接 1. 准备工作 &#x76EE;&#x6807;&#x670D;&#x52A1;&#x5668; &…

    Linux 2023年5月27日
    0110
  • Cisco 7200 路由 PPPOE 拨号详解

    R1(config)#vpdn enable #启用vpdn虚拟专用拨号网络 R1(config)#interface dialer 1 #定义拨号器1 R1(config-if)…

    Linux 2023年6月6日
    097
  • OpenStack glance对接swift

    配置 切换环境变量 [root@controller ~]# source keystonerc_admin 复制glance配置文件备份 [root@controller ~(k…

    Linux 2023年6月8日
    093
  • 【MQTT】cJSON协议的安装和使用

    cJSON的使用 * – cJSON的简介 – + JSON 名称/值对 + JSON 数字 + JSON 对象 + JSON 数组 – cJS…

    Linux 2023年6月13日
    0118
  • Docker从入门到精通

    1 容器简介1.1 什么是 Linux 容器1.2 容器不就是虚拟化吗1.3 容器发展简史2 什么是 Docker?2.1 Docker 如何工作?2.2 Docker 技术是否与…

    Linux 2023年6月7日
    089
  • go-结构体内存布局

    方式一:通过 var 声明结构体 在 Go 语言中当一个变量被声明的时候,系统会自动初始化它的默认值,比如 int 被初始化为 0,指针为 nil。 var 声明同样也会为结构体类…

    Linux 2023年6月13日
    0104
  • Docker Manager for Docker Swarm deploy

    一、Swarm概述 Swarm是Docker公司在2014年12月初发布的一套较为简单的工具,用来管理Docker集群,它将一群Docker宿主机变成一个单一的,虚拟的主机。Swa…

    Linux 2023年6月14日
    0116
  • 解决Ubuntu(20.04)和Windows10双系统时间不同步问题

    1. 原因分析 出现这种情况的原因是 Windows 和 Ubuntu它们在默认情况下看待硬件时间(主板上的BOIS显示的时间)的方式 不一样。 我们先来看看时间的概念: [En]…

    Linux 2023年5月27日
    0199
  • DSTAT, Versatile resource statistics tool, 多功能资源统计工具;

    之前用到的一个IO监控工具,今天要使用,却忘记了名字,记录一下: dstat命令是一个用来替换vmstat、iostat、netstat、nfsstat和ifstat这些命令的工具…

    Linux 2023年6月13日
    092
  • Redis核心技术与实战:学习总结目录

    1 Redis学习路径 在《Redis核心技术与实战》课程的学习中,我经常看到一位课代表的发言,他就是Kaito,他总结了一份 Redis学习路径脑图(建议收藏),将Redis的知…

    Linux 2023年5月28日
    090
  • 【深度学习】ml_collections报错

    在一些源码中,看见了一个导入: import ml_collections 此时会报错,这个包并不是PyTorch的包,同时也非源码中模块 解决办法: pip install ml…

    Linux 2023年6月13日
    086
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球