Classification : Bayesian

Native Bayesian

                                                            ------mahout0.5

           主要的内容:mahout中native bayes文本分类 源码分析和使用

     1 训练过程

           mahout中训练过程包括4个Map/Reduce(job)阶段:

           (1) BayesFeatureDriver

           (2)BayesTfIdfDriver

           (3) BayesWeightSummerDriver

           (4)BayesThetaNormalizerDriver

           接下来几节详细的介绍各个阶段主要完成的工作。

       1.1 BayesFeatureDriver

           作用:计算词频(TF)

           所在包: org.apache.mahout.classifier.bayes.mapreduce.common

  输入格式: KeyValueTextInputFormat.class

  输出格式: BayesFeatureOutputFormat.class

  输出 key 类型: StringTuple.class

  输出 value 类型: DoubleWritable.class

   Map BayesFeatureMapper.java

 

Map阶段 key value
输入 Map 是一次处理一行,每行的格式为: +”\t”+ 单词 ( 单词之间用空格隔开 )
输出
_WT,label,token Ln(1.0+dKJ)/( dKJ2 )1/2 某个类中某个单词在一个文档中的 TF 值。 dKJ 是某个单词在某个文档中出现的次数。∑ dKJ2 是一个文档中所有单词出现次数平方和。
_DF,label,token 1.0
_FC,token 1.0
_LC,label 1.0

Reduce BayesFeatureReducer. java

相同的 key 放在一个 reduce 里执行合并, label 是类别属性, token 是单词。

 

Reduce 阶段 key value 输出文档路径
输入 相同的 key Map 阶段的输出  
输出 _WT,label,token

Ln(1.0+dKJ)/( dKJ2 )1/2

某类中某属性的 TF
$OUTPUT/ trainer-wordFreq
_DF,label,token 某类类中出现某个单词的文档数 $OUTPUT/ trainer-termDocCount
_FC,token 所有训练集出现某单词的文档数 $OUTPUT/ trainer-featureCount
_LC,label 某类下的文档数 $OUTPUT/ trainer-docCount

      1.2 BayesTfidfDriver

           这个阶段的工作主要是求每个类中每个单词的 TFIdf 值,目的是为了降低高频词汇的重要性。

输入格式: SequenceFileInputFormat.class

输出格式: BayesTfIdfOutPutFormat.class

输出 key 类型: StringTuple.class

             输出 value 类型: DoubleWritable.class

        

             (1)     Map 阶段: Map 的输出: label 是类别属性, token 是单词

输入路径: trainer-wordFreq trainer-termDocCount trainer-featureCount 文件

输出: trainer-tfIdf 文件

Map BayesTfIdfMapper.class

            Reduce BayesTfIdfReducer.class

             a.   Map 阶段: Map 的输出: TF trainer-wordFreq 文件中每个类每个属性的 TF 值。 Idf=N/DF, N 是指

            某个类中包含的文档数目, DF 每个类中每个单词出现的次数。

Map阶段 key value
输入

$OUTPUT/ trainer-wordFreq$OUTPUT/trainer-termDocCount$OUTPUT/ trainer-featureCount文件

 

输出
_WT,label,token TF
_WT,label,token Ln(idf)
_FS 1.0

            

待续...

猜你喜欢

转载自lbxc.iteye.com/blog/1513992