机器学习算法之 贝叶斯分类

一、 第一次学习总结

1 前期准备

1.1 先验概率与后验概率

(1) 概念

先验概率:事情还没有发生,要求这件事情发生的可能性的大小。
是根据以往经验和分析得到的概率。
后验概率:事情已经发生,要求这件事情发生的原因是由某个因素引起的可能性的大小。

(2) 举例

先验概率:

  • 骰子,我们都知道概率是1/6,而且无数次重复实验也表明是这个数,这是一种我们人的常识。
  • 明天中午以前的温度分布。合理的方法是将之前的正态分布预期值等于今天的中午温度,其方差等于大气温度的日常变化,或者是一年中的那一天的温度分布。

后验概率:

  • 桌子上如果有一块肉喝一瓶醋,你如果吃了一块肉,然后你觉得是酸的,那你觉得肉里加了醋的概率有多大?你说:80%可能性加了醋.OK,你已经进行了一次后验概率的猜测.

(3) 两者联系

先验概率的计算比较简单,没有使用贝叶斯公式;
而后验概率的计算,要使用贝叶斯公式,以先验概率为基础。

参考网址:
[1]先验概率_百度百科
[2]后验概率_百度百科
[3]贝叶斯公式的直观理解(先验概率/后验概率)_博客园

1.2 类条件概率(或称“似然”)

(1)概念

类条件概率密度函数P(X|wi)是指在已知某类别的特征空间中,出现特征值X的概率密度,指第wi类样品其属性X是如何分布的,换言之即,条件wi下出现X的概率密度。

(2)举例

全世界华人占地球上人口总数的20%,但各个国家华人所占当地人口比例是不同的。

参考文献:
[1] 类条件概率密度_百度百科

1.3 联合概率分布

联合概率分布简称联合分布,随机向量X=(X1,X2,…,Xm) 的概率分布,称为随机变量X1,X2,…,Xm的联合概率分布。

对于二维离散随机向量,设X和Y都是离散型随机变量, 和 分别是X和Y的一切可能的集合,则X和Y的联合概率分布可以表示为如右图的列联表,也可以表示为如下的函数形式:
在这里插入图片描述
在这里插入图片描述
参考网址:
[1]类条件概率_百度百科

1.4 调和平均数

调和平均数(harmonic mean)又称倒数平均数,是总体各统计变量倒数的算术平均数的倒数。
在这里插入图片描述
在数学中调和平均数与算术平均数都是独立的自成体系的。
参考网址:调和平均数_百度百科

2 贝叶斯定理

[1] 形象理解:贝叶斯定理_由来_CSDN博客
[2] 可怕的贝叶斯定理_调整因子_CSDN博客
[3] 书籍理解:《数据挖掘概念与技术》
[4] 贝叶斯定理_公式推导
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
下面是例8.4的简化表示,和关于贝叶斯定理的总结,个人觉得便于理解记忆:
在这里插入图片描述
在这里插入图片描述

二、第二次学习总结

1 朴素贝叶斯分类器

在这里插入图片描述
在这里插入图片描述
朴素贝叶斯分类器的高明之处就全在于上图中的(1)处。
朴素 :指假设特征之间相互独立。

接下来,我们改变一下(1)处:在判断病人感冒的概率之前,知道病人的特点有:打喷嚏、是个建筑工人。那公式(1),将变成下面的样子:
P ( 感 冒 ∣ 打 喷 嚏 ⋂ 建 筑 工 人 ) = P ( 感 冒 ∣ 打 喷 嚏 ) P ( 感 冒 ∣ 建 筑 工 人 ) P(感冒|打喷嚏\bigcap建筑工人) = P(感冒|打喷嚏) P(感冒|建筑工人) P()=P()P()
然后再像(1)式那样,分别计算P(感冒|打喷嚏) 、P(感冒|建筑工人) 即可。

所以,贝叶斯分类器的好处就是,假设特征之间相互独立后,计算中有两处便可以使用特征独立条件下的公式了。
(1) 类条件概率独立:即上图中的式(1)
P ( C i ∣ X 1 ⋂ X 2 . . . ⋂ X m ) = P ( C i ∣ X 1 ) ⋅ ⋅ ⋅ P ( C i ∣ X m ) P(C_i|X_1\bigcap{X_2}...\bigcap{X_m}) = P(C_i|X_1)\cdot\cdot\cdot P(C_i|X_m) P(CiX1X2...Xm)=P(CiX1)P(CiXm)
(2)事件独立:即图中的式(2)
P ( A ⋂ B ) = P ( A ) P ( B ) P(A \bigcap B)=P(A)P(B) P(AB)=P(A)P(B)

2 拉普拉斯修正

考虑一个问题:在类条件概率独立公式中,如果没有符合Xj特征的样本呢?那么P(Ci|Xi)为0,其他不为0的特征构成的影响,都被消除了,清零了,没用了,这显然是不行的。
P ( C i ∣ X 1 ⋂ X 2 . . . ⋂ X m ) = P ( C i ∣ X 1 ) ⋅ ⋅ ⋅ P ( C i ∣ X m ) P(C_i|X_1\bigcap{X_2}...\bigcap{X_m}) = P(C_i|X_1)\cdot\cdot\cdot P(C_i|X_m) P(CiX1X2...Xm)=P(CiX1)P(CiXm)

为了解决上面的问题,数学家拉普拉斯提出了一个办法:将每个分量的计数加1。(注意:是每个,即便只有一个特征的样本数为0,也全都要加1。)在样本量很大时,这个办法造成的估计概率变化可以忽略不计。实际使用中,拉普拉斯修正增加的数值可以设置为任何一个值,通常加 λ \lambda λ( 0 &lt; λ &lt; 1 0&lt;\lambda&lt;1 0<λ<1)来代替简单加1。同时如果对N个计数都加上 λ \lambda λ,为了保证所有类的概率加和为1,这时分母也要加上 N ∗ λ N*\lambda Nλ

例如: 总样本数有1000个。
1.符合X1的样本有0个,X2的样本有990个,X3的样本有10个,那么
P(X1) = 0/1000=0
P(X2) = 990/1000=0.99
P(X3) = 10/1000=0.010
.
这里只有X1的样本有0个,但是需要给每个特征的样本数量都加1,并且分母需要加3*1。那么
P(X1) = (0+1)/1003=0.001
P(X2) = (990+1)/1003=0.998
P(X3) = (10+1)/1003=0.011

可以看出,样本数为1000的前提下,计数加1前后,估计概率的变化非常之小。若样本数更大,便更小了。

3 优缺点

优点(适用情况):

  • 大规模数据集,分类效果稳健。
  • 多分类任务,方便。
  • 缺失数据、噪声数据,不敏感。
    缺点:
  • 特征相互独立,在实际应用中往往不成立。所以特征数较多或特征间相关性较强时,分类效果一般。
  • 含有大量数值特征的数据集,效果不好。

4 sklearn实现

#贝叶斯分类器
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB

from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix
from sklearn.metrics import accuracy_score

#准备数据集
data = load_breast_cancer()
features = data.data
feature_names = data.feature_names
labels = data.target
label_names = data.target_names

# 分离训练集和验证集
train_features,test_features,train_labels,test_labels = train_test_split(features,labels,test_size=0.33,random_state=42)

# 创建朴素贝叶斯分类器,并拟合数据
gnb = GaussianNB()
model = gnb.fit(train_features,train_labels)

#在验证集上预测,输出accuracy score、混淆矩阵、分类报告。
pre_test = gnb.predict(test_features)
print(pre_test)
print(accuracy_score(test_labels,pre_test))
print(confusion_matrix(test_labels,pre_test))
print(classification_report(test_labels,pre_test))

sklearn中有三种朴素贝叶斯分类器:

  • GaussianNB
    用于任意连续数据。
  • BernoulliNB
    输入数据为二分类数据。
  • MultinomialNB
    输入数据为计数数据,即每个特征代表某类对象的正数计数,比如一个单词在句子里出现的次数。

其中BernoulliNB、MultinomialNB主要用于文本数据分类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张之海

若有帮助,客官打赏一分吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值