2016-11-09 4 views
0

によって学習ランダムフォレストを監修:は、だから私はこのように設定されたトレーニングデータを持っている(ただし、はるかに大きい)グループ

各グループ(グループ番号を共有する行は)独特の人々(それぞれのリストが含まれてい
 Group PID Var1 Var2 Best 
    0 111  1  1  1  1 
    1 111  2  2  1  2 
    2 111  3  1  2  2 
    3 112  1  1  2  2 
    4 112  2  2  1  1 
    5 113  1  1  2  2 
    6 113  2  1  1  2 
    7 113  3  2  1  1 
    8 113  4  3  2  2 

各グループ内のPID)、グループ内の1人はBest = 1、残りのグループはBest = 2である。このトレーニングデータを使用するのは、各グループ内のどの人がVar1に基づいて最良か(ベスト= 1)およびVar2。

私はScikitを学び、ランダムなフォレストモデルを使用してテストデータのBestを予測しようとしましたが、グループを考慮せず、グループあたり複数のPIDに対してBest = 1を割り当てることができます。

モデルをトレーニングして実行する方法が不思議だったので、すべての行とグループに割り当てるのではなく、グループごとに1つのベスト= 1を割り当てる方法を学びました。役に立つリソースの方向に私を指摘すると、私はこれについて助けを求めるためにどこに行くべきか正確には分かりません。

+0

あなたの特徴は 'Var1'&' Var2'あるので、これらから 'Best'を予測しようとする:あなたはブール関数のセットとしてこれを読むことができます2つの列。それは、各サンプルを独立して予測し、したがって同じグループ内に多くのサンプルをもたらす可能性があります。 – MMF

+0

いいえ、グループとPIDをフィーチャに追加し、そのフィーチャが目的の結果を生成するかどうかを確認します。ありがとう! – Nizag

+1

私はそれがより良くなるのではないかと恐れています。 'GroupH'という文字をエンコードするには' OneHotEncoder'を使うべきです。それ以外の場合はグループ間でグループをランク付けして何かを意味します。 '111'はグループ '112'よりも重要ではないのです(なぜなら、' 111 <112'なので) – MMF

答えて

2

フィーチャがではない場合は、であり、明確な順序付けられたメトリック(離散的な分類など)では、ワンホットエンコーディングが使用されます。これは、「他の人がいる一方で、元の機能のNクラス(異なる値)のために、我々は、(通常は)のが「良い」となります正確に、N機能のファミリを作成することを意味します悪い "(通常)。 )isGroup111(、isGroup112()、...

Group111 Group112 Group113 PID Var1 Var2 Best 
0  1  0  0  1  1  1  1 
1  1  0  0  2  2  1  2 
2  1  0  0  3  1  2  2 
3  0  1  0  1  1  2  2 
4  0  1  0  2  2  1  1 
5  0  0  1  1  1  2  2 
6  0  0  1  2  1  1  2 
7  0  0  1  3  2  1  1 
8  0  0  1  4  3  2  2 
+1

「PID」を破棄します。私は、IDが分類器に重要な情報をもたらすとは思わない。 – MMF

+0

完全性のためにテーブルに残した。あなたはそれが評価の特徴ではないということは間違いありません。 – Prune

+0

それは意味があります、ありがとう!膨大な数の異なるグループが存在する場合、メモリの懸念はありますか? – Nizag

関連する問題