Rate this post

Đây là phần thứ 3 của  chuỗi dự án R. Trước đó chúng ta đã nói về Dự án phân tích dữ liệu của Uber và hôm nay chúng ta sẽ thảo luận về Dự án phát hiện gian lận thẻ tín dụng bằng cách sử dụng các khái niệm machine learning và R. Trong Dự án R này, chúng ta sẽ học cách thực hiện phát hiện thẻ tín dụng.

Các bài viết liên quan:

Chúng ta sẽ đi qua các thuật toán khác nhau như Cây quyết định, Hồi quy logistic, Mạng thần kinh nhân tạo và cuối cùng, Bộ phân loại tăng cường Gradient. Để thực hiện việc phát hiện gian lận thẻ tín dụng, chúng tôi sẽ sử dụng tập dữ liệu Giao dịch thẻ có chứa hỗn hợp gian lận cũng như giao dịch không gian lận.

Dự án machine learning – Cách phát hiện gian lận thẻ tín dụng

Mục đích của dự án R này là xây dựng một bộ phân loại có thể phát hiện các giao dịch gian lận thẻ tín dụng. Chúng tôi sẽ sử dụng nhiều thuật toán machine learning khác nhau để có thể phân biệt gian lận với thuật toán không gian lận. Vào cuối dự án machine learning này, bạn sẽ học cách triển khai các thuật toán machine learning để thực hiện phân loại.

Tập dữ liệu được sử dụng trong dự án này có sẵn tại đâyTập dữ liệu phát hiện gian lận

Nhập tập dữ liệu

Chúng tôi đang nhập bộ dữ liệu có chứa các giao dịch được thực hiện bằng thẻ tín dụng-

library(ranger)
library(caret)
library(data.table)
creditcard_data <- read.csv("/home/dataflair/data/Credit Card/creditcard.csv")

Khám phá dữ liệu

Trong phần này của dự án ML phát hiện gian lận, chúng ta sẽ khám phá dữ liệu được chứa trong khung dữ liệu creditcard_data. Chúng tôi sẽ tiếp tục bằng cách hiển thị dữ liệu credititcard_data bằng cách sử dụng hàm head () cũng như hàm tail (). Sau đó, chúng tôi sẽ tiếp tục khám phá các thành phần khác của khung dữ liệu này –

dim(creditcard_data)
head(creditcard_data,6)
tail(creditcard_data,6)
table(creditcard_data$Class)
summary(creditcard_data$Amount)
names(creditcard_data)
var(creditcard_data$Amount)
sd(creditcard_data$Amount)

Thao tác dữ liệu

Trong phần này của dự án khoa học dữ liệu R, chúng tôi sẽ chia tỷ lệ dữ liệu của mình bằng cách sử dụng hàm scale (). Chúng tôi sẽ áp dụng điều này cho thành phần số tiền trong số tiền creditcard_data của chúng tôi. Chia tỷ lệ còn được gọi là tiêu chuẩn hóa tính năng. Với sự trợ giúp của việc chia tỷ lệ, dữ liệu được cấu trúc theo một phạm vi xác định. Do đó, không có giá trị cực đoan nào trong tập dữ liệu của chúng tôi có thể ảnh hưởng đến hoạt động của mô hình của chúng tôi. Chúng tôi sẽ thực hiện việc này như sau:

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

Mô hình hóa dữ liệu

Sau khi chúng tôi đã chuẩn hóa toàn bộ tập dữ liệu của mình, chúng tôi sẽ chia tập dữ liệu của mình thành tập huấn luyện cũng như tập thử nghiệm với tỷ lệ phân tách là 0,80. Điều này có nghĩa là 80% dữ liệu của chúng tôi sẽ được quy cho train_data trong khi 20% sẽ được quy cho dữ liệu thử nghiệm. Sau đó, chúng tôi sẽ tìm các kích thước bằng cách sử dụng hàm dim () –

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)
dim(train_data)
dim(test_data)

Phù hợp với mô hình hồi quy logistic

Trong phần này của dự án phát hiện gian lận thẻ tín dụng, chúng tôi sẽ phù hợp với mô hình đầu tiên của chúng tôi. Chúng ta sẽ bắt đầu với hồi quy logistic. Một hồi quy logistic được sử dụng để mô hình hóa xác suất kết quả của một lớp như đạt / không đạt, tích cực / tiêu cực và trong trường hợp của chúng tôi – gian lận / không gian lận. Chúng tôi tiến hành triển khai mô hình này trên dữ liệu thử nghiệm của chúng tôi như sau:

Logistic_Model=glm(Class~.,test_data,family=binomial())
summary(Logistic_Model)

Sau khi chúng tôi tóm tắt mô hình của mình, chúng tôi sẽ hình dung nó qua các biểu đồ sau:

plot(Logistic_Model)

Đầu ra:

Đầu ra:

Đầu ra:

Đầu ra:

Để đánh giá hiệu suất của mô hình của chúng tôi, chúng tôi sẽ phác thảo đường cong ROC. ROC còn được gọi là Đặc điểm Lạc quan của Người tiếp nhận. Đối với điều này, trước tiên chúng tôi sẽ nhập gói ROC và sau đó vẽ đường cong ROC của chúng tôi để phân tích hiệu suất của nó.

library(pROC)
lr.predict <- predict(Logistic_Model,train_data, probability = TRUE)
auc.gbm = roc(test_data$Class, lr.predict, plot = TRUE, col = "blue")

Đầu ra:

Phù hợp với mô hình cây quyết định

Trong phần này, chúng ta sẽ thực hiện một thuật toán cây quyết định. Cây quyết định để vẽ các kết quả của một quyết định. Những kết quả này về cơ bản là một hệ quả mà qua đó chúng ta có thể kết luận đối tượng thuộc về lớp nào. Bây giờ chúng ta sẽ triển khai mô hình cây quyết định của mình và sẽ vẽ biểu đồ của nó bằng cách sử dụng hàm rpart.plot (). Chúng ta sẽ đặc biệt sử dụng phép chia đệ quy để vẽ sơ đồ cây quyết định.

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)

Đầu ra:

Mạng thần kinh nhân tạo

Mạng thần kinh nhân tạo là một loại thuật toán machine learning được mô phỏng theo hệ thống thần kinh của con người. Các mô hình ANN có thể học các mẫu bằng cách sử dụng dữ liệu lịch sử và có thể thực hiện phân loại trên dữ liệu đầu vào. Chúng tôi nhập gói neuralnet sẽ cho phép chúng tôi triển khai các ANN của mình. Sau đó, chúng tôi tiến hành vẽ biểu đồ bằng cách sử dụng hàm plot (). Bây giờ, trong trường hợp Mạng thần kinh nhân tạo, có một phạm vi giá trị nằm trong khoảng từ 1 đến 0. Chúng tôi đặt ngưỡng là 0,5, nghĩa là, các giá trị trên 0,5 sẽ tương ứng với 1 và phần còn lại sẽ là 0. Chúng tôi thực hiện điều này như sau – 

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)

Đầu ra:

Tăng cường Gradient (GBM)

Gradient Bo boost là một thuật toán machine learning phổ biến được sử dụng để thực hiện các nhiệm vụ phân loại và hồi quy. Mô hình này bao gồm một số mô hình tổng hợp cơ bản như cây quyết định yếu. Những cây quyết định này kết hợp với nhau để tạo thành một mô hình tăng cường độ dốc mạnh mẽ. Chúng tôi sẽ triển khai thuật toán giảm độ dốc trong mô hình của chúng tôi như sau:

library(gbm, quietly=TRUE)

# Get the time to train the GBM model
system.time(
       model_gbm <- gbm(Class ~ .
               , distribution = "bernoulli"
               , data = rbind(train_data, test_data)
               , n.trees = 500
               , interaction.depth = 3
               , n.minobsinnode = 100
               , shrinkage = 0.01
               , bag.fraction = 0.5
               , train.fraction = nrow(train_data) / (nrow(train_data) + nrow(test_data))
)
)
# Determine best iteration based on test data
gbm.iter = gbm.perf(model_gbm, method = "test")

Ảnh chụp màn hình đầu vào:

model.influence = relative.influence(model_gbm, n.trees = gbm.iter, sort. = TRUE)
#Plot the gbm model

plot(model_gbm)

Đầu ra:

Đầu ra:

print ( gbm_auc )

Ảnh chụp màn hình đầu ra:

Bản tóm tắt

Kết thúc dự án Khoa học dữ liệu R của chúng tôi, chúng tôi đã học cách phát triển mô hình phát hiện gian lận thẻ tín dụng bằng cách sử dụng machine learning. Chúng tôi đã sử dụng nhiều thuật toán ML để triển khai mô hình này và cũng vẽ các đường cong hiệu suất tương ứng cho các mô hình. Chúng tôi đã học cách dữ liệu có thể được phân tích và trực quan hóa để phân biệt các giao dịch gian lận với các loại dữ liệu khác.

Trả lời

Email của bạn sẽ không được hiển thị công khai.

Call now