mahout 0.7 を使用して分類を行っています。連続変数用のエンコーダがあります
ContinuousValueEncoder durationPlanEncoder = new ContinuousValueEncoder("duration_plan");
このエンコーダーに関連付けられている機能は日数であり、約 6 ~ 16 の範囲で指定できます。
私は OnlineLogisticRegression モデルを使用しており、エンコーダーを使用してトレーニングしています。
durationPlanEncoder.addToVector(null, <duration_plan double val>, trainDataVector);
簡単にするために (Mahout を学習しながらこの分類全体を理解しようとしているため)、2 つの変数を使用しています。1) 6 つのカテゴリを持つカテゴリ変数 - そのうちの 1 つ ("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" の値を変更しても、分類器の精度に影響がないことを言及することです。する必要があります。どのトレーニング データにも存在せず、したがって =1 クラスと相関しない duration_plan の値を指定した場合、分類器はテスト サンプルを =0 として分類することを期待します。右?これは、私が何か間違ったことをコーディングしているに違いないと私に思わせます。任意の提案をいただければ幸いです。
Mahout のドキュメントはひどくまばらです。
ありがとう。