您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 其它文档 > 朴素贝叶斯分类器设计方案v10
朴素贝叶斯分类器设计方案1.数据库基本表格设计针对贝叶斯分类器所需数据结构设计以下4个表格新闻类别表:包括以下3个字段:ID(int),类别编号(int),类别名称(string)IDcategorynumcategory119005哲学上表就记录了一条记录,哲学类的编号为19005。一条记录代表一个新闻类别。不同记录,新闻类别应该保持不同。只有出现新的新闻类别的时候,这个表格才会增加一条记录。实际应用中,新闻类别总数数量级应该是很小的(100这个级别)。因此,ID可以直接采用数据库里自增长的int字段即可。类别编号和类别名称可以采用国家标准,采用对应的字段类型。标签库表:包括以下3个字段:ID(int),标签编号(int),标签名(string)IDlabelnumlabel119蜜蜂蜜蜂这个标签的编号为19一条记录代表一个标签。不同记录,标签名应该保持不同。只有出现新的标签的时候,这个表格才会增加一条记录。实际应用中,标签库的规模应该会在百万级别的范围之内。因此,ID可以直接采用数据库里自增长的int字段即可。标签编号根据设计的编号规则采用合适的数据字段,比如用纯数字编号,就可采用int存储。标签名采用string类别字段。样本数据表:包括以下4个字段:ID(int),样本号(int),标签编号(int),类别编号(string)IDsampleIdlabelnumcategorynum112190052171900531191900541251900551301900561100190057135019005813790-190059112301900510167919005如果一个样本提取10个关键词,那么表示这一个样本,就需要10条记录,例如上表。其中,样本号和类别编号一样,表示这个样本属于哪一种类,只是这10个关键词的标签编号不同。第一条记录的含义就是,在19005类别中,标签编号为2的标签出现了一次。如果每一个文本都提取10个关键词,那么在样本库里统计每一个类别的个数时,就统计第四列出现了多少次这个类别编号,然后除以10,就是这个类别出现的次数。考虑到后面可能每一个文本提取的关键词个数发生改变了,那么上述方法就不行了。因此设计记录样本编号。这样统计某个类别出现的次数时,就可以再加上第二列排重即可。在统计指定类别中,某个标签出现的次数时,就可以根据第三列和第四列统计出来对应的次数。统计参数表:包括以下6个字段:ID(int),标签编号(int),类别编号(int),概率(float),个数(int),总个数(int)IDlabelnumcategorynumprobabilitynumbertotal119190050.01033030002-1190050.05996300050000如果标签编号不是负数。这条记录表示标签编号为19的这个标签,在类别编号为19005的这个类别中出现的概率为probability。number是标签在这个类别里出现的次数,total就是类别出现的次数。probability=(number+1)/(total+2)(1,2是拉普拉斯修正数)如果标签编号为-1.那么这行数据就代表样本空间中,这个类别出现的概率。number就是这个类别出现的次数,total就是总样本数量。probability=(number+1)/(total+N)。N代表样本空间中样本类别的种数。即新闻类别表的记录条数。2.训练过程标签编号表和类别编号表的存储略过。样本存储过程:根据提取每个样本的10个标签,找到这10个标签对应的标签编号,以及这个样本所属类别的编号。把这10条数据存储到样本数据表中。注意,这10个数据的样本编号都一样。训练过程:贝叶斯分类器的训练过程,就是在样本中,统计各个种类出现的概率以及标签在类别中出现的概率。统计类别出现的概率:首先统计出样本所有的类别个数Nk在样本数据表中,统计出样本个数N,找到对应类别以及样本编号不一样的个数,即是这个类别出现的次数Nc。最后概率就是(Nc+1)/(N+Nk).统计指定类别中某个标签出现的概率:在样本数据表中,这个类别出现的次数Nc在上面已经统计出来了。只需要统计指定标签出现的次数,根据样本数据表的第3列和第4列统计出指定类别指定标签出现的次数Nc,i。最后概率就是(Nc,i+1)/(Nc+2)。3.测试过程针对每一个测试样本,利用贝叶斯定理计算出这个样本属于类别库里每一个类别的概率值,最后找到最大的那个,就是该样本所属的类别。样本标签向量:X=(10,30,57,98,104,25,1980,996,5668,87)我们定义A={10,30,57,98,104,25,1980,996,5668,87}。用~A表示所有标签减去A中的剩下的标签集合。我们计算这个样本属于C1这个类别的概率P0。P0=logP(C1)+∑𝑙𝑜𝑔𝑃1(𝑎|𝐶1)𝑎∈𝐴+∑𝑙𝑜𝑔𝑃0(𝑎|𝐶1)𝑎∈~𝐴其中P(C1)是类别C1在样本空间中的出现概率。这个值在统计参数表里一定存在的。𝑃1(𝑎|𝐶1)是在样本空间中类别C1中标签编号是a出现的概率。这些值在统计参数表如果存在就取出来直接用,如果这个值没有出现,说明样本中,C1类的样本标签编号是a的都没有出现,因此出现的概率就是1–(Nc+1)/(Nc+2)。𝑃0(𝑎|𝐶1)是在样本空间中类别C1中标签编号是a不出现的概率。这些值在统计参数表如果存在,存储的是出现的概率,1-取出来的值就就不出现的概率。如果这个值没有出现,说明样本中,C1类的样本标签编号是a的都没有出现,因此出概率就是(Nc+1)/(Nc+2)。4.增量学习这里不讨论增加的样本包含新的标签,或者属于新的新闻类别。当数据样本增加的时候,可以修正统计参数表中对应的参数,分以下几种情况:1.新增样本中,类别是C1,同样这个样本中出现的标签编号在样本空间中同类别中也出现过。首先修改,categorynum是C1的所有行的total++.然后修改这个样本所属类别的出现的概率,P(C1)对应的number++,更新计算概率probability.最后更新这个样本中出现的标签编号对应记录中的number++,更新计算概率probability。2.新增样本中,类别是C1,但是这个样本里出现了以前C1类中从未出现过的标签编号。重复上一种情况的操作。针对这个类里新出现的标签编号。新加一条记录。Number=1.Total是这个类别出现的总次数。更新计算概率。5.新增标签标签新增加一个,那么在标签库表中增加一条记录。增加含有这个标签的样本放到样本数据表里。根据新增加的样本类别,按照增量学习中第2种情况计算。6.新增类别新闻类别增加一个,那么新闻类别表增加一条记录。增加这类新闻的训练样本到样本数据表里。统计参数表中:1.由于类别增加,更新所有的类出现概率值。样本总数更新,类别总数更新。因此,其它类的出现概率要更新。2.针对这个新出现的类别,统计样本中这类样本出现的所有标签的概率。以新纪录添加到统计数据表中。
本文标题:朴素贝叶斯分类器设计方案v10
链接地址:https://www.777doc.com/doc-2324388 .html