Как применить классификацию или регрессию для прогнозирования положительных / отрицательных значений в R? - PullRequest
0 голосов
/ 26 апреля 2020

Я пытаюсь использовать разные методы ML для прогнозирования бейсбольных игр. До сих пор я использовал бинарную переменную исхода победы, но я хочу улучшить свой анализ, включив разницу в счете для каждой игры. Я думаю, что использование этого с независимыми переменными поможет улучшить модели, наблюдая не просто выигрыш или проигрыш, но детали того, насколько успешным или насколько плохим был проигрыш.

А вот пример моих данных:

> head(training1[15:22])
# A tibble: 6 x 8
  away_BBSOr away_TB away_OBP away_SLG away_wOBA away_wOPS away_PE scorediff
       <dbl>   <dbl>    <dbl>    <dbl>     <dbl>     <dbl>   <dbl>     <dbl>
1      0.167   0.310    0.314    0.455     0.331     0.786  0.0588         1
2      0.545   0.172    0.342    0.355     0.298     0.653  0.281         -1
3      0.182   0.241    0.278    0.382     0.286     0.669  1             -1
4      0.5     0.552    0.395    0.629     0.366     0.994  0.8            1
5      0.222   0.207    0.289    0.286     0.243     0.529  0.8           -2
6      0.143   0.690    0.298    0.565     0.362     0.927  0.410         -1

Итак, положительное значение в шкале очков показывает, сколько выиграла команда хозяев, а отрицательное значение - в гостях. команда выиграла

Что я хочу сделать, так это структурировать модели ML, чтобы предсказать знак скорифф. Я не уверен, как это сделать конкретно в рамках классификации или регрессии.

Я пробовал это на бинарной переменной win раньше таким образом.

> nnetGrid <- expand.grid(.decay = c(0, 0.01, .1),
+                         .size = c(1:10))
> 
> ctrl <- trainControl(method = "cv", number = 10)
> 
> nn1 <- train(win ~ home_HR +  home_BBSOr +    home_TB +   home_OBP +  home_SLG +  home_wOBA + home_wOPS + home_PE +   away_HR +   away_BBSOr +    away_TB +   away_OBP +  away_SLG +  away_wOBA + away_wOPS + away_PE,
+             data = training1, method = "nnet",
+             trControl = ctrl, tuneGrid = nnetGrid,
+             preProcess = c("center", "scale"), trace = FALSE)
> 
> nnsummary1 <- defaultSummary(data.frame(obs = testing$win,
+                           pred = predict(nn1, newdata = testing)))
> 
> nnsummary1
   Accuracy       Kappa 
0.531288852 0.006887118 

Поверх нейронной net Я пытаюсь использовать lo git, bart, bayesianglm и случайные леса для предсказания. Как бы я go об организации моделей для прогнозирования результатов и определения точности моделей таким образом?

...