Модель классификации в R - PullRequest
       5

Модель классификации в R

0 голосов
/ 25 февраля 2020

При построении модели классификации в R на наборе данных со многими независимыми переменными, как вы можете узнать, какие переменные следует и не следует включать в модель?

1 Ответ

0 голосов
/ 26 февраля 2020

Для выбора функции доступно довольно много алгоритмов. Вы можете попробовать rfe из пакета карет. Более сложная часть - это определение метрики c, по которой следует хранить переменные.

Например, ниже, я использую набор данных Ionosphere, и я добавил 30 случайных переменных, которые не имеют ничего общего с зависимой переменной, и запустить рекурсивную функцию исключения. Сначала данные:

library(caret)
library(mlbench)
library(e1071)
data(Ionosphere)
set.seed(888)
# exclude first 2 columns
Data = Ionosphere[,-c(1:2)]
# introduce another 30 columns that are random
Data = cbind(Class=Data[,"Class"],Data[-ncol(Data)],
             matrix(rnorm(nrow(Data)*30),ncol=30)
)

Я выбираю наименьший размер, который находится в пределах 1,5% от максимальной точности:

svmFuncs = caretFuncs
svmFuncs$selectSize = pickSizeTolerance

rfe.ctrl <- rfeControl(functions = svmFuncs,
                       method="repeatedcv",
                       number=5,repeats=3)

Мы запускаем его, используя rfe из каретки:

test = rfe(Data[,-1],
           Data$Class,
    sizes = seq(5,50,by=5),
    rfeControl = rfe.ctrl,method="svmLinear")

Результаты:

Recursive feature selection

Outer resampling method: Cross-Validated (5 fold, repeated 3 times) 

Resampling performance over subset size:

 Variables Accuracy  Kappa AccuracySD KappaSD Selected
         5   0.8214 0.5857    0.04111 0.09904         
        10   0.8328 0.6156    0.02787 0.06535        *
        15   0.8385 0.6263    0.03413 0.08129         
        20   0.8291 0.6031    0.03215 0.07959         
        25   0.8319 0.6100    0.03647 0.08981         
        30   0.8253 0.5962    0.03363 0.08314         
        35   0.8272 0.6022    0.03354 0.08179         
        40   0.8271 0.6042    0.03579 0.08845         
        45   0.8243 0.6008    0.03511 0.08086         
        50   0.8138 0.5795    0.03447 0.07868         
        62   0.8092 0.5685    0.02800 0.06212 



test$optVariables
 [1] "V3"  "V7"  "V27" "V5"  "V33" "V31" "V9"  "V8"  "V15" "V29"

Из приведенных выше результатов вы можете выбрать 15 или 25, так что это действительно зависит от ваших данных и того, чего вы хотите достичь с помощью модели в конце.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...