机器学习 | 贝叶斯方法

news2024/9/25 19:24:23

        不同于KNN最近邻算法的空间思维,线性算法的线性思维,决策树算法的树状思维,神经网络的网状思维,SVM的升维思维。

        贝叶斯方法强调的是 先后的因果思维。

        监督式模型分为判别式模型和生成式模型。

        

        判别模型和生成模型的区别:

                判别式模型:输入一个特征X可以直接得到一个y。

                生成式模型:上来先学习一个联合概率分布 p(x,y),

                                        再用他根据贝叶斯法则求条件概率密度分布。

                                        —— 没有决策边界的存在

        判别式数据对于数据分布特别复杂的情况,比如文本图像视频;

        而生成式模型对于数据有部分特征缺失的情况下效果更好,

        而且更容易添加数据的先验知识 p(x)

        


1、核心思想和原理

贝叶斯公式

        建立了四个概率分布之间的关系,已知变量 X 和 未知变量(模型参数)w 之间的计算关系

        假定 X 表示数据,W 表示模型的参数

        Likelihood翻译成可能性或者是似然函数,最大似然估计指的就是这个

        

        以下图中 s 表示状态, o 表示观测。

        

参数估计

        1、最大似然估计 MLE

        2、最大后验估计 MAP

        3、贝叶斯估计


2、朴素贝叶斯分类

        我们知道分类问题是 给定特征 X,输出分类标记 y

        

        那么朴素贝叶斯方法是如何由指定特征得到分类类别的呢?

        2.1、举个栗子

                 

                能不能直接根据这些经验(上面的数据),来判断一个境外人员有没有得新冠呢?

                —— 转换为数学语言即

                

                比较难求的显然就是 Likelihood,所以朴素贝叶斯假设特征之间相互独立。

                

                根据中心极限定理,频率就等于概率,虽然这里数据没有那么多,也一样可以这么算

                

                


2.2、朴素贝叶斯分类及其代码实现

  • 逻辑简单,易于实现
  • 效率高,时空开销小
  • 条件独立假设不成立则分类效果一般
  • 适用于特征相关性较小时

 代码实现:

import numpy as np
X = [[1,0,0,1],
     [0,1,0,0],
     [1,1,0,0],
     [0,1,2,0],
     [1,0,0,0],
     [1,0,0,0],
     [1,1,2,1],
     [0,1,1,0],
     [1,1,1,0],
     [0,0,2,0],
     [1,1,0,1],
     [1,1,0,1]]

y = [0,0,1,1,0,0,1,1,1,1,0,0]

t=[[0,0,0,1]]
from sklearn.naive_bayes import BernoulliNB
bnb = BernoulliNB()
bnb.fit(X,y)
bnb.predict_proba(t)
array([[0.875, 0.125]])


2,3、朴素贝叶斯家族

         

2.3.1、伯努利朴素贝叶斯与多项式朴素贝叶斯

        伯努利分布(两点分布、0-1分布)

                属于离散型概率分布

                伯努利分布公式:

                        

                伯努利实验 —— 例如抛硬币。

        二项式分布和多项式分布

                二项式分布:伯努利实验重复n次。

                n = 1的二项式分布就是伯努利分布。

                多项式分布:抛硬币改为掷骰子。

        伯努利朴素贝叶斯:每个特征都服从伯努利分布的一种贝叶斯分类器

                适用于二分类离散变量。

                特征的条件概率服从伯努利分布:

                        

                        xi 表示第 i 哥特征维度,y 表示观测道德类别。

                特征可选值大于两个时可用多项式分布。

                

2.3.2、 高斯朴素贝叶斯

        


2.4、分类器效果对比

from sklearn.datasets import load_iris

iris = load_iris()
X = iris.data
y = iris.target
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
from sklearn.naive_bayes import BernoulliNB
nb = BernoulliNB()
nb.fit(X_train, y_train)
nb.score(X_test, y_test)
0.23684210526315788
print(iris.DESCR)
.. _iris_dataset:

Iris plants dataset
--------------------

**Data Set Characteristics:**

    :Number of Instances: 150 (50 in each of three classes)
    :Number of Attributes: 4 numeric, predictive attributes and the class
    :Attribute Information:
        - sepal length in cm
        - sepal width in cm
        - petal length in cm
        - petal width in cm
        - class:
                - Iris-Setosa
                - Iris-Versicolour
                - Iris-Virginica
                
    :Summary Statistics:

    ============== ==== ==== ======= ===== ====================
                    Min  Max   Mean    SD   Class Correlation
    ============== ==== ==== ======= ===== ====================
    sepal length:   4.3  7.9   5.84   0.83    0.7826
    sepal width:    2.0  4.4   3.05   0.43   -0.4194
    petal length:   1.0  6.9   3.76   1.76    0.9490  (high!)
    petal width:    0.1  2.5   1.20   0.76    0.9565  (high!)
    ============== ==== ==== ======= ===== ====================

    :Missing Attribute Values: None
    :Class Distribution: 33.3% for each of 3 classes.
    :Creator: R.A. Fisher
    :Donor: Michael Marshall (MARSHALL%PLU@io.arc.nasa.gov)
    :Date: July, 1988

The famous Iris database, first used by Sir R.A. Fisher. The dataset is taken
from Fisher's paper. Note that it's the same as in R, but not as in the UCI
Machine Learning Repository, which has two wrong data points.

This is perhaps the best known database to be found in the
pattern recognition literature.  Fisher's paper is a classic in the field and
is referenced frequently to this day.  (See Duda & Hart, for example.)  The
data set contains 3 classes of 50 instances each, where each class refers to a
type of iris plant.  One class is linearly separable from the other 2; the
latter are NOT linearly separable from each other.

.. topic:: References

   - Fisher, R.A. "The use of multiple measurements in taxonomic problems"
     Annual Eugenics, 7, Part II, 179-188 (1936); also in "Contributions to
     Mathematical Statistics" (John Wiley, NY, 1950).
   - Duda, R.O., & Hart, P.E. (1973) Pattern Classification and Scene Analysis.
     (Q327.D83) John Wiley & Sons.  ISBN 0-471-22361-1.  See page 218.
   - Dasarathy, B.V. (1980) "Nosing Around the Neighborhood: A New System
     Structure and Classification Rule for Recognition in Partially Exposed
     Environments".  IEEE Transactions on Pattern Analysis and Machine
     Intelligence, Vol. PAMI-2, No. 1, 67-71.
   - Gates, G.W. (1972) "The Reduced Nearest Neighbor Rule".  IEEE Transactions
     on Information Theory, May 1972, 431-433.
   - See also: 1988 MLC Proceedings, 54-64.  Cheeseman et al"s AUTOCLASS II
     conceptual clustering system finds 3 classes in the data.
   - Many, many more ...
from sklearn.naive_bayes import GaussianNB
nb = GaussianNB()
nb.fit(X_train, y_train)
nb.score(X_test, y_test)
1.0
from sklearn.naive_bayes import CategoricalNB
nb = CategoricalNB()
nb.fit(X_train, y_train)
nb.score(X_test, y_test)
0.8947368421052632
from sklearn.naive_bayes import MultinomialNB
nb = MultinomialNB()
nb.fit(X_train, y_train)
nb.score(X_test, y_test)
0.5789473684210527
from sklearn.naive_bayes import ComplementNB
nb = ComplementNB()
nb.fit(X_train, y_train)
nb.score(X_test, y_test)
0.5789473684210527


2.5、多项式朴素贝叶斯代码实现

        

纯文本数据不能直接传入模型,需要进行特征抽取。

Chapter-10/10-6 多项式朴素贝叶斯代码实现.ipynb · 梗直哥/Machine-Learning - Gitee.com


3、优缺点和使用条件

朴素贝叶斯优点

        过程简单速度快。

        对多分类问题言样有效。

        分布独立假设下效果好。

        贝叶斯思想光芒万丈,先验打开“扇大门。(拓展 变分)

朴素贝叶斯缺点

        条件独立假设在现实中往往很难保证。

        只适用于简单比大小问题。

        如果个别类别概率为0,则预测失败。(平滑技术解决)。

        条件概率和先验分布计算复杂度较高,高维计算困难。

适用条件

        文本分类/垃圾文本过滤/情感判别。

        多分类实时预测。

        推荐系统、与 协同过滤 一起。

        复杂问题建模。

         


参考

 Machine-Learning: 《机器学习必修课:经典算法与Python实战》配套代码 - Gitee.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1324080.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Seata:打造行业首个分布式事务产品

作者:季敏,阿里云分布式事务产品负责人、Seata 开源项目创始人 微服务架构下数据一致性的挑战 微服务开发的痛点 在 2019 年,我们基于 Dubbo Ecosystem Meetup,收集了 2000 多份关于“在微服务架构,哪些核心问题是开…

JS - 闭包(Closure)

目录 1,什么是闭包2,创建闭包3,如何销毁闭包2.1,自动创建的闭包2.2,手动创建的闭包 4,闭包的特点和使用场景3.1,特点3.2,使用场景避免全局变量污染函数柯里化 5,闭包经典…

万兆网络之疑难杂症(一)

症状:电话线测线仪4芯全亮,插上话机不亮 由于装修方没有按要求布线,导致没有电话线用,因此分网线用于电话线 测试网线8芯全亮,分四芯用端子接电话线,再压电话线水晶头,再测水晶头全亮&#xf…

如何解决苹果应用商城审核拒绝的Guideline 2.1 - Information Needed问题

当你的应用程序在苹果应用商城审核过程中被拒绝时,苹果会向您发送一封邮件,其中提供了关于拒绝原因的详细信息。本文将指导您如何正确处理Guideline 2.1 - Information Needed问题,并提供解决方案,以确保您的应用程序能够通过审核…

WINDOWS(WIN11)通过IP添加网络打印机

点击添加设备 点击手动添加 使用IP地址或主机名添加打印机 选择TCP/IP设备,输入打印机地址 如果有正确驱动就安装,没有就取消。 通过手动设置添加本地打印机或网络打印机 使用现有的端口 根据打印机IP,选择标准端口。 成功! 到…

SpringBoot代码混淆与反混淆加密工具详解

目录 反编译 混淆 正文 一共就两步,无需源码,直接对ipa文件进行混淆加密 打开要处理的IPA文件 设置签名使用的证书和描述文件 开始ios ipa重签名 简单就是把代码跑一哈,然后我们的代码 .java文件 就被编译成了 .class 文件 反编译 就是…

队列(C语言版)

一.队列的概念及结构 队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有 先进先出 FIFO(First In First Out) 入队列:进行插入操作的一端称为 队尾 出队列:进行删除操作的一端称为…

关于我对归纳偏置(inductive bias)的概念和应用的详细总结

归纳偏置(inductive bias) 1.归纳偏置(inductive bias)的概念2.归纳偏置(inductive bias)的应用 1.归纳偏置(inductive bias)的概念 归纳偏置(inductive bias&#xff0…

如何在Ubuntu系统中安装VNC并结合内网穿透实现远程访问桌面

文章目录 前言1. ubuntu安装VNC2. 设置vnc开机启动3. windows 安装VNC viewer连接工具4. 内网穿透4.1 安装cpolar【支持使用一键脚本命令安装】4.2 创建隧道映射4.3 测试公网远程访问 5. 配置固定TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址5.3 测试…

2023 英特尔On技术创新大会直播 |让更多人了解AI魅力

2023 英特尔On技术创新大会直播 |让更多人了解AI魅力 前言:主要领域:人工智能:使用 OpenVINO™ 落地边缘端生成式 AIOpenVINO™学习总结: 新一代 AI PC计算平台:新一代至强平台:边云协同:先进技术&#xff…

前后端分离跨域问题的OPTIONS请求(预检请求)

本篇文章用于个人的问题记录 问题描述: 使用了springbootvue3做前后端分离,使用sa-token做登录认证 由于sa-token的前后端分离的登录认证需要在请求发起时自定义添加头部satoken 好那么问题来了,我请求的时候看我的请求头是存在satoken这个头部信息的 但我在springboot的拦截…

ansible在ubuntu下的安装和使用

ansible在ubuntu下的安装和使用 本文目录 ansible在ubuntu下的安装和使用安装和配置虚拟机配置安装和验证 简单使用创建 ansible cfg 和 inventory 文件创建剧本并执行使用 ansible vault 加密 安装和配置 中文文档:http://www.ansible.com.cn/docs/intro_installa…

操作系统快速刷题1

操作系统——内存管理之内存分配(分页,分段,段页) 分页存储概念清晰梳理(页面、页表、页表项、页面大小、页内地址等概念) 页框,页表,页表项,页面大小,页…

Hazelcast系列(十一):Map(三)备份、过期驱逐与内存格式

系列文章 Hazelcast系列(一):初识hazelcast Hazelcast系列(二):hazelcast集成(嵌入式) Hazelcast系列(三):hazelcast集成(服务器/客户端) Hazelcast系列(四):hazelcast管理中心 …

四川云汇优想教育咨询有限公司电商服务靠谱吗

随着抖音电商的兴起,越来越多的商家开始关注这一领域。四川云汇优想教育咨询有限公司作为一家专注于电商服务的企业,也受到了广泛的关注。那么,四川云汇优想教育咨询有限公司的抖音电商服务靠谱吗?下面我们将从多个方面进行深入剖…

OpenCV技术应用(9)— 视频的暂停播放和继续播放

前言:Hello大家好,我是小哥谈。本节课就手把手教大家如何控制视频的暂停播放和继续播放,希望大家学习之后能够有所收获~!🌈 目录 🚀1.技术介绍 🚀2.实现代码 🚀1.技术介绍…

Leetcode—96.不同的二叉搜索树【中等】

2023每日刷题&#xff08;六十四&#xff09; Leetcode—96.不同的二叉搜索树 算法思想 实现代码 class Solution { public:int numTrees(int n) {vector<int> G(n 1, 0);G[0] 1;G[1] 1;for(int i 2; i < n; i) {for(int j 1; j < i; j) {G[i] G[j - 1] * …

appium工具相关

一、appium基本介绍 1、appium 基本介绍 定义&#xff1a;appium 就是一款非常流行和好用的第三方工具&#xff0c;通过该工具我们可以配合 python 脚本实现 IOS / Android 多平台的APP 自动化测试。作用&#xff1a;在编写测试脚本的PC机和运行 APP 的真机或设备之前充当一个…

Linux Mint 21.3 代号为“Virginia”开启下载

Linux Mint 团队今天放出了 Linux Mint 21.3 Beta ISO 镜像&#xff0c;正式版计划在今年圣诞节发布。 支持 在实验性支持 Wayland 之外&#xff0c;Cinnamon 6.0 版 Linux Mint 21.3 Beta 镜像还带来了其它改进&#xff0c;Nemo 文件夹管理器右键菜单支持下载相关操作。 Cin…