在 Java 的 Apache Mahout 中测试随机梯度下降模型

Posted

技术标签:

【中文标题】在 Java 的 Apache Mahout 中测试随机梯度下降模型【英文标题】:Test a stochastic gradient descent model in Apache Mahout in Java 【发布时间】:2014-07-25 00:35:18 【问题描述】:

我是 Apache Mahout 的新手,我想知道如何测试我使用随机梯度下降算法训练的模型。

我有一个 Java 示例,我正在使用 20 个新闻组数据集训练 OnlineLogisticRegression 算法。

你可以在这里看到这个例子:

https://github.com/jpatanooga/MahoutExamples/blob/master/src/main/java/com/cloudera/mahout/classification/sgd/TwentyNewsgroups.java

现在我没有 java 代码来测试我训练的算法。如您所知,在训练算法之后,我们需要对其进行测试。

在命令行中,mahout 文档建议这样做(此示例适用于朴素贝叶斯分类器,但我假设在 SGD 中它应该是相同的):

  $ mahout testnb 
        -i $WORK_DIR/20news-test-vectors
        -m $WORK_DIR/model 
        -l $WORK_DIR/labelindex 
        -ow 
        -o $WORK_DIR/20news-testing 
        -c

我有我的测试数据集和训练有素的模型。我该怎么办?

【问题讨论】:

【参考方案1】:

在20 newsgroups tutorial 中讨论了testing script for running the examples。查看此脚本,您可以看到 testnb 命令不用于测试随机下降。

如果您按照那里的说明(引用如下),您可以运行他们提供的随机下降模型 -

If running Hadoop in cluster mode, start the hadoop daemons by executing the following commands:

    $ cd $HADOOP_HOME/bin
    $ ./start-all.sh

Otherwise:

    $ export MAHOUT_LOCAL=true

In the trunk directory of Mahout, compile and install Mahout:

    $ cd $MAHOUT_HOME
    $ mvn -DskipTests clean install

Run the 20 newsgroups example script by executing:

    $ ./examples/bin/classify-20newsgroups.sh

如果您想知道他们在做什么,关键就在我上面提到的脚本的最后几行。替换testnb的命令如下:

./bin/mahout org.apache.mahout.classifier.sgd.TestNewsGroups --input $WORK_DIR/20news-bydate/20news-bydate-test/ --model /tmp/news-group.model

【讨论】:

以上是关于在 Java 的 Apache Mahout 中测试随机梯度下降模型的主要内容,如果未能解决你的问题,请参考以下文章

Windows + Eclipse 构建mahout运行环境

数据挖掘---推荐算法(Mahout工具)

推荐系统-02-评价技术

mahout kmeans 聚类:显示错误

Apache Mahout 性能问题

如何在实际项目中使用 mahout 随机森林?