机器学习(三):朴素贝叶斯+贝叶斯估计+BP人工神经网络习题手算|手工推导与习题计算
1.有 1000 个水果样例. 它们可能是香蕉,橙子或其它水果,已知每个水果的 3 种特性:是否偏长、是否甜、颜色是否是黄色
| 类型 | 长 | 不长 | 甜 | 不甜 | 黄色 | 非黄 | Total |
|---|---|---|---|---|---|---|---|
| 香蕉 | 400 | 100 | 350 | 150 | 450 | 50 | 500 |
| 橙子 | 0 | 300 | 150 | 150 | 300 | 0 | 300 |
| 其它 | 100 | 100 | 150 | 50 | 50 | 150 | 200 |
| Total | 500 | 500 | 650 | 350 | 800 | 200 | 1000 |
根据上表数据,分别利用朴素贝叶斯分类和贝叶斯估计方法,对一个(长,甜,黄色)水果进行识别,判断该水果属于:香蕉,橙子或其它水果哪一类?
解:
条件一致,舍去分母,加上分母可以将 正比于 替换为 等号
\(P(长,甜,黄色)=P(长,甜,黄色∣香蕉)×P(香蕉)+P(长,甜,黄色∣橙子)×P(橙子)+P(长,甜,黄色∣其他水果)×P(其他水果)\)
朴素贝叶斯分类方法:
\(P(香蕉 | 长,甜,黄色)\propto P(长 | 香蕉) * P(甜 | 香蕉) * P(黄色 | 香蕉) * P(香蕉)=\frac{400}{500}\times \frac{350}{500}\times \frac{450}{500}\times \frac{500}{1000}=0.0252\)
\(P(橙子 | 长,甜,黄色) \propto P(长 | 橙子) * P(甜 | 橙子) * P(黄色 | 橙子) * P(橙子)=\frac{0}{300}\times \frac{150}{300}\times \frac{300}{300}\times \frac{300}{1000}=0.0\)
\(P(其它 | 长,甜,黄色) \propto P(长 | 其它) * P(甜 | 其它) * P(黄色 | 其它) * P(其它)=\frac{100}{200}\times \frac{150}{200}\times \frac{50}{200}\times \frac{200}{1000}=0.01875\)
直接选择最大概率值就好了,即根据朴素贝叶斯分类,该水果属于香蕉.
贝叶斯估计方法:
设平滑参数\(a\)为1,其中特征可能数\(k\)都为2
\(P(香蕉 | 长,甜,黄色)\propto P(长 | 香蕉) * P(甜 | 香蕉) * P(黄色 | 香蕉) * P(香蕉)=\frac{400+1}{500+2}\times \frac{350+1}{500+2}\times \frac{450+1}{500+2}\times \frac{500}{1000}=0.025089\)
\(P(橙子 | 长,甜,黄色) \propto P(长 | 橙子) * P(甜 | 橙子) * P(黄色 | 橙子) * P(橙子)=\frac{0+1}{300+2}\times \frac{150+1}{300+2}\times \frac{300+1}{300+2}\times \frac{300}{1000}=0.0\)
\(P(其它 | 长,甜,黄色) \propto P(长 | 其它) * P(甜 | 其它) * P(黄色 | 其它) * P(其它)=\frac{100+1}{200+2}\times \frac{150+1}{200+2}\times \frac{50+1}{200+2}\times \frac{200}{1000}=0.01875\)
结果依然不变,即根据朴素贝叶斯估计,该水果属于香蕉.
解析:
首先,我们需要使用贝叶斯定理计算在给定(长,甜,黄色)水果的情况下,该水果属于每个类别的概率。由于在这个问题中每个特征是二元的(要么是,要么不是),因此我们可以使用朴素贝叶斯分类方法。对于一个测试水果,我们需要计算以下每个类别的条件概率,从而确定它最可能属于哪个类别:
\(P(香蕉 | 长,甜,黄色) \propto P(长 | 香蕉) * P(甜 | 香蕉) * P(黄色 | 香蕉) * P(香蕉)\)
\(P(橙子 | 长,甜,黄色) \propto P(长 | 橙子) * P(甜 | 橙子) * P(黄色 | 橙子) * P(橙子)\)
\(P(其它 | 长,甜,黄色) \propto P(长 | 其它) * P(甜 | 其它) * P(黄色 | 其它) * P(其它)\)
其中\(P(类别)\)是每个类别的先验概率,可以通过将对应行中的总数除以总样本数进行计算。例如,对于香蕉类别,\(P(香蕉) = 500/1000 = 0.5\).
而条件概率\(P(特征 | 类别)\)可以通过对应的条目计算,例如对于“长”特征和香蕉类别,\(P(长 | 香蕉)= 400/500 = 0.8\)。
因此,对于一个(长,甜,黄色)水果,每个类别的朴素贝叶斯得分如下:
| 类别 | 香蕉 | 橙子 | 其它 |
|---|---|---|---|
| 得分 | 0.25200 | 0.00000 | 0.01875 |
因此,该水果最有可能属于香蕉类别。
然而,朴素贝叶斯分类方法受极端数据点的影响较大,因此我们可以使用贝叶斯估计方法来缓解这种情况。具体来说,对于每个类别的每个特征,我们可以引入一个小的平滑参数进行修正。假设平滑参数为a,那么对于任意特征x和类别y,我们可以按照以下方式计算条件概率:
\(P(x | y) = \frac{count(x, y) + a}{count(y) + a * NumPossibleValues(x)}\)
其中,\(count(x, y)\)是在y类别下x特征的计数。\(count(y)\)是y类别的样本总数,\(NumPossibleValues(x)\)是x特征可能的取值,即2。
选择a的值通常是根据经验确定的,但在这里我们可以使用a = 1。
使用贝叶斯估计方法进行相同的分类,我们得到以下朴素贝叶斯估计得分表:
| 类别 | 香蕉 | 橙子 | 其它 |
|---|---|---|---|
| 得分 | 0.25089 | 0.00049 | 0.01887 |
在这种情况下
附录:
朴素贝叶斯分类是基于贝叶斯定理的一种分类算法,它假设各个特征之间相互独立,因此被称为“朴素”。
朴素贝叶斯分类的计算流程如下:
准备训练数据集,包括特征和对应的类别标签。
计算每个类别出现的概率 \(P(Y)\),并计算每个特征在每个类别下的概率 \(P(X_i|Y)\),即给定类别 \(Y\) 的条件下,每个特征 \(X_i\) 出现的概率。
对于一个新的样本,计算其属于每个类别的条件概率 \(P(Y|X)\),即在给定特征 \(X\) 的情况下,属于类别 \(Y\) 的概率。根据贝叶斯定理,有:
\(P(Y|X) = \frac{P(X|Y)P(Y)}{P(X)}\)
其中,\(P(X|Y)\) 是根据训练数据估算出的在类别 \(Y\) 下特征 \(X\) 出现的条件概率,\(P(Y)\) 是训练数据中类别 \(Y\) 出现的概率,\(P(X)\) 是特征 \(X\) 的边缘概率,可以通过\(P(X)=\sum_{Y}P(X|Y)P(Y)\)计算得到。
根据上述公式计算每个类别下给定样本的条件概率,确定样本所属的类别。
如果给出的是多个特征,朴素贝叶斯分类的计算方式和单个特征相同,只是需要将所有特征的条件概率相乘。
具体来说,设一个样本的特征向量为 \(X=(X_1,X_2,\cdots,X_n)\),其中 \(n\) 是特征的数量。朴素贝叶斯模型假设特征之间相互独立,因此可以将样本属于类别 \(Y\) 的条件概率表示为:
\]
其中,\(P(Y)\) 是类别 \(Y\) 出现的概率,可以通过训练集中出现类别 \(Y\) 的样本数占总样本数的比例进行估计;\(P(X_i|Y)\) 是给定类别 \(Y\) 的条件下特征 \(X_i\) 出现的概率,可以通过训练集中出现类别 \(Y\) 且特征 \(X_i\) 出现的样本数占出现类别 \(Y\) 的样本数的比例进行估计。
\(P(X)\) 是特征向量 \(X\) 的边缘概率,可以通过对所有可能的类别 \(Y\) 进行求和得到:
\]
然后,将计算得到的 \(P(Y|X)\) 按照概率从大到小排序,通常选择概率最大的类别作为样本所属的类别。
贝叶斯估计方法,也称为拉普拉斯平滑(Laplace smoothing),是贝叶斯分类器中一种常用的平滑方法。它的主要思想是对于没有在训练数据中出现过的特征值,仍然分配一个非零的概率值,以避免在计算概率时出现分母为零的情况。
具体来说,设某个特征在训练数据集中出现的次数为 \(N\),特征的可能取值个数为 \(k\),则在贝叶斯估计中,我们将原本的频率估计公式 \(P(X = x_i|Y = y_j) = \frac{N_{i,j}}{N_j}\) 改为:
\(P_{\text{smooth}}(X = x_i|Y = y_j) = \frac{N_{i,j} + \alpha}{N_j + \alpha k}\)
其中,\(N_{i,j}\) 表示在训练数据集中,特征 \(X = x_i\) 且标签 \(Y = y_j\) 的样本数,\(N_j\) 表示标签为 \(Y = y_j\) 的样本数,\(\alpha\) 是一个平滑参数,通常取值为 1。这样,在计算未出现过的特征值的概率时,分子仍然为 1,分母不为零,从而避免了出现无法计算的情况。
贝叶斯估计方法的优点是可以有效地避免过拟合,提高模型的泛化能力。但是,在实际应用中,由于使用了额外的参数 \(\alpha\),需要进行参数调整,否则可能会影响模型的表现。
机器学习(三):朴素贝叶斯+贝叶斯估计+BP人工神经网络习题手算|手工推导与习题计算的更多相关文章
- 机器学习之朴素贝叶斯&贝叶斯网络
贝叶斯决决策论 在所有相关概率都理想的情况下,贝叶斯决策论考虑基于这些概率和误判损失来选择最优标记,基本思想如下: (1)已知先验概率和类条件概率密度(似然) (2)利用贝叶斯转化为后验概 ...
- Python机器学习算法 — 朴素贝叶斯算法(Naive Bayes)
朴素贝叶斯算法 -- 简介 朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法.最为广泛的两种分类模型是决策树模型(Decision Tree Model)和朴素贝叶斯模型(Naive Baye ...
- 100天搞定机器学习|Day15 朴素贝叶斯
Day15,开始学习朴素贝叶斯,先了解一下贝爷,以示敬意. 托马斯·贝叶斯 (Thomas Bayes),英国神学家.数学家.数理统计学家和哲学家,1702年出生于英国伦敦,做过神甫:1742年成为英 ...
- [机器学习&数据挖掘]朴素贝叶斯数学原理
1.准备: (1)先验概率:根据以往经验和分析得到的概率,也就是通常的概率,在全概率公式中表现是“由因求果”的果 (2)后验概率:指在得到“结果”的信息后重新修正的概率,通常为条件概率(但条件概率不全 ...
- 机器学习:朴素贝叶斯--python
今天介绍机器学习中一种基于概率的常见的分类方法,朴素贝叶斯,之前介绍的KNN, decision tree 等方法是一种 hard decision,因为这些分类器的输出只有0 或者 1,朴素贝叶斯方 ...
- 吴裕雄--天生自然python机器学习:朴素贝叶斯算法
分类器有时会产生错误结果,这时可以要求分类器给出一个最优的类别猜测结果,同 时给出这个猜测的概率估计值. 概率论是许多机器学习算法的基础 在计算 特征值取某个值的概率时涉及了一些概率知识,在那里我们先 ...
- spark(1.1) mllib 源码分析(三)-朴素贝叶斯
原创文章,转载请注明: 转载自http://www.cnblogs.com/tovin/p/4042467.html 本文主要以mllib 1.1版本为基础,分析朴素贝叶斯的基本原理与源码 一.基本原 ...
- 【十大算法实现之naive bayes】朴素贝叶斯算法之文本分类算法的理解与实现
关于bayes的基础知识,请参考: 基于朴素贝叶斯分类器的文本聚类算法 (上) http://www.cnblogs.com/phinecos/archive/2008/10/21/1315948.h ...
- Python机器学习笔记:朴素贝叶斯算法
朴素贝叶斯是经典的机器学习算法之一,也是为数不多的基于概率论的分类算法.对于大多数的分类算法,在所有的机器学习分类算法中,朴素贝叶斯和其他绝大多数的分类算法都不同.比如决策树,KNN,逻辑回归,支持向 ...
- 【机器学习实战笔记(3-2)】朴素贝叶斯法及应用的python实现
文章目录 1.朴素贝叶斯法的Python实现 1.1 准备数据:从文本中构建词向量 1.2 训练算法:从词向量计算概率 1.3 测试算法:根据现实情况修改分类器 1.4 准备数据:文档词袋模型 2.示 ...
随机推荐
- nginx 添加ssl认证,访问静态资源 笔记
1.查看是否开启SSL模块, /usr/local/nginx/sbin ./nginx -V 2.没有开启,进入到nginx源码包目录下: 3编译 ./configure --prefix= ...
- 平方损失函数为例的BP的关键公式推导
看了刘建平老师的博客https://www.cnblogs.com/pinard/p/6422831.html对如下其中两个公式进行详细推导 损失函数为(大写字母为矩阵,小写字母字母加粗为列向量,其中 ...
- c++学习6 指针变量
一 指针变量的定义 *是用来修饰指针变量的,通常情况下我们定义的手法都是"类型名"+"*"+"指针变量名称". 有一种简单无脑的" ...
- 如何申请ios证书
第一次申请ios证书 记录下来 第一步 随便找个可以在线生成ios证书的网站 在这里生成csr文件 https://www.yunedit.com/update/ioszhengshu/list 第 ...
- vue搭建项目iview+axios+less
项目地址:https://github.com/CinderellaStory/vue-iview-project vue搭建项目壳子已安装:iview.axios.less 已有界面:登录.左侧菜单 ...
- #Python #OpenCV 使用Python为你的圣诞节增添更多乐趣
目录 1.前言 2.目标与效果展示 3.下载OpenCV图形识别库 4.下载python支持的v2模块 5.图片素材 6.代码 1.前言 编辑 Merry Christmas!今天是2022 ...
- Django框架搭建web项目(四)
启动项目前先创建后台admin账户 项目根目录下运行:python manage.py createsuperuser 设置admin账号成功后,在根目录下运行:manage.py文件,注意设置. 3 ...
- aos.js 与 swiper 组合,翻页后无法触发aos的效果
手动给除第一页之外的需要特效的元素添加 class="aos-animate" 转自:https://cloud.tencent.com/developer/ask/sof/302 ...
- java 与 JSON
Java 与 JSON JSON 是不同程序之间传递信息的一种格式.本文描述了 JSON 在 Java 中的应用. 目前 Java 中比较主流的相关解析工具有谷歌提供的 Gson 和阿里提供的 Fas ...
- Vue+SSM+Element-Ui实现前后端分离(2)
前言:后台使用ssm搭建,对以前学习知识的一个回顾,与此同时来发现自己不足.这里主要采用配置文件方式进行,有部分注解. 目标:搭建ssm框架,并测试成功:(其中也有aop切面的编写) 一.开发工具 I ...