我使用mahout 0.7做一些分类。我有一个连续变量的编码器
ContinuousValueEncoder durationPlanEncoder = new ContinuousValueEncoder("duration_plan");
与此编码器相关的功能是天数,范围可以从大约6到16个。
我正在使用OnlineLogisticRegression模型,我使用编码器来训练它:
durationPlanEncoder.addToVector(null, <duration_plan double val>, trainDataVector);
为了简单起见(因为我试图理解整个分类的东西,同时也学习Mahout),我使用2个变量:1)分类变量有6个类别 - 其中一个(“dev”)总是预测= 1类; 2)这个“duration_plan”变量。
我期望找到的是,当我给出包含类别“dev”和“duration_plan”值的分类器测试数据时,分类器的准确性将随着我给它的“duration_plan”值的增加而增加接近培训数据的平均值。然而,这不是我所看到的。相反,随着“duration_plan”的值变为0.0,分类器的准确度提高。但是 - 没有训练向量,duration_plan = 0.0 !!为什么会这样呢?
然后我修改了我的durationPlanEncoder,如下所示:
durationPlanEncoder.setProbes(2);
并且准确度提高了。当我将探头20的数量增加到200时,它变得更好。为什么?什么是setProbes(),这是一个异常还是这实际上我应该怎么做?
我的问题的最后一部分是提及即使在设置setProbes(20)之后,更改测试数据中“duration_plan”的值对分类器的准确性有 no 影响 - - 我不认为它应该如何。如果我给出duration_plan的值,它甚至不存在于任何训练数据中,因此永远不会与= 1类相关,我希望分类器将测试样本分类为= 0。对?这让我觉得我必须编写一些完全错误的东西。任何建议都表示赞赏。
Mahout文档非常稀少。
感谢。