机器学习

浅入浅出:PageRank算法 使用 TextRank 算法为文本生成关键字和摘要 基于物品的协同过滤 如何使用MapReduce实现基于物品的协同过滤(1) 如何使用MapReduce实现基于物品的协同过滤(2) 浅入浅出:K近邻算法 使用mahout下的朴素贝叶斯分类器对新闻分类 使用Affinity Propagation进行聚类 K-medoids聚类 矩阵分解在推荐系统中的应用:NMF和经典SVD实战 使用特征递归消除筛选特征 如何分配权重 比较NMF、PCA和VQ 方差和协方差 基于SVD的协同过滤 逻辑斯谛回归代码实现 隐语义模型和NMF(非负矩阵分解) 使用PCA处理MNIST数据集 使用GBDT选取特征 基于贝叶斯的文本分类系统的数据库设计 在hadoop1.2.1上安装mahout 0.9 Hadoop 2.4 实现Kmeans聚类算法 在Iris数据集上对比PCA、LDA、NMF 基于贝叶斯的文本分类实战 单层决策树 Logistic regression(逻辑斯蒂回归) 基于用户的协同过滤 词袋模型与文档-词矩阵 如何实现拼音与汉字的互相转换 梯度下降法 如何判定相似度 MovieLens数据集介绍 基于KNN的文本分类实战 Jasper文本分类系列博客阅读摘录 使用 Mean Shift进行聚类 朴素贝叶斯的三个常用模型:高斯、多项式、伯努利 使用决策树处理iris数据集 浅入浅出:从Kmeans到Kmeans++ 如何持久化scikit-learn中训练好的模型 浅入浅出:DBSCAN聚类算法(1) 浅入浅出:DBSCAN聚类算法(2) 2015阿里移动推荐算法比赛第一赛季总结 爬山算法 使用朴素贝叶斯分类器划分邮件 层次聚类 基于MapReduce的频繁项集挖掘 搜狗实体关系提取比赛

基于贝叶斯的文本分类系统的数据库设计


#机器学习


2015-05-25

本博客中贝叶斯相关的文章:

本文以使用多项式贝叶斯模型为例。该模型在文本分类这一领域的正确率一般都比较高,而且有一个很大的有点,就是支持增量训练。

在该模型下:

先验概率P(c)= 类c下单词总数/整个训练样本的单词总数

类条件概率P(tk|c)=(类c下单词tk在该类下各个文档中出现过的次数之和+1)/(类c下单词总数+|V|) 

|V|是整个数据集中单词去重后的数量。

下面的数据来自基于naive bayes的文本分类算法这篇文章中有一个小的计算失误(在计算新样本的类别时)。

文档ID 文档内容 文档类别
1 Chinese Beijing Chinese yes
2 Chinese Chinese Shanghai yes
3 Chinese Macao yes
4 Tokyo Japan Chinese no

由上面可以得到:

单词计数表:

单词\文档类别 yes no
Chinese 5 1
Beijing 1 0
Shanghai 1 0
Macao 1 0
Japan 0 1
Tokyo 0 1

汇总表:

属性
单词总数 11
单词去重总数 6
属于yes的文档下的单词总数 8
属于no的文档下的单词总数 3
属于yes的文档数 3
属于no的文档数 1

根据上面的公式,有

P(yes) = 8/11
p(no)  = 3/11
P(Chinese | yes)=(5+1)/(8+6)=6/14=3/7  
P(Japan | yes)=P(Tokyo | yes)= (0+1)/(8+6)=1/14  
P(Chinese|no)=(1+1)/(3+6)=2/9  
P(Japan|no)=P(Tokyo| no) =(1+1)/(3+6)=2/9

所以,对于新样本Chinese Chinese Chinese Tokyo Japan,有:

P(yes | d)
=P(Chinese|yes)×P(Japan|yes)×P(Tokyo|yes)*P(c)
=(3/7)^3×1/14×1/14×8/11
=216/739508
≈0.00029208  

P(no | d)
= P(Chinese|no)×P(Japan|no)×P(Tokyo|no)*P(c)
=(2/9)3×2/9×2/9×3/11
=96/649539
≈0.00014780

故新样本属于yes这个分类。

根据上面的思路,可知数据库中需要两个表,一个单词计数表,一个汇总表,这两个表和上面的两个表格相同。

伯努利模型类似。


( 本文完 )