《朴素贝叶斯分类算法及其MapReduce实现(共7页).docx》由会员分享,可在线阅读,更多相关《朴素贝叶斯分类算法及其MapReduce实现(共7页).docx(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上最近发现很多公司招聘数据挖掘的职位都提到贝叶斯分类,其实我不太清楚他们是要求理解贝叶斯分类算法,还是要求只需要通过工具(SPSS,SAS,Mahout)使用贝叶斯分类算法进行分类。反正不管是需求什么都最好是了解其原理,才能知其然,还知其所以然。我尽量简单的描述贝叶斯定义和分类算法,复杂而有全面的描述参考“数据挖掘:概念与技术”。贝叶斯是一个人,叫(Thomas Bayes),下面这哥们就是。本文介绍了贝叶斯定理,朴素贝叶斯分类算法及其使用MapReduce实现。贝叶斯定理首先了解下贝叶斯定理PHX=PXHP(H)P(X)是不是有感觉都是符号看起来真复杂,我们根据下图理
2、解贝叶斯定理。这里D是所有顾客(全集),H是购买H商品的顾客,X是购买X商品的顾客。自然XH是即购买X又购买H的顾客。P(X) 指先验概率,指所有顾客中购买X的概率。同理P(H)指的是所有顾客中购买H的概率,见下式。PX= XDPH= HDP(H|X) 指后验概率,在购买X商品的顾客,购买H的概率。同理P(X|H)指的是购买H商品的顾客购买X的概率,见下式。PH|X= XHXPX|H= XHH将这些公式带入上面贝叶斯定理自然就成立了。朴素贝叶斯分类分类算法有很多,基本上决策树,贝叶斯分类和神经网络是齐名的。朴素贝叶斯分类假定一个属性值对给定分类的影响独立于其他属性值。描述:这里有个例子假定我们
3、有一个顾客X(age = middle,income=high,sex =man): 年龄(age)取值可以是:小(young),中(middle),大(old) 收入(income)取值可以是:低(low),中(average),高(high) 性别(sex)取值可以是:男(man),女(woman)其选择电脑颜色的分类标号H:白色(white),蓝色(blue),粉色(pink)问题:用朴素贝叶斯分类法预测顾客X,选择哪个颜色的分类标号,也就是预测X属于具有最高后验概率的分类。解答:Step 1也就是说我们要分别计算X选择分类标号为白色(white),蓝色(blue),粉色(pink)的后
4、验概率,然后进行比较取其中最大值。根据贝叶斯定理PHwhiteX=PXHwhiteP(Hwhite)P(X)同理PHblueX=PXHblueP(Hblue)P(X)PHpinkX=PXHpinkP(Hpink)P(X)Step 2其中P(X)为常数。D为全集元组数,Hwhite,D为全集中分类标号为white的元组数。PHwhite= Hwhite,DD同理PHblue= Hblue,DDPHpink= Hpink,DDStep 3那么只需计算PXHwhite就可以了。PXHblue,PXHpink同理就不在进行阐述。对于许多属性的集,PXHwhite有可能是缺失的,对于多个X的计算开销可能
5、非常大,那么根据朴素贝叶斯分类假定一个属性值对给定类的影响独立于其他属性值。PXHwhite=k=13Px1Hwhite=Pxage=middleHwhitePxincome=highHwhitePxsex=manHwhite可以很容易的由训练元组得出:Pxage=middleHwhitePxincome=highHwhitePxsex=manHwhiteStep 4PHwhiteX,, PHblueX,,PHpinkX后验概率中最大的,那么它的分类标号就是X的分类标号。改进1, 目前X(年龄 = 中,收入 = 高,性别 = 男)中的属性都是分类属性,而不是连续值属性,我们要处理连续值属性可以
6、使用如下方法:Pxage=middleHwhite=gxage=middle,white,white=12e-(x-)222连续值属性xage=middle服从均值为,标准差为的高斯分布。2, 如果遇到零概率值怎么办?比如在训练元组中Pxsex=manHwhite为零,可以使用拉普拉斯校准的方法避免该问题。朴素贝叶斯分类的MapReduce实现我们通过MapReduce计算X(age = middle,income=high,sex =man)的分类标号。根据上面的推导,P(X)为常数只需计算PXHwhiteP(Hwhite),PXHblueP(Hblue),PXHpinkP(Hpink)最大
7、值即可。源文件为old:low:man:bluemiddle:high:man:whiteold:low:man:blueyonng:high:woman:whiteyoung:low:woman:pink那么如何使用一次MapReduce就计算出P(Hwhite),PxageHwhite,PxincomeHwhite,PxsexHwhite等等MapClass为 public static class MapClass extends MapReduceBase implements Mapper private final static IntWritable one = new IntW
8、ritable(1); private Text word = new Text(); public void map(LongWritable key, Text value, OutputCollector output, Reporter reporter) throws IOException String line = value.toString(); String words = line.split(:); word.set(SUM); output.collect(word, one); word.set(words3); output.collect(word, one);
9、 word.set(words0 + - + words3); output.collect(word, one); word.set(words1 + - + words3); output.collect(word, one); word.set(words2 + - + words3); output.collect(word, one); ReduceClass为: public static class Reduce extends MapReduceBase implements Reducer public void reduce(Text key, Iterator value
10、s, OutputCollector output, Reporter reporter) throws IOException int sum = 0; while (values.hasNext() sum += values.next().get(); output.collect(key, new IntWritable(sum); 计算结果为:SUM5blue2high-white2low-blue2low-pink1man-blue2man-white1middle-white1old-blue2pink1white2woman-pink1woman-white1yonng-white1young-pink1根据朴素贝叶斯分类法那么有PXHwhitePHwhite=Pxage=middleHwhitePxincome=highHwhitePxsex=manHwhitePHwhite=12221225=110同理PXHbluePHblue=0PXHpinkPHpink=0我们分类选择White。这里只是举例子,所以数据元组很少出现概率为零的可能比较大,元组多时会有改善,或者使用拉普拉斯校准的方法尽量避免出现概率为零的问题。专心-专注-专业