2016-12-17 52 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

我附上了我的數據框的外觀的一個簡短例子。我正在考慮將PLAYER列傳遞給GBM。 – Canovice

+0

我知道我可以對其進行測試並查看性能,但我正在直觀地理解GBM如何創建300個虛擬變量來表示一列會影響模型 – Canovice

回答

0

我用因子變量具有大量的GBM的水平,你將面臨的最大問題是,你的計算時間會顯著增加。(這可能不是你的情況作爲一個問題您正在使用的數據集很小)另外,當您繪製可變重要性時,每個因子級別都會單獨顯示,這可能會使得評估重要性變得相當混亂。

除了這個,你提到你有7500周的觀察,50個功能和300名不同的球員。如果你考慮把玩家名稱作爲一個變量,這意味着每個玩家大約有25個obs,這是一個相當小的樣本,可能意味着你的模型不會一般化。所以我個人的建議是放棄這樣做。然而,我明白爲什麼你會這樣做,並建議你嘗試對玩家進行聚類(使用玩家特定的標準或者甚至是某些已有的功能),然後使用玩家所屬的羣集作爲一個變量。

希望這會有所幫助! :)