标签:概率论 multi color 贝叶斯 1.0 优点 式表 ade tag
首先介绍一下贝叶斯:
贝叶斯(约1702-1761) Thomas Bayes,英国数学家。
约1702年出生于伦敦,做过神甫。1742年成为英国皇家学会会员。1761年4月7日逝世。贝叶斯在数学方面主要研究概率论。
他首先将归纳推理法用于概率论基础理论,并创立了贝叶斯统计理论,对于统计决策函数、统计推断、统计的估算等做出了贡献。
朴素贝叶斯算法:
朴素贝叶斯算法是基于贝叶斯定理与特征条件独立假设的分类方法。
朴素贝叶斯分类器(Naive Bayes Classifier,或 NBC)发源于古典数学理论,有着坚实的数学基础,以及稳定的分类效率。
联合概率:表示两个事件共同发生的概率。A与B的联合概率记为P(A,B)。
条件概率:指事件A在另外一个事件B已经发生条件下的发生概率。记为P(A|B),读作“在B的条件下A的概率”。
在给定类变量y和从属特征向量x1到xn的情况下,贝叶斯定理表明了以下关系:
\begin{align}\notag
P(y|x_{1},x_{2},...,x_{n}) = \frac{P(x_{1},x_{2},...,x_{n} | y)P(y)}{P(x_{1},x_{2},...,x_{n}))}
\end{align}
\begin{align}\notag
P(x_{1},x_{2},...,x_{n}|y) = P(x_{1}|y)P(x_{2}|y)...P(x_{n}|y)
\end{align}
\begin{align}\notag
P(y|x_{1},x_{2},...,x_{n}) = \frac{P(y)\prod_{i=1}^{n}P(x_{i}| y)}{P(x_{1},x_{2},...,x_{n})}
\end{align}
在一个训练集中,m类文章有30篇,n类文章有70篇,其中出现A、B、C、D四个词的个数如下表所示。
m | n | |
---|---|---|
A | 7 | 55 |
B | 11 | 51 |
C | 21 | 15 |
D | 64 | 0 |
总计 | 103 | 121 |
当要预测的文章中出现了B、C、D三个词,则该文章属于m类还是n类?
属于m类的概率为:
\begin{align}\notag
P(m|B,C,D) = \frac{P(m)P(B,C,D| m)}{P(B,C,D)}
=\frac{11}{103}\cdot \frac{21}{103}\cdot \frac{64}{103}\cdot \frac{30}{100} \div P(B,C,D)
=\frac{0.00405}{P(B,C,D)}
\end{align}
\begin{align}\notag
P(n|B,C,D) = \frac{P(n)P(B,C,D| n)}{P(B,C,D)}
=\frac{51}{121}\cdot \frac{15}{121}\cdot \frac{0}{121}\cdot \frac{70}{100} \div P(B,C,D)
=\frac{0}{P(B,C,D)}
\end{align}
\begin{align}\notag
P(m|B,C,D) > P(n|B,C,D)
\end{align}
当某个分量在训练集某个分类中从没出现过,会导致整个实例的计算结果为0,如上面属于n类的概率。为了解决这个问题,使用拉普拉斯平滑进行处理,公式如下。
\begin{align}\notag
\hat{}\theta_{yi} = \frac{N_{yi}+\alpha}{N_{y}+\alpha n}
\end{align}
上式表示在分子上加1,在分母上加上1乘以特征的数量即可。上述例子中属于n类的概率为:
\begin{align}\notag P(m|B,C,D) = \frac{P(m)P(B,C,D| m)}{P(B,C,D)} =\frac{51+1}{121+1\times 4}\cdot \frac{15+1}{121+1\times 4}\cdot \frac{0+1}{121+1\times 4}\cdot \frac{70}{100} \div P(B,C,D) =\frac{0.00298}{P(B,C,D)} \end{align}
分类准确率高,速度快
基于样本特征独立的假设,如果特征有关联是效果不好
sklearn.naive_bayes.MultinomialNB(alpha=1.0)
alpha
:平滑系数
from sklearn.naive_bayes import MultinomialNB
from sklearn.datasets import fetch_20newsgroups
from sklearn.feature_extraction.text import TfidfVectorizer
news_train = fetch_20newsgroups(subset="train")
news_test = fetch_20newsgroups(subset="test")
tfidf = TfidfVectorizer()
news_train_data = tfidf.fit_transform(news_train.data)
news_train_target = news_train.target
news_test_data = tfidf.transform(news_test.data)
news_test_target = news_test.target
mnb = MultinomialNB()
mnb.fit(news_train_data,news_train_target)
print("准确率为:",mnb.score(news_test_data,news_test_target))
我一直在,守着你的天真和笑容。——《哆啦A梦》
标签:概率论 multi color 贝叶斯 1.0 优点 式表 ade tag
原文地址:https://www.cnblogs.com/dblsha/p/10188217.html