什么是条件概率?
所谓"条件概率"(Conditional probability),就是指在事件B发生的情况下,事件A发生的概率,用P(A|B)来表示。
文氏图.jpg
根据文氏图,可以很清楚地看到在事件B发生的情况下,事件A发生的概率就是P(A∩B)除以P(B)。
即:P(A|B)=P(A∩B) / P(B),
因此,P(A∩B) = P(A|B)P(B),
同理,P(A∩B) = P(B|A)P(A),
所以,P(A|B)P(B) = P(B|A)P(A)
可得:P(A|B) = P(B|A)P(A) / P(B),这就是条件概率的计算公式。
我们把P(A)称为"先验概率"(Prior probability),即在B事件发生之前,我们对A事件概率的一个判断。P(A|B)称为"后验概率"(Posterior probability),即在B事件发生之后,我们对A事件概率的重新评估。P(B|A)/P(B)称为"可能性函数"(Likelyhood),这是一个调整因子,使得预估概率更接近真实概率。另外,可延伸学习全概率公式。
参考链接:贝叶斯推断及其互联网应用(一):定理简介
贝叶斯理论
朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法。对于给定的训练数据集,首先基于特征条件独立假设学习输入/输出的联合概率分布;然后基于此模型,对给定的输入x,利用贝叶斯定理求出后验概率最大的输出y。
朴素贝叶斯法的优点:实现简单,学习和预测的效率很高,较为常用。缺点是分类的性能不一定很高。
朴素贝叶斯法实际上学习到生成数据的机制,所以属于生成模型。
朴素贝叶斯的参数估计
后验概率最大化的含义:朴素贝叶斯法将实例分到后验概率最大的类中,这等价于期望风险最小化。
什么是极大似然估计?
总结起来,最大似然估计的目的就是:利用已知的样本结果,反推最有可能(最大概率)导致这样结果的参数值。
原理:极大似然估计是建立在极大似然原理的基础上的一个统计方法,是概率论在统计学中的应用。极大似然估计提供了一种给定观察数据来评估模型参数的方法,即:“模型已定,参数未知”。通过若干次试验,观察其结果,利用试验结果得到某个参数值能够使样本出现的概率为最大,则称为极大似然估计。
书看上的不是很懂,看看下面的图片理解起来好一些。
极大似然估计.jpg参考链接:
详解最大似然估计(MLE)
极大似然估计详解
朴素贝叶斯模型及推导过程
朴素贝叶斯即是即是根据期望风险最小化准则得到后验概率最大化准则, 后验概率最大化.jpg 朴素贝叶斯分类器.jpg朴素贝叶斯的过程及算法
朴素贝叶斯算法.jpg贝叶斯估计
scikit-learn实例(关键是多看scikit_learn文档,多熟悉例子)
In [1]: import numpy as np
...: import pandas as pd
...: import matplotlib.pyplot as plt
...:
...: from sklearn.datasets import load_iris
...: from sklearn.model_selection import train_test_split
In [4]: # 生成源数据
...: def create_data():
...: iris = load_iris()
...: df = pd.DataFrame(iris.data, columns=iris.feature_names)
...: df['label'] = iris.target
...: df.columns = ['sepal length','sepal width','petal length','petal width','label']
...: data = np.array(df.iloc[:100,:])
...: return data[:,:-1],data[:,-1]
...:
# 切割数据
In [5]: X, y = create_data()
...: X_train,X_test,y_train,y_test = train_test_split(X, y, test_size=0.3)
...:
In [6]: X_test[0],y_test[0]
Out[6]: (array([5.7, 2.8, 4.1, 1.3]), 1.0)
In [7]: # sklearn.naive_bayes。这里用的是高斯模型,此外还有伯努利模型和多项式模型
...: from sklearn.naive_bayes import GaussianNB
# 训练数据,并进行测试集验证
In [11]: clf = GaussianNB()
...: clf.fit(X_train,y_train)
...:
Out[11]: GaussianNB(priors=None)
In [12]: clf.score(X_test,y_test)
Out[12]: 1.0
#挑个数据预测下
In [13]: clf.predict([6.3,3.3,4.7,1.6])
Out[13]: array([1.])
参考链接:
朴素贝叶斯
《统计学习方法》知乎参考读物
最大似然估计和最大后验估计
一文搞懂极大似然估计
详解最大似然估计(MLE)、最大后验概率估计(MAP),以及贝叶斯公式的理解
极大似然估计详解
网友评论