机器学习 | 贝叶斯方法

        不同于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_irisiris = 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.7826sepal width:    2.0  4.4   3.05   0.43   -0.4194petal 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, 1988The 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 toMathematical 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 SystemStructure and Classification Rule for Recognition in Partially ExposedEnvironments".  IEEE Transactions on Pattern Analysis and MachineIntelligence, Vol. PAMI-2, No. 1, 67-71.- Gates, G.W. (1972) "The Reduced Nearest Neighbor Rule".  IEEE Transactionson Information Theory, May 1972, 431-433.- See also: 1988 MLC Proceedings, 54-64.  Cheeseman et al"s AUTOCLASS IIconceptual 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.hqwc.cn/news/288419.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

构建陪诊预约系统:技术实战指南

在医疗科技的飞速发展中,陪诊预约系统的应用为患者和陪诊人员提供了更为便捷和贴心的服务。本文将带领您通过技术实现,构建一个简单而实用的陪诊预约系统,以提升医疗服务的效率和用户体验。 技术栈选择 在开始之前,我们需要选择…

免费在线数据库表结构设计工具itbuilder

随着数据库规模日趋庞大,数据库设计者所面临的问题也越来越复杂,面对各个用户对数据库结构和内容的不同观点,权衡不同应用对于数据库组织和存取的不同需求,以及大量的结构信息和数据之间的复杂关系,面对这种设计环境&a…

【Linux】ip命令使用

ip命令 用于管理与配置网络接口和路由表。 ip命令的安装 ip 命令来自 iproute2 软件包,在 CentOS 7 中默认已安装。 yum install -y iproute 语法 ip [ OPTIONS ] OBJECT { COMMAND | help }ip [ -force ] -batch filename选项及作用 执行令 : ip …

SpringBoot知识点回顾01

Spring是为了解决企业级应用开发的复杂性而创建的,简化开发。 Spring是如何简化Java开发的 为了降低Java开发的复杂性,Spring采用了以下4种关键策略: 1、基于POJO的轻量级和最小侵入性编程,所有东西都是bean; 2、通…

想用Facebook高效引流拓客?快来Get这些技巧!

在跨境电商领域,Facebook 是一个不能错过的重要平台,它能为卖家提供巨大的流量池。但是,如何吸引潜在客户却不是易事。为了高效地引流拓客,卖家需要了解一些技巧。本篇文章东哥将分享 Facebook 的引流拓客技巧,帮助卖家…

Dokit 开源库:简化 Android 应用开发的利器

Dokit 开源库:简化 Android 应用开发的利器 一、Dokit 简介二、Dokit 功能三、Dokit 使用3.1 DoKit Android 最新版本3.2 DoKit Android 接入步骤 四、总结 在 Android 应用开发过程中,我们经常需要处理调试、性能优化和用户体验等方面的问题。然而&…

DDD领域驱动设计(二)

软件系统复杂性的应对 解决复杂和大规模软件的武器可以粗略的归位三种:抽象 分治和知识 抽象: 使用抽象能够精简问题空间,而且问题越小越容易理解。比如你去一个地方 一开始的时候并不需要确定用什么方式到达。分治: 类似算法里面的dp用的就是分治的想法。分割后的…

动态规划--第N个泰波那契数

本题题目链接备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/n-th-tribonacci-number/ 个人主页:Lei宝啊 愿所有美好如期而遇 动态规划&#…

Elasticsearch的批量bulk 提交 写入的方式会有顺序问题吗?

Elasticsearch的分布式特性可能会导致写入操作的执行顺序与提交顺序稍有不同。在分布式环境中,Elasticsearch将数据分散到不同的节点上进行存储和处理,因此写入操作的执行顺序可能会受到网络延迟、负载均衡等因素的影响。 根源在于ES的分布式架构。如上图所示,客户端的命令首…

蓝牙物联网开发与应用:五大核心应用场景!

蓝牙技术在物联网中的五大核心应用场景 1、智能家居 通过蓝牙连接智能家居设备,如智能灯泡、智能插座、智能恒温器等,可以实现远程控制、语音控制等功能,提高家居的智能化程度和便利性。 2、智能穿戴设备 蓝牙技术可以连接智能手表、智能手…

Swagger升级指南:Swagger2与Swagger3注解差异揭秘

在API开发的世界里,Swagger已经成为了一个不可或缺的工具,它让API的文档化和前后端的协作变得前所未有地简单。随着Swagger的进化,我们迎来了Swagger3,也被称为OpenAPI Specification 3.0。本篇博客将带大家深入了解Swagger2和Swa…

美国联邦机动车安全标准-FMVSS

FMVSS标准介绍: FMVSS是美国《联邦机动车安全标准》,由美国运输部下属的国家公路交通安全管理局(简称NHTSA)具体负责制定并实施。是美国联邦政府针对机动车制定的安全标准,旨在提高机动车的安全性能,减少交通事故中的人员伤亡。F…