引子
【基础知识】:条件概率----设A,B是两个事件,且P(B)>0,则在事件B发生的条件下,事件A发生的条件概率(conditional probability)为:P(A|B)=P(AB)/P(B)
【基础知识】:乘法公式
1. 由条件概率公式得:P(AB)=P(A|B)P(B)=P(B|A)P(A) 即为乘法公式;
2. 乘法公式的推广:对于任何正整数n≥2,当P(A1A2...An-1) > 0 时,有:
P(A1A2...An-1An)=P(A1)P(A2|A1)P(A3|A1A2)...P(An|A1A2...An-1)
【全概率公式】概念
【公式定义】:如果事件组B1,B2,.... 满足
a. B1,B2....两两互斥,即 Bi ∩ Bj = ∅ ,i≠j , i,j=1,2,....,且P(Bi)>0,i=1,2,....;
b. B1∪B2∪....=Ω ,则称事件组 B1,B2,...是样本空间Ω的一个划分
设 B1,B2,...是样本空间Ω的一个划分,A为任一事件,则:
【全概率公式的意义】当直接计算P(A)较为困难,而P(Bi),P(A|Bi) (i=1,2,...)的计算较为简单时,可以利用全概率公式计算P(A)。思想就是,将事件A分解成几个小事件,通过求小事件的概率,然后相加从而求得事件A的概率,而将事件A进行分割的时候,不是直接对A进行分割,而是先找到样本空间Ω的一个个划分B1,B2,...Bn,这样事件A就被事件AB1,AB2,...ABn分解成了n部分,即A=AB1+AB2+...+ABn, 每一Bi发生都可能导致A发生相应的概率是P(A|Bi),由加法公式得
P(A)=P(AB1)+P(AB2)+....+P(ABn) =P(A|B1)P(B1)+P(A|B2)P(B2)+...+P(A|Bn)P(PBn)
【实例1】:某车间用甲、乙、丙三台机床进行生产,各台机床次品率分别为5%,4%,2%,它们各自的产品分别占总量的25%,35%,40%,将它们的产品混在一起,求任取一个产品是次品的概率。
解:设..... P(A)=25%*5%+4%*35%+2%*40%=0.0345
【实例2】:盒中有a个红球,b个黑球,今随机从中抽取一个,观察颜色后放回,并加上同色球c个,再从盒子中第二次抽取一球,求第二次抽出的是黑球的概率是多少?
【朴素贝叶斯】概念
【贝叶斯定理】:贝叶斯定理是关于随机事件A和B的条件概率(或边缘概率)的一则定理。其中P(A|B)是在B发生的情况下A发生的可能性。
【研究意义】:人们根据不确定性信息作出推理和决策需要对各种结论的概率作出估计,这类推理称为概率推理。概率推理既是概率学和逻辑学的研究对象,也是心理学的研究对象,但研究的角度是不同的。概率学和逻辑学研究的是客观概率推算的公式或规则;而心理学研究人们主观概率估计的认知加工过程规律。贝叶斯推理的问题是条件概率推理问题,这一领域的探讨对揭示人们对概率信息的认知加工过程与规律、指导人们进行有效的学习和判断决策都具有十分重要的理论意义和实践意义
【贝叶斯分类】:Bayes 是一种统计学分类方法,它基于贝叶斯定理,它假定一个属性值对给定类的影响独立于其它属性点的值。该假定称作类条件独立。做次假定是为了简化所需计算,并在此意义下称为“朴素的”。
【运用场景】:对于属性值是离散的,并且目标label值也是离散的情况下。分别计算label不同取值的概率,以及样本在label情况下的概率值,然后将这些概率值相乘最后得到一个概率的乘积,选择概率乘积最大的那个值对应的label值就为预测的结果。
废话不多说,通过一个例子来熟知:
【实例1】:设某个公路经过的货车与客车的比例大约是2:1,货车中途停下来修车的概率是0.02,汽车中途停下来修车的概率是0.01,求 若有一辆车停下来修车,是货车的概率是多少
解:设B={停下来修车},A1={货车},A2={非货车,也就是客车};在有车停下来修车的前提下,是货车的概率表达式应为:P(A1|B),显然不好求!那么根据贝叶斯概率公式做个变换:
P(A1|B) = P(B|A1)*P(A1)/P(B) 而 P(B)=P(B|A1)*P(A1) + P(B|A2)*P(A2)
其中: P(A1) = 2/3 (是货车的概率) P(A2) = 1/3(是客车的概率)
P(B|A1) = 0.02(是货车的前提下中途停下修车的概率)
P(B|A2) = 0.01(是客车的前提下中途停下修车的概率)
最后计算结果: 2/3*0.02/(2/3*0.02 + 1/3*0.01) = 0.80
.【实例2】发报台分别以概率0.6和0.4发出信号“∪”和“—”。由于通信系统受到干扰,当发出信号“∪”时,收报台分别以概率0.8和0.2收到信号“∪”和“—”;又当发出信号“—”时,收报台分别以概率0.9和0.1收到信号“—”和“∪”。求当收报台收到信号“∪”时,发报台确系发出“∪”的概率。
解:设A={收报台收到“U”},设B1={发报台发出的是“U”},B2={发报台发出的是“—”}
P(B1|A) = P(A|B1)*P(B1)/P(A); P(A) = P(A|B1)*P(B1) + P(A|B2)*P(B2)
P(B1|A)= (0.6*0.8)/(0.6*0.8+0.4*0.1)=0.923
【目标】:是预测苹果在给定属性的情况下是甜还是不甜【color=3,weight=3?】
color={0,1,2,3} weight={2,3,4};是属性序列,为离散型。sweet={yes,no}是目标值,也为离散型;
这时我们要预测在color=3,weight=3的情况下的目标值,计算过程如下:
P{y=yes}=2/5=0.4; P{color=3|yes}=1/2=0.5;P{weight=3|yes}=1/2=0.5; 故F{color=3,weight=3}取yes的概率为 0.4*0.5*0.5=0.1;
P{y=no}=3/5=0.6; P{color=3|no}=1/3P{weight=3|no}=1/3;故P{color=3,weight=3}取no为 0.6*1/3*1/3=1/15;
0.1>1/15 所以认为 F{color=3,weight=3}=yes;
看完解题过程,先别疑惑,来看下面公式:
【朴素贝叶斯计算公式】---- 多个特征条件下的表达式
在朴素贝叶斯分类算法中,既可以独立的学习每个属性Ai在类别属性C下的条件概率P(Ai|C),也可以独立学习每个属性Ai的概率,因该值为常数,可用归一化因子a来代替。
趁热打铁,再来一波【数据】:计算“不帅、性格不好、身高矮、不上进”该不该“嫁”?
根据上述公式,已经比较容易获得计算结果;结果比较惨,就不写具体值了......
【朴素贝叶斯】Java实现---- 处理测试用例数据
学习完上面的例子之后,就到了使用阶段了。变化一下思路,首先看一个假设:
假设,我们有N组参数,每组参数最终都跟着一个分类结果数值(这个数值是人为标记的),这种场景的表现形式是不是特别像测试数据的日志+结果啊,我们在脑海里将这N组数据勾画成一张表,是不是就是上面预测苹果甜不甜的分类模型啊!这个模型能干什么呢?能做预测!这就是朴素贝叶斯能带给我们的福利。废话不多说,直接上代码!
1. 首先读取训练数据集合:
2. 将训练集按最后一个值进行分类
3. 在训练数据的基础上预测测试元组的类别 ,testT(测试数据集合)的各个属性在结果集里面出现的概率相乘最高的,即是结果
4. 主函数调用
总结一下:代码写的比较冗余,数据结构获取这部分的设计比较笨重;贝叶斯的最终核心目标是算一些列的属性在整个数据集合中的占比问题;连乘最后处理得结果。该考虑以类为最小单元,祛除复杂的运算逻辑。
延展:获取数据结构前,可以添加文本的拆分、分析等功能模块,以兼容文本分类场景。
【朴素贝叶斯】使用方法--- 文本分类处理模型
【朴素贝叶斯】分类模型的优势
1)算法逻辑简单,易于实现;
2)分类过程中时间、空间开销小;
3)算法性能稳定,对于不同的数据特点其分类性能差别不大,即模型健壮性比较好。
应用范围:
贝叶斯定理广泛应用于决策分析。先验概率经常是由决策者主观估计的。在选择最佳决策时,会在取得样本信息后计算后验概率以供决策者使用。