Как применять методы машинного обучения / как использовать результаты модели - PullRequest
0 голосов
/ 03 марта 2020

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

Недавно я следовал руководству по созданию алгоритма обнаружения мошенничества с кредитными картами. Все модели работали хорошо, и я понимаю, как их построить; но как в мире взять эту информацию и перевести ее в окончательный ответ? Следуя тому же примеру, скажем, я написал этот код для своей работы, как бы я тогда взял реальные данные кредитной карты и просмотрел их с помощью этого алгоритма? Я действительно хочу установить sh связь между запуском этих моделей и генерацией полезного вывода из реальных данных.

Спасибо всем.

Во имя краткости я выделю некоторые конкретные c примеров с использованием того же набора данных, найденного здесь:

https://drive.google.com/file/d/1CTAlmlREFRaEN3NoHHitewpqAtWS5cVQ/view

# Import
creditcard_data <- read_csv('PATH')

# Restructure
creditcard_data$Amount=scale(creditcard_data$Amount)
NewData=creditcard_data[,-c(1)]
head(NewData)

#Split
library(caTools)
set.seed(123)
data_sample = sample.split(NewData$Class,SplitRatio=0.80)
train_data = subset(NewData,data_sample==TRUE)
test_data = subset(NewData,data_sample==FALSE)

1) Дерево решений

library(rpart)
library(rpart.plot)
decisionTree_model <- rpart(Class ~ . , creditcard_data, method = 'class')
predicted_val <- predict(decisionTree_model, creditcard_data, type = 'class')
probability <- predict(decisionTree_model, creditcard_data, type = 'prob')
rpart.plot(decisionTree_model)

2 ) Искусственная нейронная сеть

library(neuralnet)
ANN_model =neuralnet (Class~.,train_data,linear.output=FALSE)
plot(ANN_model)
predANN=compute(ANN_model,test_data)
resultANN=predANN$net.result
resultANN=ifelse(resultANN>0.5,1,0)

3) Повышение градиента

library(gbm, quietly=TRUE)

# train GBM model
system.time(
  model_gbm <- gbm(Class ~ .
                   , distribution = "bernoulli"
                   , data = rbind(train_data, test_data)
                   , n.trees = 100
                   , interaction.depth = 2
                   , n.minobsinnode = 10
                   , shrinkage = 0.01
                   , bag.fraction = 0.5
                   , train.fraction = nrow(train_data) / (nrow(train_data) + nrow(test_data))
  )
)
# best iteration
gbm.iter = gbm.perf(model_gbm, method = "test")
model.influence = relative.influence(model_gbm, n.trees = gbm.iter, sort. = TRUE)

# plot
plot(model_gbm)

# plot
gbm_test = predict(model_gbm, newdata = test_data, n.trees = gbm.iter)
gbm_auc = roc(test_data$Class, gbm_test, plot = TRUE, col = "red")
print(gbm_auc)

1 Ответ

0 голосов
/ 14 марта 2020

Вы разрабатываете свою модель, предпочтительно, с тремя наборами данных. Обучение, тестирование и валидация. (Иногда используется другая терминология.) Здесь для разработки модели используются наборы Train и Test. Модель, которую вы выбираете, никогда не должна видеть какой-либо набор проверки. Этот набор используется, чтобы увидеть, насколько хороша ваша модель, фактически она будет имитировать реальные данные, которые могут появиться в будущем. Как только вы решите, что ваша модель работает на приемлемом уровне, вы можете go вернуться к выполнению всех ваших данных для получения окончательной операционной модели. Затем любые новые «живые» данные, представляющие интерес, поступают в модель и выдают результат. В случае обнаружения мошенничества это вывело бы некоторую вероятность: здесь вам потребуется человеческий вклад, чтобы решить, на каком уровне вы отметите событие как мошенническое, чтобы оправдать дальнейшее расследование. Периодически c с интервалами или по мере поступления ваших данных или снижения производительности вашей модели (мошенники могут стать более хитрыми!), Вы повторяете весь процесс.

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