文档章节

分类算法---朴素贝叶斯算法

满小茂
 满小茂
发布于 2017/07/14 00:25
字数 1323
阅读 131
收藏 1
点赞 0
评论 0

1.数据特征类型    

朴素贝叶斯的算法根据数据的类型可以分为两类,一类是样本属性特征值是离散型,第二类是属性特征值为连续型,下面我会基于两类模型来介绍这个算法。

       1.属性是离散型,类的先验概率可以通过训练各类样本出现的次数来估计

       2.属性是连续型,有两种方法,将连续属性范围值划分为各个离散区间,这种方法不太好控制区间的大小,不太实用。第二种方法是,可以假设连续变量服从某种概率分布,然后使用训练数据估计分布的参数,高斯分布通常被用来表示连续属性的类条件概率分布。

        高斯分布有两个参数,均值和方差.

         均值计算公式

                                                  (公式1)

          方差计算公式

                                               (公式2)

        高斯分布概率密度函数 

                                               (公式3)

 

 2.贝叶斯公式原型

                   (公式4)

                  解释  d是每个X的属性个数,[x1,x2,x3,x4.....xd]每个属性,P(X)对于每个后验概率来说是固定不变的,所以,可以不计。

                  X实体属于Y分类的判断条件是根据Max[P(Yi|X)]来判断X实体属于哪个分类Y。

3.数据离散型贝叶斯使用例子

                    例子:概率模型:评分数据

评分数据

  物品1 物品2 物品3 物品4 物品5
Alice 1 3 3 2
用户1 2 4 2 2 4
用户2 1 3 3 5 1
用户3 4 5 2 3 3
用户4 1 1 5 2 1

根据用户1到用户4的用户数据,来预测Alice对物品5的评分,这里可以使用贝叶斯模型,分别计算Alice对物品5评分为1,2,3,4,5的概率,其中概率最大的,则是Alice对物品5评分的最大可能性。 

       P(物品5=1|Alice)=  P(Alice | 物品5=1) x P(物品5=1)  = P(物品1=1 | 物品5=1) * P(物品2=3 | 物品5=1)* P(物品3=3 | 物品5=1)*P(物品4=2 | 物品5=1) * P(物品5=1)

                = 1*1/2*1/2*1/2*1/2

       P(物品5=2|Alice)=  P(Alice | 物品5=2) x P(物品5=2)  = P(物品1=1 | 物品5=2) * P(物品2=3 | 物品5=2)* P(物品3=3 | 物品5=2)*P(物品4=2 | 物品5=2) * P(物品5=2)

               = 0*0*0*0*0

          ......................................

其他的物品以此类推,可以算出P(物品5=1|Alice)最大,则推测Alice用户对物品5的评分为1。

此例子是摘自《推荐系统》书中的一个例子

上面列子同理可用于文本分类模型中。用户看做文章,物品5评分看做文章的分类。同理可求出文章的所属的分类

 

4.数据连续型贝叶斯使用例子

      判断车厘子和樱桃

车厘子与樱桃的鲜红值/直径、质量信息例子

水果类型 鲜红值 直径 质量
车厘子 0.81 1.02 8.85
车厘子 0.82 0.98 8.67
车厘子 0.78 0.99 8.75
车厘子 0.79 1.01 8.80
樱桃 0.56 0.85 7.32
樱桃 0.58 0.86 7.33
樱桃 0.59 0.83 7.29
樱桃 0.57 0.84 7.31

根据上表的数据,预测下表未知实体是樱桃还是车厘子

水果类型 鲜红值 直径 质量
未知 0.80 0.86 8

 

假设训练样本的特征满足高斯分布,则使用上面的公式1,公式2计算出均值和方差

根据计算公式,需要求出两种类型的水果的各个属性的均值和方差,计算结果如下:

各个属性的均值和方差

类型 鲜红值-均值 鲜红值-方差 直径-均值 直径-方差 质量-均值 质量-方差
车厘子 0.8 0.018257419 1 0.018257419 8.7675 0.076757193
樱桃 0.575 0.012909944 0.845 0.012909944 7.3125 0.0170778251

预测未知实体是车厘子还是樱桃,需要计算未知实体的属于车厘子和属于樱桃的后验概率谁大。

p(车厘子|unkown)=P(车厘子)*p(鲜红值|车厘子)*p(直径|车厘子)*p(质量|车厘子) / evidence

p(樱桃|unkown)=P(樱桃)*p(鲜红值|樱桃)*p(直径|樱桃)*p(质量|樱桃) / evidence

 

默认 P(车厘子)P(樱桃)为1/2。evidence为常数,通常用来对各类的后验概率之和进行归一化。

evidence=P(车厘子)*p(鲜红值|车厘子)*p(直径|车厘子)*p(质量|车厘子)+P(樱桃)*p(鲜红值|樱桃)*p(直径|樱桃)*p(质量|樱桃);

概率密度求解

  p(鲜红值|樱桃)可通过 公式3 来计算,均值和方差,分别带入 樱桃鲜红值均值和方差,求出高斯分布概率密度,其他属性,以此类推。

最后根据计算结果来看,未知实体属于樱桃还是车厘子的概率大。

 

spark demo

https://github.com/apache/spark/tree/master/examples/src/main/java/org/apache/spark/examples

朴素贝叶斯Spark MLib实现

https://github.com/apache/spark/blob/master/examples/src/main/java/org/apache/spark/examples/ml/JavaNaiveBayesExample.java

© 著作权归作者所有

共有 人打赏支持
满小茂
粉丝 65
博文 108
码字总数 124981
作品 0
成都
程序员
统计学习方法 | 朴素贝叶斯法

01 分类方法 之前我们学习了一种分类方法——K近邻法(KNN),今天我们再学习一种更常用的分类方法 朴素贝叶斯法 这里,我们先区分一下“分类”和“聚类” 分类的目的是学会一个分类函数或分类...

邓莎 ⋅ 05/23 ⋅ 0

MADlib——基于SQL的数据挖掘解决方案(22)——分类之朴素贝叶斯

一、贝叶斯分类简介 1. 贝叶斯分类原理 贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。贝叶斯分类是一种利用概率统计知识进行分类的算法,其分类原理...

wzy0623 ⋅ 03/06 ⋅ 0

ML梳理01 | 贝叶斯分类算法的前世今生

开篇.jpg 关键字:贝叶斯、概率、贝叶斯分类算法、应用 本文收集整理的相关知识点大多来自网络,如有不恰当之处,还望指正。 什么是概率? 什么是概率这个问题似乎人人都觉得自己知道,却有很...

RookieDay ⋅ 01/31 ⋅ 0

浅谈机器学习分类算法

目前随着人工智能的发展,机器学习的应用领域日益宽泛,各种机器学习适应不同的应用场景,而机器学习差别的关键点之一就在于所使用算法的不同,今天就为大家介绍 4 种主要的分类算法。 朴素贝...

又拍云 ⋅ 2017/12/19 ⋅ 0

数据挖掘系列-朴素贝叶斯分类算法原理与实践

一个简单的例子   朴素贝叶斯算法是一个典型的统计学习方法,主要理论基础就是一个贝叶斯公式,贝叶斯公式的基本定义如下:   这个公式虽然看上去简单,但它却能总结历史,预知未来。公式...

xingfutianshi1018 ⋅ 03/27 ⋅ 0

Udacity机器学习入门笔记——2朴素贝叶斯-2

BayesRule 贝叶斯规则: holy grail of probabilistic inference ---that’scalled Bayes rule 概率论的 圣杯---贝叶斯规则 以一个癌症的例子进行解释cancer example: 假如有一种癌症,它发生...

xjj19901127 ⋅ 03/17 ⋅ 0

机器学习 西瓜书 Day07 贝叶斯分类器(上)

p147- p156 今天来看第七章。同时,今天心情不错:) 2018.5.16 凌晨0:51 不行了不行了,这一章感觉比SVM还烧脑,困了困了:( 所以这一章分两天看吧。 明天补上今天少看的6页 第七章 贝叶斯分...

皇家马德里主教练齐达内 ⋅ 05/16 ⋅ 0

Python · 朴素贝叶斯(三)· GaussianNB

(这里是本章会用到的 GitHub 地址) (话说居然一个月没写了啊……)(然而你一个月没写之后写的东西还这么水对得起观众老爷吗) (刚发现算法叙述居然在这篇文章中说过了…… ( σ'ω')σ)...

射命丸咲 ⋅ 2017/04/20 ⋅ 0

统计学习方法总结

统计 本文总结了常用的统计学习方法,包括模型定义,原理,适用场景,模型参数学习方法等。统计学习是根据一部分标记好的实例数据,推断待分类实例的类别,所以并不知道数据的真实分布函数。...

JackMeGo ⋅ 03/02 ⋅ 0

Python · 朴素贝叶斯(四)· MergedNB

(这里是本章会用到的GitHub 地址) (刚发现推广已经在这篇文章中说过了……那么本章其实就已经是朴素贝叶斯系列的最后一章了 ( σ'ω')σ) (刚发现算法叙述居然也说过了…… ( σ'ω')σ...

射命丸咲 ⋅ 2017/04/20 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

CENTOS7防火墙命令记录

安装Firewall命令: yum install firewalld firewalld-config Firewall开启常见端口命令: firewall-cmd --zone=public --add-port=80/tcp --permanent firewall-cmd --zone=public --add-po......

cavion ⋅ 今天 ⋅ 0

【C++】【STL】利用chromo来测量程序运行时间与日志时间打印精确到微秒

直接上代码吧,没啥好说的。头疼。 #include <iostream>#include <string>#include <ctime>#include <sstream>#include <iomanip>#include <thread>#include <chrono>using ......

muqiusangyang ⋅ 今天 ⋅ 0

Mac环境下svn的使用

在Windows环境中,我们一般使用TortoiseSVN来搭建svn环境。在Mac环境下,由于Mac自带了svn的服务器端和客户端功能,所以我们可以在不装任何第三方软件的前提下使用svn功能,不过还需做一下简...

故久呵呵 ⋅ 今天 ⋅ 0

破解公司回应苹果“USB限制模式”:已攻破

本周四,苹果发表声明称 iOS 中加入了一项名为“USB 限制模式”的功能,可以防止 iPhone 在连接其他设备的时候被破解,并且强调这一功能并不是针对 FBI 等执法部门,为的是保护用户数据安全。...

六库科技 ⋅ 今天 ⋅ 0

MyBtais整合Spring Boot整合,TypeHandler对枚举类(enum)处理

概要 问题描述 我想用枚举类来表示用户当前状态,枚举类由 code 和 msg 组成,但我只想把 code 保存到数据库,查询处理,能知道用户当前状态,这应该怎么做呢?在 Spring 整合MyBatis 的时候...

Wenyi_Feng ⋅ 今天 ⋅ 0

synchronized与Lock的区别

# <center>王梦龙的读书笔记第一篇</center> ## <center>-synchronized与Lock的区别</centre> ###一、从使用场景来说 + synchronized 是能够注释代码块、类、方法但是它的加锁是和解锁使用一......

我不想加班 ⋅ 今天 ⋅ 0

VConsole的使用

手机端控制台打印输出,方便bug的排查。 首先需要引入vconsole.min.js 文件,然后在文件中创造实例。就能直接使用了。 var vConsole = new VConsole(); vConsole的文件地址...

大美琴 ⋅ 今天 ⋅ 0

Java NIO之字符集

1 字符集和编解码的概念 首先,解释一下什么是字符集。顾名思义,就是字符的集合。它的初衷是把现实世界的符号映射为计算机可以理解的字节。比如我创造一个字符集,叫做sex字符集,就包含两个...

士别三日 ⋅ 今天 ⋅ 0

Spring Bean基础

1、Bean之间引用 <!--如果Bean配置在同一个XML文件中,使用local引用--><ref bean="someBean"/><!--如果Bean配置在不同的XML文件中,使用ref引用--><ref local="someBean"/> 其实两种......

霍淇滨 ⋅ 今天 ⋅ 0

05、基于Consul+Upsync+Nginx实现动态负载均衡

1、Consul环境搭建 下载consul_0.7.5_linux_amd64.zip到/usr/local/src目录 cd /usr/local/srcwget https://releases.hashicorp.com/consul/0.7.5/consul_0.7.5_linux_amd64.zip 解压consu......

北岩 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部