朴素贝叶斯分类器详解和一般的贝叶斯分类器有什么区别

分类算法之贝叶斯(Bayes)分类器
我的图书馆
分类算法之贝叶斯(Bayes)分类器
摘要:旁听了清华大学王建勇老师的 数据挖掘:理论与算法 的课,讲的还是挺细的,好记性不如烂笔头,在此记录自己的学习内容,方便以后复习。 & 一:贝叶斯分类器简介 1)贝叶斯分类器是一种基于统计的分类器,它根据给定样本属于某一个具体类的概率来对其进行分类。 2)贝叶斯分类器的理论基础是贝叶斯理论。 3)贝叶斯分类器的一种简单形式是朴素贝叶斯分类器,跟随机森林、神经网络等分类器都有可比的性能。 4)贝叶斯分类器是一种增量型的分类器。 & 二:贝叶斯理论 第一次接触贝叶斯还是本科学概率论的时候,那时候也就只知道做题目,没想到现在还能够在工作和学习中用到它,先复习下相关的基础概率公式吧: 1) 乘法定理:设P(B)&0,则有P(AB) = P(A|B)P(B). 2) 全概率公式:设试验E的样本空间为S,A为E的事件,若事件组B1,B2,…,Bn为S的一个划分,且P(Bi)& 0(i=1,2,…,n),则有 P(A) = P(A|B1)P(B1) + P(A|B2)P(B2) + …+ P(A|Bn)P(Bn). &&& 注:在很多事件问题中P(A)不容易算出来,但是可以很容易的找到S的一个划分:B1,B2,…,Bn,并且P(Bi)和P(A|Bi)为已知或者容易算出,那么就可以根据上式求出P(A). 3)贝叶斯公式:设试验E的样本空间为S,A为E的事件,B1,B2…,Bn为S的一个划分,且P(A)&0,P(Bi)&0(i=1,2,…,n),则有 P(Bi|A) = P(ABi)/P(A) = P(A|Bi)P(Bi)/∑P(A|Bi)P(Bi),i=1,2,…n. 举例:
X是一个待分类的数据元组,由n个属性描述;H是一个假设,例如X属于类C。对于分类问题,我们想计算出概率P(H|X):即已知元组X的每个元素对应的属性值,求出X属于C类的概率。 例如:X的属性值为:age=25,income=$5000,H对应的假设是:X会买电脑。 P(H|X):意思是在已知某客户信息age=25,income=$5000的条件下,该客户会买电脑的概率。 P(H):意思是对于任何给定的客户信息,该客户会购买电脑的概率。 P(X|H):意思是已知客户会买电脑,那么该客户的age=25,income=$5000的概率。 P(X):意思是在我们所有的客户信息集合中,客户的age=25,income=$5000的概率。
所以:P(H|X) = P(X|H)P(H)/P(X)
三:朴素贝叶斯分类器 朴素贝叶斯分类器的工作流程如下: 1:设D为样本训练集;每一个样本X是由n个属性值组成的,X=(x1,x2,…xn);对应的属性集为A1,A2,A3…An; 2: 假设有m个类标签:C1,C2,…Cm.对于某待分类元X,朴素分类器会把P(Ci|X)(i=1,2,…m)值最大的那个类标签Ci认为是X的类别,即朴素贝叶斯分类器预测出X属于类Ci,当且仅当P(Ci|X)&P(Cj|X) (1≤j≤m,j≠i).因此我们的目标就是找出P(Ci|X)中的最大值。
P(Ci|X) = P(X|Ci)P(Ci)/P(X)
对于给定的样本集,P(X)是常数,跟某个具体的类标签没有关联,所以要想找出P(Ci|X)的最大值也就是找出P(X|Ci)P(Ci)的最大值: 如果我们不知道P(Ci)的值,我们可以假设P(C1)=P(C2)=…=P(Cm),当然P(Ci)可以通过估计值来代替,P(Ci)=|Ci, D| /|D| 其中|D|为样本总数,|Ci,D|为D中属于类Ci的样本数。 3:如果n的值特别大,也就是说样本元有很多属性,那么对于P(X|Ci)的计算会相当复杂。所以在朴素贝叶斯中进行了一个假设:即对于样本元中的每个属性,它们都互相条件独立。 所以有:
对于P(xi|Ci)我们可以从训练集中算出来,其中xi代表在某个具体样本中对应属性Ai的值。 P(xi|Ci)的计算分为两种情况: 1):如果属性Ai的值是分类变量(离散变量),那么P(xi|Ci)等于训练样本空间|D|中,属于类Ci并且对应属性Ai的值等于xi的数目除以样本空间中属于类Ci的样本数目。 2):如果Ai的值是连续型的变量,则P(xi|Ci)的计算会根据高斯分布来计算,设其中均值为μ,标准方差为σ:
4:为了预测X所属的类标签,我们根据前面的步骤可以算出每一个类标签Ci对应的P(X|Ci)P(Ci)值,当某一个类标签Ci有:
P(X|Ci)P(Ci)&P(X|Cj)P(Cj) 对于任意j:&& 1≤j≤m,j≠i 则我们认为X属于类标签Ci.
& 四:具体例子分析 这里我们还是用
中的样本数据来进行举例: 样本空间D如下表所示:其中 |D|=14.
属性集合为A{age,come,student,credit_rating} 对应的属性个数n=4. 分类属性为:buys_computer,值为{yes,no}& 即C1:buys_computer =C2: buys_computer = 分类标签个数 m = 2; 有一待分类的数据元X={age&=30,income=medium,student=yes,credit_rating=fail}. 则根据朴素贝叶斯分类器的工作流程我们可以计算出: P(Ci):
P(buys_computer = “yes”) = 9/14 = 0.643 P(buys_computer = “no”) = 5/14= 0.357 P(xi|Ci): P(age = “&=30” | buys_computer = “yes”) = 2/9 = 0.222 P(age = “&= 30” | buys_computer = “no”) = 3/5 = 0.6 P(income = “medium” | buys_computer = “yes”) = 4/9 = 0.444 P(income = “medium” | buys_computer = “no”) = 2/5 = 0.4 P(student = “yes” | buys_computer = “yes) = 6/9 = 0.667 P(student = “yes” | buys_computer = “no”) = 1/5 = 0.2 P(credit_rating = “fair” | buys_computer = “yes”) = 6/9 = 0.667 P(credit_rating = “fair” | buys_computer = “no”) = 2/5 = 0.4 P(X|Ci): P(X|buys_computer = “yes”) = 0.222 x 0.444 x 0.667 x 0.667 = 0.044 P(X|buys_computer = “no”) = 0.6 x 0.4 x 0.2 x 0.4 = 0.019 P(X|Ci)*P(Ci) : P(X|buys_computer = “yes”) * P(buys_computer = “yes”) = 0.028 P(X|buys_computer = “no”) * P(buys_computer = “no”) = 0.007 因为0.28&0.007所以X属于类:buys_computer = “yes”.
五:朴素贝叶斯存在的问题 1:零概率问题 在上述的例子中假设在样本数据集中income = medium的样本数为0,那么P(income = “medium” | buys_computer = “yes”) 和 P(income = “medium” | buys_computer = “no”) 都将为0,那么在计算P(X|Ci)*P(Ci)时结果也为0,这样就不好决定X是属于哪一个类。 对于这样的问题的一个解决方案叫做:Laplacian correction或者Laplacian estimator,是以一位法国数学家Pierre Laplace名字命名的。 它的具体做法就是给相应的属性的不同值数目都加1: 假设:有1000个训练样本,其中income=low的数目为10,income=medium的数目为0,income=high的数目为990,则为了避免零概率问题,我们给每一种income的数目加1,及最后结果为 income =medium的数目为1,low的数目为11,high的数目为991.这样也就避免了零概率问题。 2:准确度问题 朴素贝叶斯分类器是基于样本属性条件独立的假设的前提下的,但是实际情况可能并不成立,这样也就缺失准确性了. 解决朴素贝叶斯准确性问题提出的一种方法叫做:贝叶斯网络(Bayesian Belief Networks ).这个方法留着下次学习。
TA的最新馆藏[转]&[转]&
喜欢该文的人也喜欢379被浏览48376分享邀请回答127 条评论分享收藏感谢收起212 条评论分享收藏感谢收起查看更多回答&>&朴素贝叶斯分类器(中文)适用于情感分析
朴素贝叶斯分类器(中文)适用于情感分析
上传大小:1.48MB
代码:Java语言
算法:朴素贝叶斯分类器(中文)适用于情感分析
涉及:条件概率,先验概率计算,中文分词器,停用词处理
综合评分:1(1位用户评分)
下载个数:9
{%username%}回复{%com_username%}{%time%}\
/*点击出现回复框*/
$(".respond_btn").on("click", function (e) {
$(this).parents(".rightLi").children(".respond_box").show();
e.stopPropagation();
$(".cancel_res").on("click", function (e) {
$(this).parents(".res_b").siblings(".res_area").val("");
$(this).parents(".respond_box").hide();
e.stopPropagation();
/*删除评论*/
$(".del_comment_c").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_invalid/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parents(".conLi").remove();
alert(data.msg);
$(".res_btn").click(function (e) {
var q = $("#form1").serializeArray();
console.log(q);
var res_area_r = $.trim($(".res_area_r").val());
if (res_area_r == '') {
$(".res_text").css({color: "red"});
$.post("/index.php/comment/do_comment_reply/", q,
function (data) {
if (data.succ == 1) {
var $target,
evt = e || window.
$target = $(evt.target || evt.srcElement);
var $dd = $target.parents('dd');
var $wrapReply = $dd.find('.respond_box');
console.log($wrapReply);
var mess = $(".res_area_r").val();
var str = str.replace(/{%header%}/g, data.header)
.replace(/{%href%}/g, 'http://' + window.location.host + '/user/' + data.username)
.replace(/{%username%}/g, data.username)
.replace(/{%com_username%}/g, _username)
.replace(/{%time%}/g, data.time)
.replace(/{%id%}/g, data.id)
.replace(/{%mess%}/g, mess);
$dd.after(str);
$(".respond_box").hide();
$(".res_area_r").val("");
$(".res_area").val("");
$wrapReply.hide();
alert(data.msg);
}, "json");
/*删除回复*/
$(".rightLi").on("click",'.del_comment_r', function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_comment_del/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parent().parent().parent().parent().parent().remove();
$(e.target).parents('.res_list').remove()
alert(data.msg);
//填充回复
function KeyP(v) {
$(".res_area_r").val($.trim($(".res_area").val()));
评论共有1条
不要相信 这个资源 只是 去调用波森的接口而已 毫无价值 也值5个 积分 好意思吗 楼主 差差差
审核通过送C币
Structs-jar包合集(1.3、2.3、2.5)
创建者:weixin_
课程设计资源
创建者:xunalove
创建者:lzce111
上传者其他资源上传者专辑
知网整理的情感词典Hownet
jdbc驱动jar文件(MySQL与eclipse连接)
MySQL 5.1 官方简体中文版参考手册和MySQL 5.5 官方简体中文版参考手册
mysql官方用户手册中文版.pdf
lucene-core-2.4.1.jar
课程资源热门标签
VIP会员动态
下载频道用户反馈专区
下载频道积分规则调整V1710.18
开通VIP,海量IT资源任性下载
spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip
CSDN&VIP年卡&4000万程序员的必选
为了良好体验,不建议使用迅雷下载
朴素贝叶斯分类器(中文)适用于情感分析
会员到期时间:
剩余下载个数:
剩余C币:593
剩余积分:0
为了良好体验,不建议使用迅雷下载
积分不足!
资源所需积分/C币
当前拥有积分
您可以选择
程序员的必选
绿色安全资源
资源所需积分/C币
当前拥有积分
当前拥有C币
(仅够下载10个资源)
全站1200个资源免积分下载
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
全站600个资源免积分下载
资源所需积分/C币
当前拥有积分
当前拥有C币
您的积分不足,将扣除 10 C币
全站1200个资源免积分下载
为了良好体验,不建议使用迅雷下载
你当前的下载分为234。
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
朴素贝叶斯分类器(中文)适用于情感分析当前位置: &
4,242 次阅读 -
朴素贝叶斯分类器是一种应用基于独立假设的贝叶斯定理的简单概率分类器。线性分类器透过特征的线性组合来做出分类决定的分类器。本质上,朴素贝叶斯分类器是一种线性分类器。
朴素贝叶斯分类器和线性分类器
朴素贝叶斯分类器是建立在属性变量相互独立的基础上,以后验概率为判定准则的分类器。不等式1成立,判别输入向量x=(x1,x2,x3,…,xn)为正类,不然判别为负类。
线性分类器则是直观地来说,是在高维样本空间中找到一组超平面,将样本空间划分了两个区域。每个区域对应于不同的类别。数学上来说则是,我们能找到权值向量w,使得输入向量x和该权值向量w的点积成为分类器的准则。
即,公式2成立,则属于正类;反之,则是负类。
属性值为布尔变量的朴素贝叶斯分类器
令属性值的取值为+或者+。不等式3成立,判别输入向量x=(x1,x2,x3,…,xn)为正类。
将不等式3推导成不等式5之后,令
将6和7带入不等式5,得不等式8.
根据不等式8,属性值为布尔变量的朴素贝叶斯分类器本质上找到了权值向量w,使得输入向量x和该权值向量w的点积成为分类器的准则。即,属性值为布尔变量的朴素贝叶斯分类器本质上是线性分类器。为什么只说本质上是线性分类器,而不说是线性分类器呢?主要原因是,朴素贝叶斯分类器并没有显式地求出权值向量w,只是其判别准则(不等式3)本质上可以看成输入向量x和权值向量w的点积(不等式8)。
特定的高斯朴素贝叶斯分类器
假设条件概率满足高斯分布,则称改朴素贝叶斯分类器为高斯朴素贝叶斯分类器。
条件概率的方差相同的高斯朴素贝叶斯分布本质上是线性分类器。条件概率的方差相同的意思是,在不同类别的条件下某属性值成立的条件概率的方差相同,如公式10所示。
不等式11成立,判别输入向量x=(x1,x2,x3,…,xn)为正类。
在公式9,10成立的情况下,不等式11可以推导到不等式15.不等式15是关于输入向量x的线性运算,根据这点,我们可以看到条件概率的方差相同的高斯朴素贝叶斯分布本质上是线性分类器。
直观上看,在条件概率的方差相同的高斯朴素贝叶斯分类器,两个类别的特征和类别的联合分布(即p(x|c)*p(c))如图左图所示。则判别准则其实就是图1右图中的粗黑直线。
不是线性分类器的朴素贝叶斯分类器
若是高斯朴素贝叶斯分类器中条件概率的方差不相同。
不等式20表明普通的高斯朴素贝叶斯分类器并不是线性分类器(判别不等式与xi的二次方有关)。
只有特定的某些朴素贝叶斯分类器本质上是线性分类器。
文章出处:http://www.rustle.us/?p=173
注:转载文章均来自于公开网络,仅供学习使用,不会用于任何商业用途,如果侵犯到原作者的权益,请您与我们联系删除或者授权事宜,联系邮箱:contact@dataunion.org。转载数盟网站文章请注明原文章作者,否则产生的任何版权纠纷与数盟无关。
相关文章!
不用想啦,马上 发表自已的想法.
做最棒的数据科学社区
扫描二维码,加微信公众号
联系我们:朴素贝叶斯算法仍然是盛行的10大发掘算法之一,该算法是有监督的学习算法,处理的是分类疑问,如客户是不是丢失、是不是值得出资、信用等级鉴定等多分类疑问。该算法的长处在于简略易懂、学习效率高、在某些范畴的分类疑问中能够与决策树、神经网络相媲美。但因为该算法以自变量之间的独立(条件特征独立)性和连续变量的正态性假定为条件,就会致使算法精度在某种程度上受影响。接下来咱们就具体介绍该算法的知识点及实践运用。
朴素贝叶斯的思维
思维很简略,即是依据某些个先验概率核算Y变量归于某个种类的后验概率,请看下图细细道来:
test &- mydata[-index,]
从公式中可知,假定要核算X条件下Y发作的概率,只需求核算出后边等式的三个有些,X事情的概率(P(X)),是X的先验概率、Y归于某类的概率(P(Y)),是Y的先验概率、以及已知Y的某个分类下,事情X的概率(P(X|Y)),是后验概率。从上表中,是能够核算这三种概率值的。即:
if(!suppressWarnings(require('pROC'))){
# 构建混杂矩阵
因为影响蘑菇是不是有毒的变量有21个,能够先试着做一下特征挑选,这儿咱们就选用随机森林办法(凭借caret包完成特征挑选的作业)进行主要变量的挑选:
然后P(C|X)公式中的分子成果为:
# 制作ROC曲线
NaiveBayes(x,grouping, prior, usekernel= FALSE, fL = 0,...)
na.action指定缺失值的处理办法,默许状况下不将缺失值归入模型核算,也不会发作报错信息,当设为“na.omit”时则会删去富含缺失值的样本;
# 模型的准确率
& install.packages('caret')
连接:/s/1dEBGvC1 暗码:loqg
好了,关于朴素贝叶斯分类器的理论和运用的解说就到这儿,如有不了解的兄弟还能够持续沟通。
set.seed(12)
& install.packages('pROC')
& require('pROC')
本次实战内容的数据来自于UCI机器学习网站,后文会给出数据调集源代码的连接。
& repeats = 5)
& & &grid = c(0.1,0.2), grid.col = c('green','red'),
train &- mydata[index,]
# 读取蘑菇数据集
if(!suppressWarnings(require('klaR'))){
& & & & & & &sizes = seq(4,21,2),
经过朴素贝叶斯模型,在测验会集,模型的准确率约为97%,并且AUC的值也十分高,通常超越0.8就阐明模型对比理想了。
假定要断定某个样本归归于哪一类,则需求核算出归属不一样类的概率,再从中挑选出最大的概率。
str(mydata)
# 抽样,并将整体分为练习集和测验集
所需求挑选的变量是:
& & & & & & &rfeControl = rfeControls_rf)
vars &- c('type',fs_nb$optVariables)
x指定需求处理的数据,能够是数据框方式,也能够是矩阵方式;
原始数据中毒蘑菇与非毒蘑菇之间的对比对比挨近,经过抽选练习集和测验集,发现比重与整体份额大致相同,故能够为抽样的成果能够反映整体状况,可进一步进行建模和测验。
index &- sample(1:nrow(mydata), size = 0.75*nrow(mydata))
# 模型的AUC值
prop.table(table(train$type))
fit &- NaiveBayes(type ~ ., data = train[,vars])
(图一十)
fs_nb &- rfe(x = train[,-1],
fL指定是不是进行拉普拉斯批改,默许状况下不对数据进行批改,当数据量较小时,能够设置该参数为1,即进行拉普拉斯批改。
上式成果中的分母4为数据会集丢失有4条观测,分子2分别是丢失的条件下,女人2名,本科2名。
#运用rfe函数进行特征挑选
P(x)指在一切客户会集,某位22岁的本科女人客户,其月收入为7800元,在12次花费中算计开销4000元的概率;
(图一十一)
假定已知某个客户丢失的状况下,其性别为女,教育水平为本科的概率:
usekernel指定密度估计的办法(在无法判别数据的散布时,选用密度密度估计办法),默许状况下运用正态散布密度估计,设为TRUE时,则运用核密度估计办法;
假定,上表中的信息反映的是某P2P公司判别其客户是不是会丢失(churn),而影响到该变量的要素包括年纪、性别、收入、教育水平、花费频次、支撑。那依据这么一个信息,我该怎么了解朴素贝叶斯的思维呢?再来看一下朴素贝叶斯公式:
# 大致检查抽样与整体之间是不是符合
plot(modelroc, print.auc = TRUE, auc.polygon = TRUE,&
该数据会集包括了8124个样本和22个变量(如蘑菇的色彩、形状、润滑度等)。
grouping为每个观测样本指定所属种类;
& & &max.auc.polygon = TRUE, auc.polygon.col = 'steelblue')
& functions = rfFuncs,
& & & & & & & & as.integer(factor(pred$class)))
if(!suppressWarnings(require('caret'))){
有关朴素贝叶斯分类器的理论有些就解说到这儿,期望读者能够了解,假定您还有不了解的当地能够给我留言。接下来咱们就看一下,在R言语中,是怎么完成朴素贝叶斯算法的落地的。
(图一十二)
关于连续变量的状况就略微杂乱一点,并非核算频率这么简略,而是假定该连续变量遵守正态散布(即便许多数据并不满意这个条件),先来看一下正态散布的密度函数:
& method = 'cv',
freq &- table(pred$class, test[,1])
# 下载并加载所需的运用包
prop.table(table(mydata$type))
(图一十三)
formula指定参加模型核算的变量,以公式方式给出,类似于y=x1+x2+x3;
#构建rfe函数的操控参数(运用随机森林函数和10重穿插验证抽样办法,并抽取5组样本)
pred &- predict(fit, newdata = test[,vars][,-1])
数据与源代码连接:
& install.packages('klaR')
R言语函数简介
prior可为各个种类指定先验概率,默许状况下用各个种类的样本份额作为先验概率;
要核算连续变量中某个数值的概率,只需求已知该变量的均值和标准差,再将该数值带入到上面的公式即可。
上式成果中的分母3为数据会集未丢失的观测数,分子2分别是未丢失的条件下,女人2名,本科2名。
plot(fs_nb, type = c('g','o'))
或许,这个公式你不了解,咱们举个比如(上表的数据)阐明就很简略懂了。
P(Y)指丢失与不丢失在一切客户会集的份额;
关于离散状况:
summary(mydata)
modelroc &- roc(as.integer(test[,1]),&
(图一十四)
P(X|Y)指在已知丢失的状况下,一位22岁的本科女人客户,其月收入为7800元,在12次花费中算计开销4000元的概率。
(图一十五)
(图一十六)
NaiveBayes(formula,data, ..., subset, na.action= na.pass)
rfeControls_rf &- rfeControl(
prop.table(table(test$type))
# 简略的了解一下数据
咱们把上面的贝叶斯公式写出这么,或许你能十分好的了解:
& require('caret')
# 运用klaR包中的NaiveBayes函数构建朴素贝叶斯算法
fs_nb$optVariables
接下来,咱们就对于这6个变量,运用朴素贝叶斯算法进行建模和猜测:
成果显现,21个变量中,只需求挑选6个变量即可,下图也能够阐明这一点:
& require('klaR')
& & & & & & &y = train[,1],
accuracy &- sum(diag(freq))/sum(freq)
R言语中的klaR包就供给了朴素贝叶斯算法完成的函数NaiveBayes,咱们来看一下该函数的用法及参数意义:
data用于指定需求剖析的数据目标;
而这个公式通知咱们,需求核算最大的后验概率,只需求核算出分子的最大值即可,而不一样水平的概率P(C)十分简略取得,故难点就在于P(X|C)的概率核算。而疑问的处理,恰是聪明的地方,即贝叶斯假定变量X间是条件独立的,故而P(X|C)的概率就能够核算为:
mydata &- read.csv(file = file.choose())
假定已知某个客户未丢失的状况下,其性别为女,教育水平为本科的概率
天天前进一点点2015
学习与共享,扬长避短,重视小号!
(图一十七)长按辨认二维码&立刻重视
天天前进一点点2015
看过本文的人还看过
人气:1334 更新:
人气:656 更新:
人气:536 更新:
人气:481 更新:
大数据的更多文章
大家在看 ^+^
推荐阅读 ^o^
『中國邊疆研究與歷史書寫』研討會日程安排
过真伤己、过直伤人
中国人走得太远太快,灵魂跟不上了(深度好文)
他说第二,有人敢说第一吗?
猜你喜欢 ^_^
24小时热门文章
微信扫一扫
分享到朋友圈

我要回帖

更多关于 weka朴素贝叶斯分类器 的文章

 

随机推荐