2016-12-17 11 views
0

私は、NBA選手が以前のすべてのシーズンの試合でどれだけうまく演奏したかを予測するバスケットボールモデルを作成しています。 NBAチームには約10人のプレイヤーがいます。今シーズンは30チームが約25試合をプレイしていますので、私のデータフレームにはこの時点で約10 * 30 * 25 = 7,500回の観測があります。私は毎日自分のモデルを実行し、翌日にどのくらいプレイするのかを予測します。したがって、明日は約10 * 30 = 300の予測を行います。GBMの処理要因変数は、あまりにも多くの要因を心配しました

私の質問はこれです - 現在私は予測のために使用している約50列/フィーチャ/ x変数を持っています。これらはすべて数値変数です(スコアの平均点数、平均リバウンド数など)。しかし、私は自分のモデルが各行に対応するプレイヤーを知るのに役立つと思います。つまり、私は51番目の列、プレーヤーの名前を含む因子変数を渡したいと思います。私はオンラインでGBMが要因変数を扱うことができることを読んでいますが、内部的に「ダミー化」していますが、300人のプレイヤーがうまく機能しないことが心配です。すべてのプレイヤー名の因子変数を渡して、最終的にモデルを傷つけるかどうかは、内部で作成するダミー変数の数が多いか、これでいいですか?

my_df       
         PLAYER FG FGA X3P X3PA FT FTA 
1042   Andre Drummond 6 16 0 0 6 10 
17747   Marcus Morris 6 19 1 4 5 6 
14861 Kentavious Caldwell-Pope 7 14 4 7 3 3 
7976   Ersan Ilyasova 6 12 3 6 1 2 
22401   Reggie Jackson 4 10 2 4 5 5 
24475   Stanley Johnson 3 10 1 3 0 0 
24649    Steve Blake 1 6 1 5 0 0 
12489    Jodie Meeks 1 4 0 0 0 0 
1955    Aron Baynes 3 5 0 0 0 0 
21500    Paul Millsap 7 15 2 6 3 4 
+0

この部分は私には分かりません。「私のモデルは、各行がどのプレイヤーに対応しているかを知る上で役立つと思います。さもなければあなたのモデルは誰が予測されたのか分からないでしょうか?あなたはあなたのデータの代表的なサンプルを投稿できますか?一般的に、GBMはカテゴリ変数を扱うことができますが、ここで必要なことはわかりません。 –

+0

私は、私のデータフレームがどのように見えるかの短い例を添付しました。私はGBMに因子としてPLAYER列を渡すことを考えています。 – Canovice

+0

私はちょうどそれをテストしてパフォーマンスを見ることができると知っていますが、1つの列を表す300のダミー変数を作成するGBMがモデルにどのように影響するかを直感的に理解しようとしています – Canovice

答えて

0

私はGBMのレベルの数が多い因子変数を使用している、あなたがそれに直面する最大の問題は、あなたの計算時間が大幅に増加することである。(とあなたのケースのための問題ではないかもしれません使用しているデータセットが小さい)あなたは

gbm_model <- train(A0 ~ ., 
       data = training, 
       method="gbm", 
       distribution = "bernoulli", 
       metric="ROC", 
       maximise=TRUE, 
       tuneGrid=grid, 
       train.fraction = 0.6, 
       trControl=ctrl) 
ggplot(varImp(gbm_model, scale=TRUE)) 

変数の重要度をプロットした場合も、各因子のレベルはロバの重要性へのそれはかなり混乱させることができ、個別に表示されます。

これ以外にも、7,500の観測値、50のフィーチャ、300の異なるプレイヤーがあると言います。プレイヤーごとに約25 obsを意味する変数としてプレーヤー名を追加することを検討した場合、これはかなり小さなサンプルであり、モデルが一般化しにくいことを意味する場合があります。だから、私の個人的な提案はそうするのを嫌うことだろう。

しかし、私はあなたがそうしたいと思う理由を見て、プレイヤーをクラスタリングすることを提案します(プレイヤー固有の基準を使用するか、または既に持っている機能を使用することをお勧めします)変数として

希望すると便利です。 :)

関連する問題