当前位置: 首页>>数据挖掘>> 阅读正文

Naïve Bayes分类算法在Hadoop上的实现

Category: 数据挖掘 View: 14,742 Author: Dong
,

  • 评论 (4)
  • 引用通告 (3)
发表评论 发起引用

  • 1楼blowyourheart 回复

    Post: 2011-09-01 14:40

    明天跟你交流一下面试的情况

    [回复]

    Dong 回复:

    好的,我正好要去实验室,到时候联系你。

    [回复]

  • 2楼slp 回复

    Post: 2013-03-12 14:57

    大侠,我想问你一个问题:
    我要实现数据挖掘的apriori算法,其中有一个运算是计算频繁项Li在事物集合C中出现的次数,我用mapreduce对事物数据进行搜索(扫一遍数据)。当求Li+1项在事物集合C中出现的次数同样还是需要类似的mapredude进行搜索,而且L的迭代次数是不定的(这是由数据产生的频繁项决定的),这个重复迭代不定次数的mapred要怎么实现呢?有时感觉mapred处理单个任务是很好用,但是多个任务拼接,特别是重复任务,我就不知道该怎么实现了,求大神指教

    [回复]

    Dong 回复:

    下一个作业的输入是上一个作业的输出,并通过shell脚本拼接起来就行,比如:
    #!bin/bash
    while [not stop(自己写)];do
    bin/hadoop jar apriori.jar -input /data/input1 -output /data/input2 …
    bin/hadoop jar apriori2.jar -input /data/input2 -output /data/input1 …
    done

    [回复]

    slp 回复:

    目前我有一个困扰,mapreduce架构的编程,他的处理单元是kv模式的,这也有不好的地方。举个例子:
    比如apriori程序,我们可以将每个输入分片的事物集合C输入的value建立一个trie树(假设可以这样做),在下一次扫描数据集合的时候(根据Li的需要)就可以直接用到之前已经建立的trie树来扫描,而不必重复的读入事物集合C耗费大量的io。总而言之,我觉得mapred没有很好的兼容普通单机的编程算法(可能是我还没接触的对应的mapred编程技巧)。

    [回复]

    slp 回复:

    我的意思是tool.run每次向map()函数发送一个kv。map函数只能对局部的数据进行处理,无法对全局数据进行处理

    [回复]

    Dong 回复:

    并不是所有的数据挖掘都适合用MapReduce并行化,能够并行化的前提是,待处理的数据集能够分割成若干个分片,每片独立处理,如果每片之间有点联系,可以再reduce 阶段再次重组数据。

    [回复]

  • 3楼fall221 回复

    Post: 2013-05-08 06:05

    西城兄,我想研究下hadoop的文本分类,有没有最简单级别的demo可以分享一下呢?贝叶斯或者rocchio或者别的都行,想看看框架是怎么样的

    [回复]

    Dong 回复:

    推荐你直接研究Apache开源项目mahout:http://mahout.apache.org/

    [回复]

  • 4楼扁豆 回复

    Post: 2014-07-24 12:55

    董大师您好,能把这个Hadoop实现的Bayes算法的源代码给我么,实在是想学习下,您的技术内幕MapReduce上也提到了bayes的实现,只是太笼统了,自己只看过简单的mapreduce实例,直接实现不出来,不知道是不是方便给我看看源码。多谢。

    [回复]

发表评论