首先从一个最简单的概率分类器开始,然后给 出一些假设来学习朴素贝叶斯分类器。我们称之为“朴素”,是因为整个形式化过程只做最原始、 最简单的假设。
优缺点
优点:在数据较少的情况下仍然有效,可以处理多类别问题。
缺点:对于输入数据的准备方式较为敏感。
适用数据类型:标称型数据。
贝叶斯决策理论
朴素贝叶斯是贝叶斯决策理论的一部分,那说明是贝叶斯决策理论呢?
假设有一个数据集,由两类数据组成,用p1(x,y)表示数据点(x,y)属于类别1的概率,用p2(x,y)表示数据点(x,y)属于类别2的概率,一个新数据点(x,y),可以用下面的规则来判断它的类别:
- 如果 p1(x,y) > p2(x,y),那么类别为1
- 如果 p2(x,y) > p1(x,y),那么类别为2
贝叶斯定理
P(x|y)=\frac{P(y|x)P(x)}{P(y)}
例子:判断邮件是垃圾邮件还是正常邮件
垃圾邮件:
1、点击 更多 信息
2、最新 产品
3、信息点击 连接
正常邮件:
1、开会
2、信息 详见 邮件
3、最新 信息
新邮件:
最新产品实惠点击连接
伪代码:
0、分词,清洗数据去除无用词如标点符号等
1、构造词库
2、分别计算词库中每个词在垃圾、正常邮件中的概率
3、计算先验概率(正常、垃圾邮件的概率)
4、新邮件分词,并计算邮件内容为垃圾和正常邮件的概率
5、比较概率大小,新邮件属于更大概率的一种
为了避免某些分词没有出现时分子为0的状况,采用分母+词库总数,分子+1的方法计算
①通过上面训练数据获取到词库为:{点击,更多,信息,最新,产品,连接,开会,详见,邮件}
②计算词库中每个单词在垃圾邮件概率
P(点击|垃圾)
=
2
+
1
8
+
9
=
3
17
{\text{P(点击|垃圾)}}=\frac{2+1}{8+9}=\frac{3}{17}
P(点击|垃圾)=8+92+1=173
P(更多|垃圾)
=
1
+
1
8
+
9
=
2
17
{\text{P(更多|垃圾)}}=\frac{1+1}{8+9}=\frac{2}{17}
P(更多|垃圾)=8+91+1=172
P(信息|垃圾)
=
2
+
1
8
+
9
=
3
17
{\text{P(信息|垃圾)}}=\frac{2+1}{8+9}=\frac{3}{17}
P(信息|垃圾)=8+92+1=173
P(最新|垃圾)
=
1
+
1
8
+
9
=
2
17
{\text{P(最新|垃圾)}}=\frac{1+1}{8+9}=\frac{2}{17}
P(最新|垃圾)=8+91+1=172
P(产品|垃圾)
=
1
+
1
8
+
9
=
2
17
{\text{P(产品|垃圾)}}=\frac{1+1}{8+9}=\frac{2}{17}
P(产品|垃圾)=8+91+1=172
P(链接|垃圾)
=
1
+
1
8
+
9
=
2
17
{\text{P(链接|垃圾)}}=\frac{1+1}{8+9}=\frac{2}{17}
P(链接|垃圾)=8+91+1=172
P(开会|垃圾)
=
0
+
1
8
+
9
=
1
17
{\text{P(开会|垃圾)}}=\frac{0+1}{8+9}=\frac{1}{17}
P(开会|垃圾)=8+90+1=171
P(详见|垃圾)
=
0
+
1
8
+
9
=
1
17
{\text{P(详见|垃圾)}}=\frac{0+1}{8+9}=\frac{1}{17}
P(详见|垃圾)=8+90+1=171
P(邮件|垃圾)
=
0
+
1
8
+
9
=
1
17
{\text{P(邮件|垃圾)}}=\frac{0+1}{8+9}=\frac{1}{17}
P(邮件|垃圾)=8+90+1=171
计算词库中每个单词在正常邮件概率
P(点击|正常)
=
0
+
1
6
+
9
=
1
15
{\text{P(点击|正常)}}=\frac{0+1}{6+9}=\frac{1}{15}
P(点击|正常)=6+90+1=151
P(更多|正常)
=
0
+
1
6
+
9
=
1
15
{\text{P(更多|正常)}}=\frac{0+1}{6+9}=\frac{1}{15}
P(更多|正常)=6+90+1=151
P(信息|正常)
=
2
+
1
6
+
9
=
3
15
{\text{P(信息|正常)}}=\frac{2+1}{6+9}=\frac{3}{15}
P(信息|正常)=6+92+1=153
P(最新|正常)
=
1
+
1
6
+
9
=
2
15
{\text{P(最新|正常)}}=\frac{1+1}{6+9}=\frac{2}{15}
P(最新|正常)=6+91+1=152
P(产品|正常)
=
0
+
1
6
+
9
=
1
15
{\text{P(产品|正常)}}=\frac{0+1}{6+9}=\frac{1}{15}
P(产品|正常)=6+90+1=151
P(链接|正常)
=
0
+
1
6
+
9
=
1
15
{\text{P(链接|正常)}}=\frac{0+1}{6+9}=\frac{1}{15}
P(链接|正常)=6+90+1=151
P(开会|正常)
=
1
+
1
6
+
9
=
2
15
{\text{P(开会|正常)}}=\frac{1+1}{6+9}=\frac{2}{15}
P(开会|正常)=6+91+1=152
P(详见|正常)
=
1
+
1
6
+
9
=
2
15
{\text{P(详见|正常)}}=\frac{1+1}{6+9}=\frac{2}{15}
P(详见|正常)=6+91+1=152
P(邮件|正常)
=
1
+
1
6
+
9
=
2
15
{\text{P(邮件|正常)}}=\frac{1+1}{6+9}=\frac{2}{15}
P(邮件|正常)=6+91+1=152
③先验概率:
P(正常)
=
3
6
=
1
2
{\text{P(正常)}}=\frac{3}{6}=\frac{1}{2}
P(正常)=63=21
P(垃圾)
=
3
6
=
1
2
{\text{P(垃圾)}}=\frac{3}{6}=\frac{1}{2}
P(垃圾)=63=21
④分别求出新邮件为正常和垃圾的概率
P(正常|最新产品实惠点击连接)
=
P(最新产品实惠点击连接|正常)P(正常)
P
(
最新产品实惠点击连接
)
{\text{P(正常|最新产品实惠点击连接)}}=\frac{{\text{P(最新产品实惠点击连接|正常)P(正常)}}}{P(\text{最新产品实惠点击连接})}
P(正常|最新产品实惠点击连接)=P(最新产品实惠点击连接)P(最新产品实惠点击连接|正常)P(正常)
P(正常|最新产品实惠点击连接)
=
P(最新|正常)P(产品|正常)P(点击|正常)P(连接|正常)P(正常)
P
(
最新产品实惠点击连接
)
{\text{P(正常|最新产品实惠点击连接)}}=\frac{{\text{P(最新|正常)P(产品|正常)P(点击|正常)P(连接|正常)P(正常)}}}{P(\text{最新产品实惠点击连接})}
P(正常|最新产品实惠点击连接)=P(最新产品实惠点击连接)P(最新|正常)P(产品|正常)P(点击|正常)P(连接|正常)P(正常)
P(正常|最新产品实惠点击连接)
=
2
15
∗
1
15
∗
1
15
∗
1
15
∗
1
2
P
(
最新产品实惠点击连接
)
{\text{P(正常|最新产品实惠点击连接)}}=\frac{\frac{2}{15}*\frac{1}{15}*\frac{1}{15}*\frac{1}{15}*\frac{1}{2} }{P(\text{最新产品实惠点击连接})}
P(正常|最新产品实惠点击连接)=P(最新产品实惠点击连接)152∗151∗151∗151∗21
P(垃圾|最新产品实惠点击连接)
=
P(最新产品实惠点击连接|垃圾)P(垃圾)
P
(
最新产品实惠点击连接
)
{\text{P(垃圾|最新产品实惠点击连接)}}=\frac{{\text{P(最新产品实惠点击连接|垃圾)P(垃圾)}}}{P(\text{最新产品实惠点击连接})}
P(垃圾|最新产品实惠点击连接)=P(最新产品实惠点击连接)P(最新产品实惠点击连接|垃圾)P(垃圾)
P(垃圾|最新产品实惠点击连接)
=
P(最新|垃圾)P(产品|垃圾)P(点击|垃圾)P(连接|垃圾)P(垃圾)
P
(
最新产品实惠点击连接
)
{\text{P(垃圾|最新产品实惠点击连接)}}=\frac{{\text{P(最新|垃圾)P(产品|垃圾)P(点击|垃圾)P(连接|垃圾)P(垃圾)}}}{P(\text{最新产品实惠点击连接})}
P(垃圾|最新产品实惠点击连接)=P(最新产品实惠点击连接)P(最新|垃圾)P(产品|垃圾)P(点击|垃圾)P(连接|垃圾)P(垃圾)
P(垃圾|最新产品实惠点击连接)
=
2
17
∗
2
17
∗
3
17
∗
2
17
∗
1
2
P
(
最新产品实惠点击连接
)
{\text{P(垃圾|最新产品实惠点击连接)}}=\frac{\frac{2}{17}*\frac{2}{17}*\frac{3}{17}*\frac{2}{17}*\frac{1}{2} }{P(\text{最新产品实惠点击连接})}
P(垃圾|最新产品实惠点击连接)=P(最新产品实惠点击连接)172∗172∗173∗172∗21
⑤比较概率大小,新邮件属于更大概率的一种
单词或文本表示成向量
- 单词
词典[我们,去,爬山,今天,你们,昨天,跑步] 每个单词的表示:
我们:(1,0,0,0,0,0,0)
爬山:(0,1,0,0,0,0,0)
跑步:(0,0,0,0,0,0,1)
昨天:(0,0,0,0,0,1,0) - 文本句子的表示(boolean)
词典[我们,又,去,爬山,今天,你们,昨天,跑步]
每个句子的表示
我们今天去爬山:(1,0,1,1,1,0,0,0)
你们昨天跑步:(0,0,0,0,0,1,1,)
你们又去爬山又去跑步:(0,1,1,1,0,1,0,1) - 文本句子的表示(count)-每个单词数学的次数
词典[我们,又,去,爬山,今天,你们,昨天,跑步]
每个句子的表示
我们今天去爬山:(1,0,1,1,1,0,0,0)
你们昨天跑步:(0,0,0,0,0,1,1,)
你们又去爬山又去跑步:(0,2,2,1,0,1,0,1)
Tf-idf表示
tfidf(w) = df(d,w) * idf(w)
(d,w):文档d中w的次数(频)
idf(w):重要性, 等于 log[N/N(w)],其中N是文档总数,N(w)指w在多少个文档中出现