【问题标题】:Ensemble SVM in map reduce在 map reduce 中集成 SVM
【发布时间】:2014-04-16 01:02:28
【问题描述】:

我正在为 Map Reduce 中的每个数据集制作 SVM 模型(为此我使用 LibSVM 库)。甚至,我有每个模型的测试结果。 测试结果文件包含以下详细信息。(IT给出关于测试结果的预测)

+1
-1
+1
+1
..
..
+1

我有这样的 5 个测试文件。现在我想在 map reduce 中使用多数投票结合测试结果。 在地图阶段,我想将行号作为 key 的值。如何在映射阶段为所有测试文件提供行号作为值。

【问题讨论】:

  • 这是一项要求,还是您认为这将成为解决方案的一部分?因为我认为你不需要行号。你只需要将我猜的所有这些数字相加,如果正+1获胜。对吗?
  • SVM 通常不太适合在 bagging 集成中使用,因为它们缺乏多样性。在有过拟合倾向的 geteral 分类器中,在 bagged 时往往表现更好。以下演讲很好地讨论了集成分类器中的问题:sandia.gov/~wpk/avi/avatar-tools-background-video.avi

标签: hadoop mapreduce classification svm libsvm


【解决方案1】:

我不知道您是否需要 MapReduce 来完成此任务,但如果您确实需要在 MapReduce 中执行此操作,我将只使用 Map-only 作业,即使没有输出文件也是如此。只使用两个计数器(我没有找到decrCounter 方法,incrCounter 不能取负值)。这是一个简单的伪代码:

enum MyCounter = {POSITIVES, NEGATIVES};
map(LongWritable key, Text value, Reporter reporter) {
    if (value.toString().equals("+1")) {
        reporter.incrCounter(MyCounter.POSITIVES, 1);
    } else {
        reporter.incrCounter(MyCounter.NEGATIVES, 1); 
    }
}

那么,如果POSITIVES > NEGATIVES,+1 获胜!

如果您不需要 MapReduce,您可以只计算所有文件的行数,例如在 Linux 中使用 wc -l 命令,然后计算 +1 的行数,例如使用grep -c

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    • 2012-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多