我是一名刚接触机器学习的植物科学家。我已经成功地编写了机器学习技术的代码和以下教程。我的问题是试图理解如何实际应用这些技术来回答现实世界的问题。我真的不知道如何使用模型输出来回答问题。
我最近遵循了一个教程,创建了一种检测信用卡欺诈的算法。所有的模型都运行得很好,我知道如何构建它们;但是,我到底如何利用这些信息并将其转换为明确的答案?按照相同的示例,假设我为我的工作编写了这段代码,那么我如何获取真实的信用卡数据并使用此算法对其进行筛选?我真的想在运行这些模型和从真实数据中生成有用的输出之间建立联系。
谢谢你们所有人。
为了简洁起见,我将使用这里找到的相同数据集来突出显示一些具体的示例:
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)发布于 2020-03-14 10:12:11
你最好用三个数据集来开发你的模型。培训、测试和验证。(有时使用不同的术语。)在这里,训练集和测试集用于开发模型。您决定的模型决不能看到任何验证集。这个集合用于查看您的模型有多好,实际上它将模拟未来可能会出现的真实世界中的新数据。一旦您确定模型的性能达到了可接受的水平,您就可以继续运行所有数据,以生成最终的操作模型。然后,将感兴趣的任何新的“实时”数据提供给模型,并生成输出。在欺诈检测的情况下,它将输出一些概率:在这里,您需要人工输入来决定将事件标记为足以保证进一步调查的欺诈性的级别。每隔一段时间,或者当你的数据到达或者你的模型性能下降时(欺诈者可能会变得更加狡猾!)你会重复整个过程。
https://stackoverflow.com/questions/60512254
复制相似问题