Тренировочные прогнозы Карета с помощью метода «Ада» инвертируют прогнозы - PullRequest
0 голосов
/ 31 марта 2020

Вот моя проблема, я использую R с кареткой для сравнения различных моделей.

Уровни моего бинарного класса для прогнозирования были по умолчанию "Нет", " Да "
И я хотел, чтобы мой положительный класс по умолчанию был" Да ", поэтому я изменил его, и все работает отлично.
За исключением одного из методов, которые я использовал. 'ada' возвращает обученные прогнозы, которые не соответствуют вероятности, вычисленной моделью.

Ниже вы можете найти проблему, с которой я сталкиваюсь.

library(ISLR)
library(caret)
# library(foreach)
library(e1071)

data(Caravan)
# I want my positive class to be "Yes" while training

Caravan$Purchase <- relevel(Caravan$Purchase, ref = "Yes")
# We are asked to only take first 1000 obs

split_slice = 1000
train = Caravan[c(0:split_slice),]
test = Caravan[c((split_slice+1): nrow(Caravan)), ]
# I set the trainControl parameter (small values for fast reproducibility)

train.control <- trainControl(method = "repeatedcv", # cv
                              number = 3,
                              repeats = 1,
                              savePredictions = 'final',
                              classProbs = T,
                              # allowParallel = T,
                              # verboseIter = T
                             )
# I set the grid for fast reproducibility

tune.grid <- expand.grid(maxdepth = 2,
                         nu = 0.3,
                         iter = 150
                        )
# I train my model with 'ada' method

boost.tree <- train(Purchase ~ ., data = train, 
                method = "ada", 
                trControl = train.control,
                tuneGrid = tune.grid
                )

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


# here we can see that i predict always yes but it should be no

> boost.tree$pred
    iter maxdepth  nu pred obs          Yes        No rowIndex   Resample
1    150        2 0.3  Yes  No 0.0408888436 0.9591112        4 Fold1.Rep1
2    150        2 0.3  Yes  No 0.0487558062 0.9512442        6 Fold1.Rep1
3    150        2 0.3  Yes  No 0.0986328290 0.9013672       13 Fold1.Rep1
4    150        2 0.3  Yes  No 0.0022378578 0.9977621       15 Fold1.Rep1
5    150        2 0.3  Yes  No 0.1307794728 0.8692205       16 Fold1.Rep1
6    150        2 0.3  Yes  No 0.0006265762 0.9993734       17 Fold1.Rep1
7    150        2 0.3  Yes  No 0.0801457392 0.9198543       23 Fold1.Rep1
> 


Если у вас есть идеи, откуда может возникнуть проблема ?

Также, когда я запускаю другую модель, используя другие методы, у меня нет этой проблемы.
Вот два примера, сохраняющие Те же параметры в TrainControl и уровне класса.

knn <- train(Purchase ~ .,
             data = train,
             method = "knn",
             trControl = train.control,
             tuneGrid = expand.grid(k = 1:25)
            )
> knn$pred
     k pred obs        Yes        No rowIndex   Resample
1   10   No  No 0.00000000 1.0000000      478 Fold1.Rep1
2   10   No Yes 0.00000000 1.0000000      481 Fold1.Rep1
3   10   No  No 0.00000000 1.0000000      466 Fold1.Rep1
4   10   No  No 0.00000000 1.0000000      468 Fold1.Rep1
5   10   No  No 0.00000000 1.0000000      473 Fold1.Rep1
6   10   No  No 0.10000000 0.9000000      474 Fold1.Rep1
7   10   No  No 0.10000000 0.9000000      588 Fold1.Rep1

logit <- train(Purchase ~ ., data = train,
               method = "glm",
               family = binomial(link='logit'),
               trControl = train.control,
                )
> logit$pred
    parameter pred obs          Yes           No rowIndex   Resample
1        none   No  No 1.981114e-03 9.980189e-01        4 Fold1.Rep1
2        none   No  No 1.053505e-02 9.894650e-01        6 Fold1.Rep1
3        none   No  No 5.114459e-02 9.488554e-01       13 Fold1.Rep1
4        none   No  No 6.507634e-02 9.349237e-01       15 Fold1.Rep1
5        none   No  No 3.847417e-01 6.152583e-01       16 Fold1.Rep1
6        none   No  No 6.356885e-02 9.364311e-01       17 Fold1.Rep1
7        none  Yes  No 6.870402e-01 3.129598e-01       23 Fold1.Rep1
...