贝叶斯分类器详解
入门小菜鸟,希望像做笔记记录自己学的东西,也希望能帮助到同样入门的人,更希望大佬们帮忙纠错啦~侵权立删。
目录
一、数学基础
1、贝叶斯决策论
(1)先验概率和后验概率
(2)贝叶斯定理
2、极大似然估计
(1)基本思路
(2)公式推导
(3)常见假设——正态分布
二、朴素贝叶斯分类器
1、符号设定
2、后验概率的计算
3、极大似然法求最合适的分布参数
4、常见假设——正态分布
5、拉普拉斯平滑
三、优缺点
1、优点
2、缺点
四、代码示例
一、数学基础
1、贝叶斯决策论
(1)先验概率和后验概率
先验概率:根据以往经验和分析得到的概率;
后验概率:事情已经发生,要求这件事情发生的原因是由某个因素引起的可能性的大小(即根据观察到的样本修正之后的概率值)。
(2)贝叶斯定理
用途:为了解决“逆概率”问题,它可以根据过去的数据来预测出概率,在有限的信息下,预测概率。
P(B):先验概率,即在不知道A事件的前提下,我们对B事件概率的一个主观判断。
P(A|B)/P(A):可能性函数,即调整因子,即新信息A带来的调整,使得其与先验概率相乘后得到的概率更接近真实概率。
比如说,我们现在有个特征,想知道出现这种特征的对象是这种类别的概率,即:
2、极大似然估计
(1)基本思路
首先假定数据具有某种确定的概率分布(所有的采样都是独立同分布的),但是其参数未知,然后基于训练样本对该概率分布的参数进行估计,得到最合适的参数。
(2)公式推导
设为训练集中第c类样本组合而成的集合;为假设样本分布的某种概率分布的参数向量;x为中的某一样本,则目标为:
找出合适的使得上述式子能得到最大值(即找到合适的参数使得更多的样本满足这样的分布)。
但是上述式子容易造成下溢(突破最小极限),所以通常又引入对数似然
于是最终的目标式化为:
(3)常见假设——正态分布
解得:(其中n为的总数)
;
二、朴素贝叶斯分类器
朴素贝叶斯分类器假设所有属性相互独立。
1、符号设定
设样本属性集合为( n 为属性数目),为样本x在第i属性上的取值;
样本类别集合为
2、后验概率的计算
“所有属性相互独立”才有下式的第二步
3、极大似然法求最合适的分布参数
因为对于所有类别来说P(x)都一样,所以在求最大值时无需考虑它的影响。
所以目标式化为:
4、常见假设——正态分布
即有
5、拉普拉斯平滑
为了避免其他属性携带的信息被训练集中未出现的属性抹去,在估计概率是通常进行平滑。
三、优缺点
1、优点
(1)简单,学习效率高
(2)分类过程中时空开销小
2、缺点
受假设变量间独立与假设分布情况的影响
四、代码示例
from sklearn import metrics
from sklearn.naive_bayes import GaussianNB
from sklearn.model_selection import train_test_split
from sklearn import datasets
import pandas as pd
from sklearn.metrics import classification_report
data = datasets.load_iris()
iris_target = data.target
iris_features = pd.DataFrame(data=data.data, columns=data.feature_names)
train_x, test_x, train_y, test_y = train_test_split(iris_features, iris_target, test_size=0.3)
clf = GaussianNB()
clf.fit(train_x, train_y)
y_predict = clf.predict(test_x)
accuracy = metrics.accuracy_score(test_y, y_predict)
print(accuracy)
print(classification_report(test_y, y_predict))
输出
欢迎大家在评论区批评指正,谢谢~