r语言贝叶斯判别先验概率怎么去

Python026

r语言贝叶斯判别先验概率怎么去,第1张

Bayes判别,它是基于Bayes准则的判别方法,判别指标为定量资料,它的判别规则和最大似然判别、Bayes公式判别相似,都是根据概率大小进行判别,要求各类近似服从多元正态分布。

1. Bayes准则:寻求一种判别规则,使得属于第k类的样品在第k类中取得最大的后验概率。

基于以上准则,假定已知个体分为g类,各类出现的先验概率为P(Yk),且各类均近似服从多元正态分布,当各类的协方差阵相等时,可获得由m个指标建立的g个线性判别函数Y1,Y2,…,Yg,分别表示属于各类的判别函数值:

其中Cjk即为判别系数,通过合并协方差阵代入即可计算得各个指标的判别系数,而C0k中则加以考虑了先验概率P(Yk):

2. 先验概率的确定:若未知各类的先验概率时,一般可用:

(1)等概率(先验无知):P(Yk)= 1/g(all groups equal)。

(2)频率:P(Yk)= nk/N (当样本较大且无选择偏倚时用,compute from sample size)

3. 判别规则:

(1)计算样品属于各类的判别函数值,把对象判别为Y值最大的类。

(2)根据所得Y值,我们亦可以进一步计算属于k类的后验概率,再将对象判给后验概率最大的一类。

以上两种判别规则的结果是完全一致的。

函数介绍

实现Bayes判别可以调用程序包klaR中NaiveBayes()函数,其调用格式为:

NaiveBayes(x,grouping,prior,usekernel =FALSE,fL = 0, ...)

复制

x为训练样本的矩阵或数据框,grouping表示训练样本的分类情况,prior可为各个类别指定先验概率,默认情况下用各个类别的样本比例作为先验概率,usekernel指定密度估计的方法,默认情况下使用标准的密度估计,设为TRUE时,则使用核密度估计方法;fL指定是否进行拉普拉斯修正,默认情况下不对数据进行修正,当数据量较小时,可以设置该参数为1,即进行拉普拉斯修正。

例子:利用Iris数据集进行Bayes判别

>install.packages("klaR")

>X<-iris[1:100,1:4]

>G<-as.factor(gl(2,50))

>library(klaR)

>x<-NaiveBayes(X,G)

>predict(x)

$class

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54

1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2

55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72

2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2

73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90

2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2

91 92 93 94 95 96 97 98 99 100

2 2 2 2 2 2 2 2 2 2

复制

由分析结果可知,根据已知分类的训练样品建立的判别规则,出现了0个样本错判,回代的判别正确率为100%。

贝叶斯估计(Bayesian estimation),是在给定训练数据D时,确定假设空间H中的最佳假设。 最佳假设:一种方法是把它定义为在给定数据D以及H中不同假设的先验概率的有关知识下的最可能假设。贝叶斯理论提供了一种计算假设概率的方法,基于假设的先验概率、给定假设下观察到不同数据的概率以及观察到的数据本身。

贝叶斯分类器的工作原理:就是求条件概率然后比较大小:

条件概率概念:在已知b发生的情况下,a发生的概率。我们写做:p(a|b)。

例如:已知一本书有这些tag:tag1,tag2,tag3……它属于“人文”分类的概率是多少?属于“非人文”分类的概率呢?

假设p1表示在这种情况下,它属于“人文”的概率,p2表示这种情况下,它属于“非人文”的概率。

如果p1>p2,那么这本书就属于“人文”,反过来就是“非人文”。我们不考虑p1=p2的情况。

所以,问题就变成了,如何通过tag1,tag2,tag3…来计算p1和p2?

知一本书有这些tag:tag1,tag2,tag3……它属于“人文”分类的概率表示为p(type1|tag:tag1,tag2,tag3...),

类似的 属于“非人文”分类的概率表示为p(type2|tag:tag1,tag2,tag3...),利用贝叶斯公式:

P(A|B)P(B)=P(B|A)P(A),可以得到p(type1|tag1,tag2,tag3...) = p(tag1,tag2,tag3...|type1)* p(type1)/ p(tag1,tag2,tag3...),

p(type2|tag1,tag2,tag3...) = p(tag1,tag2,tag3...|type2)* p(type2)/ p(tag1,tag2,tag3...),

所以只需要得到p(tag1,tag2,tag3...|type1),p(type1), p(tag1,tag2,tag3...) 的值就可以得到p(type1|tag1,tag2,tag3...)

但做为分类器的大小比较,我们发现不需要全部得到值就可以比较大小,因为分母都是p(tag1,tag2,tag3...),所以我们只需要得到

p(tag1,tag2,tag3...|type1)* p(type1)和p(tag1,tag2,tag3...|type2)* p(type2)的大小来比较即可;

对于p(type1)的计算就是在整个训练数据中出现的type1类书籍出现的概率;p(type2)同理;简单;

对于计算 p(tag1,tag2,tag3...|type1),我们用到的是朴素贝叶斯,也就是说tag1和tag2和tag3等每个tag出现的概率是不互相影响的是

独立的;所以p(tag1,tag2,tag3...|type1)=p(tag1|type1)*p(tag2|type1)*p(tag3|type1)*p(...|type1),也就是说,我们可以计算每一个

tag,在type1书籍的所有tag中出现的概率,然后将它们乘起来,就得到我们想要的p(tag1,tag2,tag3...|type1);

最大似然估计,本质就是以现有样本为基础分析,然后求出最大可能出现这种结果的总体参数值。

有了这个参数值,就有这批样本整个规律的体现了。就是说当样本数据复杂的时候,点估计(一个点),最小二乘(多个点)的情况并不能有效统计了,最大似然则找出最适参数展现这些数据的特性。

贝叶斯(Bayes) 估计是基于先验信息的一种估计方法,也就是说,根据已有的一些经验(规律),把经验纳入估计过程中,从而得到估计值。在经典的频率统计中,参数是固定的,样本统计量是随机变量。而在贝叶斯统计中,认为参数也是随机变量,服从某一概率分布的随机变量,贝叶斯统计的重点是研究参数的分布。

由研究样本与参数的关系到研究参数的分布,这就是点估计到贝叶斯估计的转变。

某市男性司机和女性司机各自占的比例为60%和40%。现在发生了一起车祸,某位司机把一堵墙撞倒了,没有发生人员伤亡。我们想了解一下,这位撞墙的司机可能是男性还是女性。

在这里,往往我们会考虑两个问题:第一男女司机的比例,第二是男女司机撞墙的可能性。

这两点就是已有经验!

思考过程:

(1)如果我们没有任何数据,只有该市男女司机的比例,那么我们会推测,撞墙的司机有60%的可能是男性(毕竟男性司机更多) 。

(2)但我们又获得了另一组数据,即男性司机撞墙的可能性为1%, 女性司机撞墙的可能性为5% 。那么在这种情况下,我们如何来判断呢?

(3)我们可以计算出:男性司机撞墙的概率是60% x 1%=0.6%, 女性司机撞墙的概率是40% x 5%=2%。此时撞墙为男性司机的可能性为0.6%/(0.6%+2%)=23%, 撞墙为女性司机的可能性为2%/(0.6%+2%)=77%, 也就是说,发生这起撞墙事故的更有可能是女性司机。

(4)这里的先验是很重要的,如果本例中已知男女司机比例不是60%和40%, 而是90%和10%, 那么最终计算的男性司机撞墙的概率就不是0.6%, 而是0.9%同样,女性司机撞墙的概率也不是2%, 而是0.5%。这样一来,这起撞墙事故就很可能是由男性司机造成的。

已知某疾病的患病率为1%, 某研究者发现一个诊断指标,该诊断指标的灵敏度和特异度均为95% 。

也就是说,如果一个人患病,则有95%的概率能够正确诊断其患病;如果一个人没有患病,则有95% 的概率能够正确诊断其为非患者(反过来就是说,如果一个人没有患病,则有5%的可能性将其误诊为患病)。我们来分析一下该诊断指标是否值得在临床上推广。

分析过程:

(1)甲患病且诊断为患病的概率为 1% X 95% = 0.95%

(2)乙没有患病且诊断为患病的概率为 99% X 5% = 4.95%

(3)正确诊断为患病的概率0.95%/(0.95%+4.95%)=16.1%

在患病的诊断例子中,正确诊断患病的概率是16.1%,其实,这个概率并不高。

为什么会这样呢?

原因就是该病的患病率太低,多数人是不患病的。在这种情况下,尽管只有5%的误诊率,但考虑到不患病人数巨大, 5%的误诊率足己造成很高的假阳性。由千患病率很低,如果该诊断指标想进一步提高正确诊断的性能,则应该在提高特异度上下功夫( 特异度95%还是太低啊 )。

特点:首先要了解一定的先验,然后收集样本数据,根据样本数据的结果再进行调整,重新计算得到所谓的后验信息。

贝叶斯公式一般可以表示为:

式中P(BIA)表示在A 成立的条件下, B 的发生概率。我们把公式中的A和B替换一下,改为更通俗易懂的形式:

传统的概率分布一般是正向概率,如某病的患病率是1%,如果随机抽取一个人,那么此人患该病的概率有多大。而贝叶斯估计基于逆向概率,如在诊断疾病的例子中,人被该诊断指标诊断为患病,反推他真正患病的概率有多大;在司机撞墙时间中,如果一位司机被发现撞倒了墙,反推他是男性司机的概率有多大。

厉害!厉害!厉害!

(1)已有的先验或规律是男性司机占60%, 现象是撞墙,男性司机撞墙的可能性为1%, 女性司机撞墙的可能性是5%, 同时考虑到男性和女性,则整个撞墙现象出现的概率就是1%x60%+5%x40%=2.6% 。根据这些数据,估计撞墙为男性司机的可能性为:

(2)已有的先验或规律是患病率为1%, 现象是诊断患病,患病者被诊断为患病的可能性为95%, 未患病者被诊断为患病的可能性是5%, 则整个诊断为患病现象出现的概率就是95% x 1%+5%x99%=5.9% 。根据这些数据,估计诊断为患病的人是患者的可能性为: