基于概率论的分类方法:朴素贝叶斯

来源:互联网 发布:手机入侵软件 编辑:程序博客网 时间:2024/05/01 17:16

基础回顾

我们称之为“朴素”,是因为整个形式化过程只做最原始、最简单的假设。

贝叶斯准则:
贝叶斯准则告诉我们如何交换条件概率中的条件与结果,即如果已知p(x|c),要求p(c|x),那么可以使用下面的计算方法:
p(c|x) = p(x|c)p(c)/p(x)。

根据上述公式计算出两个概率p1(x,y)和p2(x,y)。
如果p1(x,y) > p2 (x, y ) , 那么属于类别1;
如果p1(x,y) < p2 (x, y ) , 那么属于类别2。

但这两个准则并不是贝叶斯决策理论的所有内容。使用p1( )和p2()只是为了尽可能简化
描述,而真正需要计算和比较的是p(c1|x,y)和p(c2|x,y)。这些符号所代表的具体意义是:
给定某个由x、y表示的数据点,那么该数据点来自类别c1的概率是多少?数据点来自类别c2的概
率又是多少?注意这些概率与刚才给出的概率p(x,y|c1)并不一样,不过可以使用贝叶斯准则
来交换概率中条件与结果。具体地,应用贝叶斯准则得到:
贝叶斯准则
使用这些定义,可以定义贝叶斯分类准则为:
□如果p(c1|x,y) > P(c2|x, y ) , 那么属于类别 c1。
□如杲p(c1|x,y) < P(c2|x, y ) , 那么属于类别 c2。

准备数据:从文本中构建词向量

准备数据:从文本中构建词向量

要从文本中获取特征,需要先拆分文本。具体如何做呢?这里的特征是来自文本的词条
(token), 一个词条是字符的任意组合。 可以把词条想象为单词,也可以使用非单词词条,如URL、
IP地址或者任意其他字符串。然后将每一个文本片段表示为一个词条向量,其中值为1表示词条
出现在文档中,0表示词条未出现。

词表到向量的转换函数:
词表到向量的转换函数
运行结果:
运行结果

判断留言板留言是否为垃圾信息

现在已经知道一个词是否出现在一篇文档中,也知道该文档所属的类别。重写贝叶斯准则,将之前的x、y 替换为w。粗体w表示这是一个向量,即它由多个数值组成。在这个例子中,数值个数与词汇表中的词个数相同。
p(ci|w) = p(w|ci)p(ci)/p(w)。
我们将使用上述公式,对每个类计算该值,然后比较这两个概率值的大小。如何计算呢?首
先可以通过类别i(侮辱性留言或非侮辱性留言)中文档数除以总的文档数来计算概率p ( ci ) 。接
下来计算p(w|ci), 这里就要用到朴素贝叶斯假设。如果将w展开为一个个独立特征,那么就可
以将上述概率写作p(w0,w1,w2..wN|ci) 。这里假设所有词都互相独立,该假设也称作条件独立性
假设,它意味着可以使用p(w0|ci)p(w1|ci)p(w2|ci)..p(wN|ci)来计算上述概率,这就极大地
简化了计算的过程。

朴素贝叶斯分类器训练函数:
朴素贝叶斯分类器训练函数

朴素贝叶斯分类函数:
朴素贝叶斯分类函数
运行结果:
这里写图片描述

使用朴素贝叶斯过滤垃圾邮件

文件解析及完整的垃圾邮件测试函数:
1
2
3次运行结果(多运行几次,取平均值):
3次运行结果

下一个例子和这个差不多,就不记录了。

1 0