Я - ученый, плохо знакомый с машинным обучением. Я успешно написал код и следовал учебным пособиям по методам машинного обучения. Моя проблема состоит в том, чтобы понять, как на самом деле применять эти методы для ответа на вопросы реального мира. Я не очень понимаю, как использовать результаты модели, чтобы ответить на вопросы.
Недавно я следовал руководству по созданию алгоритма обнаружения мошенничества с кредитными картами. Все модели работали хорошо, и я понимаю, как их построить; но как в мире взять эту информацию и перевести ее в окончательный ответ? Следуя тому же примеру, скажем, я написал этот код для своей работы, как бы я тогда взял реальные данные кредитной карты и просмотрел их с помощью этого алгоритма? Я действительно хочу установить 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)