贝叶斯分类算法

机器学习——朴素贝叶斯

家住魔仙堡 提交于 2020-01-30 21:59:43
参考 : https://cuijiahua.com/blog/2017/11/ml_4_bayes_1.html https://cuijiahua.com/blog/2017/11/ml_5_bayes_2.html https://www.jianshu.com/p/5953923f43f0 一、朴素贝叶斯简介 1.1、朴素贝叶斯算法简介 朴素贝叶斯算法(Naive Bayesian algorithm) ,朴素贝叶斯方法是在贝叶斯算法的基础上进行了相应的简化, 即假定给定目标值时属性之间相互条件独立 。 1.2 贝叶斯定理 贝叶斯决策理论:选择具有高概率的发生情况为最终判断。 根据已知的基础条件概率和部分概率,推断出在某种条件下下的概率。 1.3、条件概率推断 全部事件的概率是 S A 事件的概率是 A B 事件的概率是 B A 的对立事件概率是 A’ A 与 B 共同事件概率是 A∩B 说明:A 与 A‘ 对立且共同构成 S。 我们可以推断出在 B 条件下发生 A 事件的概率,然后一步步把 A∩B 改变成另一个表示 这就是条件概率的计算公式。 如果考虑到下面的全概率公式和上面图片只考虑 A 和 A‘ 条件概率公式可改为: 1.4、全概率推断 若事件 A 1 、 A 2 、……A n 构成一个完备事件组即 且都有正概率,那么对于任意一个事件A,有如下全概率公式: 1.5

朴素贝叶斯学习笔记

社会主义新天地 提交于 2020-01-28 07:26:23
本文为学习《统计学习方法》、《机器学习实战》朴素贝叶斯相关的笔记。 朴素贝叶斯,是基于 贝叶斯定理 和 特征条件独立假设 的分类方法。 特征条件独立假设是指:给定一个实例的类标签,实例中的每个属性的出现都独立于实例中其他属性的出现。这也是算法被称为朴素贝叶斯的原因。 公式推导 我们有数据集 ,其中输入为特征向量 ,输出为类标记 。朴素贝叶斯要通过数据集学习先验概率和条件概率。 先验概率: 这里代表数据集中的每个类别的概率 条件概率: 这里代表在类别为 时,输入的特征向量中的每一个特征值为对应的 的概率。 对条件概率分布作条件独立性的假设,即特征之间不相关,可以得出 在分类时,对于给定的 ,通过学习到的模型计算得到后验概率 ,将后验概率最大的类作为 的类输出。后验概率计算根据贝叶斯定理进行 : 将 上上式代入上式,可得 ,代表在后验概率最大时对应的 值。 一个例子 这个例子来自于《机器学习实战》,是根据词条中词汇的出现判断其是否是侮辱性词条。 我们构造以下数据: def loadDataSet(): postingList=[['my', 'dog', 'has', 'flea', 'problems', 'help', 'please'], ['maybe', 'not', 'take', 'him', 'to', 'dog', 'park', 'stupid'], ['my',

task5 贝叶斯

爱⌒轻易说出口 提交于 2020-01-26 08:33:15
知识点梳理¶ 相关概念(生成模型、判别模型) 先验概率、条件概率 贝叶斯决策理论 贝叶斯定理公式 极值问题情况下的每个类的分类概率 下溢问题如何解决 零概率问题如何解决? 优缺点 sklearn 自带代码块 from sklearn . naive_bayes import GaussianNB from sklearn . datasets import load_iris import pandas as pd from sklearn . model_selection import train_test_split iris = load_iris ( ) X_train , X_test , y_train , y_test = train_test_split ( iris . data , iris . target , test_size = 0.2 ) clf = GaussianNB ( ) . fit ( X_train , y_train ) print ( "Classifier Score:" , clf . score ( X_test , y_test ) ) 相关概念 生成模型:在概率统计理论中, 生成模型是指能够随机生成观测数据的模型,尤其是在给定某些隐含参数的条件下。它给观测值和标注数据序列指定一个联合概率分布。在机器学习中

朴素贝叶斯分类算法

北城余情 提交于 2020-01-25 09:20:37
1.理解分类与监督学习、聚类与无监督学习。 简述分类与聚类的联系与区别。 (1)分类:给数据贴标签,通过分析已有的数据特征,对数据分成几类,已知分类结果。然后引入新数据对其归类。分类可以提高认知效率,较低认知成本。 (2)聚类:不知分类结果,通过数据一定的相似性,把那些相似的数据聚集在一起。 简述什么是监督学习与无监督学习。 监督学习: (1)每个实例都是由一组特征和一个类别结果。 (2)用有标注的数据训练模型,并产生一个推断的功能。 (3)对于新的实例,可以用于映射出该实例的类别. 无监督学习: (1)我们只知道一些特征,并不知道答案 (2)但不同实例具有一定的相似性 (3)把那些相似的聚集在一起 2.朴素贝叶斯分类算法 实例 利用关于心脏情患者的临床数据集,建立朴素贝叶斯分类模型。 有六个分类变量(分类因子):性别,年龄、KILLP评分、饮酒、吸烟、住院天数 目标分类变量疾病:–心梗–不稳定性心绞痛 新的实例:–(性别=‘男’,年龄<70, KILLP=‘I',饮酒=‘是’,吸烟≈‘是”,住院天数<7) 最可能是哪个疾病? 上传演算过程。 来源: https://www.cnblogs.com/nuan-z/p/9979463.html

监督学习

早过忘川 提交于 2020-01-22 21:08:15
1 监督学习   利用一组带标签的数据, 学习 从输入到输出的映射 , 然后将这种映射关系应用到未知数据, 达到 分类 或者 回归 的目的   (1) 分类: 当输出是离散的, 学习任务为分类任务          输入: 一组有标签的训练数据(也叫观察和评估), 标签 表明了这些数据(观察)的所属类别, 图中"猫"和"狗"就是标签     输出: 分类模型根据这些训练数据, 训练自己的模型参数, 学习出一个适合这组数据的分类器, 当有新数据(非训练数据)需要进行类别判断, 就可以将这组数据作为输入送给学习好的 分类器 进行判断(得到标签)     训练集: 训练模型已经标注的数据, 用来建立模型发现规律     测试集: 已标注的数据, 只不过把标注隐藏了, 再送给训练好的模型, 比对结果与原来的标注, 评判该模型的学习能力       一般来说, 获得了一组标注好的数据, 70%当做训练集, 30%当做测试集 , 另外还有交叉验证法, 自助法来评估学习模型     评价标准       1) 准确率         所有预测对的         把正类预测成正类(TP)         把负类预测成负类(TN)         准确率 = (TP+TN)/总数量       2) 精确率         以二分类为例         预测为正的样本是真的正样本        

机器学习task06_朴素贝叶斯

旧街凉风 提交于 2020-01-21 12:30:32
贝叶斯决策论(Bayesian decision theory) 是概率框架下实施决策的基本方法。对分类任务来说,在所有相关概率都已知的理想情形下,贝叶斯决策论考虑如何基于这些概率和误判损失来选择最优的类别标记。 具体来说,若我们决策的目标是最小化分类错误率,贝叶斯最优分类器要对每个样本 x,选择能使后验概率 P( c | x )最大的类别 c 标记。在现实任务中后验概率通常难以直接获得。从这个角度来说,机器学习所要实现的是基于有限的训练样本集尽可能准确地估计出后验概率 P( c | x )。大体来说,主要有两种策略:给定x,可通过直接建模P( c | x )来预测c,这样得到的是“判别式模型”,例如,决策树、BP神经网络、支持向量机等等;也可先对联合概率分布P( x,c )建模,然后在由此获得P( c | x ),这样得到的是“生成式模型” 朴素贝叶斯分类器 基于贝叶斯公式来估计后验概率P( c | x )的主要困难在于:类条件概率P( x | c )是所有属性上的联合概率,难以从有限的训练样本直接估计而得。因此朴素贝叶斯分类器采用了“属性条件独立性假设”:对已知类别,假设所有属性相互独立。也就是说,假设每个属性独立的对分类结果发生影响。 sklearn接口 from sklearn.naive_bayes import GaussianNB from sklearn

机器学习——贝叶斯和朴素贝叶斯

China☆狼群 提交于 2020-01-19 11:39:52
贝叶斯判定准则: 最小化总体风险,只需在每个样本上选择能使条件风险R(c|x)最小的类别标记 一、极大似然估计 1.估计类的常用策略 :先假定其具有某种确定的概率分布形式,再基于训练样本对概率分布的参数进行估计。即概率模型的训练过程就是参数估计过程。 2.参数估计两大学派 :频率主义学派和贝叶斯学派。 (1)频率主义 :参数虽然未知,但却是客观存在的固定值,因此,可通过优化似然函数等准则来确定参数值(最大似然)。 (2)贝叶斯学派 :参数是未观察到的随机变量,本身也可以有分布,因此,可假定参数服从一个先验分布,然后基于观察到的数据来计算参数的后验分布。 二、朴素贝叶斯 (1)思想: 对于给定的待分类项x,通过学习到的模型计算后验概率分布,即:在此项出现的条件下各个目标类别出现的概率,将后验概率最大的类作为x所属的类别。后验概率根据贝叶斯定理计算。 (2)关键: 为避免贝叶斯定理求解时面临的组合爆炸、样本稀疏问题,引入了条件独立性假设。 即假设各个特征之间相互独立 (3)工作原理: 贝叶斯公式:    对条件概率做了条件独立假设,公式为: (4)工作流程: 1)准备阶段: 确定特征属性,并对每个特征属性进行适当划分,然后由人工对一部分待分类项进行分类,形成训练样本。 2)训练阶段: 对每个类别计算在样本中的出现频率p(y),并且计算每个特征属性划分对每个类别的条件概率p(yi | x

Spark.ml - -朴素贝叶斯Naive Bayes

[亡魂溺海] 提交于 2020-01-19 05:12:47
前言 朴素贝叶斯分类器是低方差高偏差的分类器,假设各个特征之间存在条件独立性假设:对于给定的类别,所有的特征相互独立。显然,这个假设把问题想的太简单了,但朴素贝叶斯在文本分类任务上确实拥有很好的效果。 朴素贝叶斯模型是一组非常简单快速的分类算法,通常适用于维度非常高的数据集。因为运行速度快,而且可调参数少,因此非常适合为分类问题提供快速粗糙的基本方案。之所以称为“朴素”或“朴素贝叶斯”,是因为如果对每种标签的生成模型进行非常简单的假设,就能找到每种类型生成模型的近似解,然后就可以使用贝叶斯分类。朴素贝叶斯的思想基础是:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别。 朴素贝叶斯算法包括 高斯NB (假设每个标签的数据都服从简单的高斯分布,适用于特征是 连续变量 )、 多项式NB (假设特征是由一个简单多项式分布生成的,适用于 离散特征 的情况)和 伯努利NB (假设特征服从伯努利分布,适用于 离散特征 的情况。不同于多项式贝叶斯模型的是, 伯努利模型中每个特征的取值只能是1和0 ,以文本分类为例,某个单词在文档中出现过,则其特征值为1,否则为0) 特点 优点 训练和预测的速度非常快。 直接使用概率预测。 通常很容易解释。 可调参数(如果有的话)非常少。 适用于 假设分布函数与数据匹配(实际中很少见)。 各种类型的区分度很高

概率、统计、最大似然估计、最大后验估计、贝叶斯定理、朴素贝叶斯、贝叶斯网络

匆匆过客 提交于 2020-01-18 02:17:58
这里写自定义目录标题 概率和统计是一个东西吗? 概率函数与似然函数 最大似然估计(MLE) 最大后验概率估计 最大后验估计的例子 贝叶斯派观点 VS 频率派观点 贝叶斯定理 朴素贝叶斯分类器 朴素贝叶斯分类器实例 贝叶斯网络 贝叶斯网络的结构形式 因子图 从贝叶斯网络来观察朴素贝叶斯 概率和统计是一个东西吗? 概率(probabilty)和统计(statistics)看似两个相近的概念,其实研究的问题刚好相反。 概率研究的问题是,已知一个模型和参数,怎么去预测这个模型产生的结果的特性(例如均值,方差,协方差等等)。 举个例子,我想研究怎么养猪(模型是猪),我选好了想养的品种、喂养方式、猪棚的设计等等(选择参数),我想知道我养出来的猪大概能有多肥,肉质怎么样(预测结果)。 统计是,有一堆数据,要利用这堆数据去预测模型和参数。 仍以猪为例。现在我买到了一堆肉,通过观察和判断,我确定这是猪肉(这就确定了模型。在实际研究中,也是通过观察数据推测模型是/像高斯分布的、指数分布的、拉普拉斯分布的等等),然后,可以进一步研究,判定这猪的品种、这是圈养猪还是跑山猪还是网易猪,等等(推测模型参数)。 一句话总结: 概率是已知模型和参数,推数据。统计是已知数据,推模型和参数。 显然, 本文解释的MLE(最大似然估计)和MAP(最大后验估计)都是统计领域的问题。它们都是用来推测参数的方法(不是推测模型

从负无穷学习机器学习(三)朴素贝叶斯

别来无恙 提交于 2019-12-28 19:46:20
一、朴素贝叶斯介绍 朴素贝叶斯是一种基于贝叶斯理论的有效监督学习算法,之所以称之为”朴素“,是因为它是基于样本特征之间互相独立的”朴素”假设。 正因如此,不需要考虑样本特征之间的关系,贝叶斯分类器的效率非常高。 朴素贝叶斯有三种方法: 伯努利朴素贝叶斯(Bernoulli Naive Bayes) 高斯贝叶斯(Gaussian Naive Bayes) 多项式贝叶斯(Multinomial Naive Bayes) # 导入numpy import numpy as np # 将X,y赋值为np数组 导入数据 X = np . array ( [ [ 0 , 1 , 0 , 1 ] , [ 1 , 1 , 1 , 0 ] , [ 0 , 1 , 1 , 0 ] , [ 0 , 0 , 0 , 1 ] , [ 0 , 1 , 1 , 0 ] , [ 0 , 1 , 0 , 1 ] , [ 1 , 0 , 0 , 1 ] ] ) y = np . array ( [ 0 , 1 , 1 , 0 , 1 , 0 , 0 ] ) # 对不同分类计算每个特征为1的数量 counts = { } for label in np . unique ( y ) : counts [ label ] = X [ y == label ] . sum ( axis = 0 ) # 打印计数结果