100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 《机器学习实战》学习总结(三)朴素贝叶斯在文本分类的应用

《机器学习实战》学习总结(三)朴素贝叶斯在文本分类的应用

时间:2020-11-27 04:10:25

相关推荐

《机器学习实战》学习总结(三)朴素贝叶斯在文本分类的应用

概述

本文采用的是词集模型。

词集模型:将每个单词出现与否作为一个特征,即忽略了单词出现的次数,从而将句子转化为单词向量后,该向量中只有0和1;对应的是词袋模型,将考虑单词出现的次数,从而得到的单词向量,除了0和1还有大于1的整数。

相关概念:

文档:是训练集合,包含了多个句子

句子:对应一个词向量,向量的长度与词汇表的长度相同,元素为1代表对应位置词汇表中的单词出现,否则不出现

单词(词条):句子中的一个词,对应词向量中的一个元素

词汇表:包含了文档中所有可能出现的单词,但不重复。

从训练文本中计算条件概率p(x|c)和先验概率p(c)

说明:c即文本分类的取值,如正常邮件和垃圾邮件;x即某个单词

1、利用文档构建词汇表,假设长度为n,n即文档不重复单词的个数

如下文档(假设每行为一个句子的单词的切分),构成的词汇表为【one, two, three, four,five, six,seven】

上面假设了每个句子一样长,实际上不一定相同,但并不影响这个理解过程

2、根据构建的词汇表将文档转化为训练矩阵m*n,其中m为句子的个数,n为词向量的长度

上述文档转化后的词向量为:

1 1 1 1 00 0

0 1 1 1 10 0

0 0 1 1 11 0

0 0 0 1 11 1

3、计算概率(假设为二分类)

如下为标量:

p(c=0)=0.5 label为0的句子的个数/句子的总数m

p(c=1)=0.5 label为1的句子的个数/句子的总数m

p(wi|c=0)词向量中第i个单词在Label=0的句子中出现的概率:从训练矩阵中将Label=0的行向量都取 出来,将所有行的第i列加起来作为分子,将所有元素都加起来(其实就是一堆1相加)作为分母,相除可得

p(one|c=0)=1/8p(two|c=0)=1/4 p(three|c=0)=1/4p(four|c=0)=1/4 p(five|c=0)=1/8p(six|c=0)=0 p(seven|c=0)=0

p(wi|c=1)词向量中第i个单词在Label=1的句子中出现的概率:从训练矩阵中将Label=1的行向量都取出来,将所有行的第i列加起来作为分子,将所有元素都加起来(其实就是一堆1相加)作为分母,相除可得

p(one|c=1)=0p(two|c=1)=0 p(three|c=1)=1/8p(four|c=1)=1/4 p(five|c=1)=1/4p(six|c=1)=1/4 p(seven|c=1)=1/8

如下为向量:

p0V=【p(w1|c=0),p(w2|c=0),p(w3|c=0),…,p(wn|c=0)】=[1/8 1/4 1/41/4 1/8 0 0 ]

P1V=【p(w1|c=1),p(w2|c=1),p(w3|c=1),…,p(wn|c=1)】=[0 0 1/81/4 1/4 1/41/8 ]

对一个句子进行分类

先将该句子转化为词向量V

该句子为0类的概率:Sum(V.dot(p0V)),即将V中每个元素与p0V中对应的每个元素相乘并求和

该句子为1类的概率:Sum(V.dot(p1V)),即将V中每个元素与p1V中对应的每个元素相乘并求和

比较两个概率值,哪个大则属于哪一类

假设有如下句子[one five tree two seven],转换为句子向量为[11 1 0 1 0 1]

(说明:这个模型是不考虑单词之间的关系的以及先后顺序的)

P(c=0)=1/8*1+1/4*1+1/4*1*1/4*0+1/8*1+0*0+1*0=6/8

P(c=1) = 0 *1+ 0*1+ 1/8*1+1/4*0 + 1/4*1+ 1/4*0+1/8*1=4/8

所以该句子为0类

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。