0
0
Lập trình
Sơn Tùng Lê
Sơn Tùng Lê103931498422911686980

Phát hiện bất thường trong R: Hướng dẫn thực tiễn với ví dụ

Đăng vào 7 tháng trước

• 6 phút đọc

Chủ đề:

KungFuTech

Giới thiệu

Trong thế giới tài chính ngày nay, việc phát hiện bất thường là một yếu tố quan trọng giúp bảo vệ doanh nghiệp khỏi gian lận và rủi ro. Hãy tưởng tượng bạn là giám đốc một công ty thẻ tín dụng và một trong những khách hàng của bạn thường chi tiêu 25 đô la mỗi tuần cho thực phẩm. Đột nhiên, họ thực hiện một giao dịch lớn 700 đô la. Hành vi bất thường này sẽ lập tức khiến bạn nghi ngờ và cần xác minh giao dịch trước khi phê duyệt. Những sự kiện bất ngờ như vậy được gọi là bất thường—các điểm dữ liệu lệch khỏi các mẫu đã được thiết lập.

Phát hiện bất thường đóng vai trò quan trọng trong các ngành như ngân hàng, tài chính, và bảo hiểm (BFSI), nơi thường được sử dụng để phát hiện gian lận, ngăn chặn trộm cắp và theo dõi các giao dịch nghi ngờ. Các công cụ hiện đại như Power BI và các mô hình sử dụng trí tuệ nhân tạo cho phép doanh nghiệp nhận diện những bất thường này trong thời gian thực.

Tuy nhiên, không phải tất cả các bất thường đều mang tính gian lận. Đôi khi, chúng phản ánh những thay đổi thực sự trong cuộc sống, chẳng hạn như bắt đầu một gia đình hoặc tổ chức một buổi lễ lớn. Thách thức nằm ở chỗ phân biệt giữa các hoạt động gian lận và những thay đổi hành vi hợp pháp—và đó là nơi mà các mô hình phát hiện bất thường trong R trở nên hữu ích.

Hiểu về Bất thường

Trong khoa học dữ liệu, bất thường chủ yếu là các điểm ngoại lệ—các giá trị khác biệt rõ rệt so với các mẫu thông thường. Chúng có thể xuất hiện do gian lận, lỗi hệ thống, hoặc thậm chí là các sự kiện hợp pháp. Ví dụ:

  • Nhiều giao dịch rút tiền không hợp pháp từ một thẻ tín dụng duy nhất.
  • Một giao dịch lớn đột ngột không phù hợp với hành vi trước đó của khách hàng.
  • Các giao dịch từ những vị trí địa lý không quen thuộc.

Đối với các công ty BFSI, việc xác định nhanh chóng những trường hợp như vậy có thể ngăn chặn tổn thất và bảo vệ lòng tin của khách hàng. Các công ty tư vấn AI thường triển khai các thuật toán phát hiện bất thường để giúp doanh nghiệp phát hiện gian lận, sự không hiệu quả, hoặc những thay đổi trong hành vi của khách hàng.

Phát hiện Mẫu với R

R cung cấp nhiều gói cho việc phát hiện bất thường, mỗi gói dựa trên các kỹ thuật thống kê khác nhau. Trong hướng dẫn này, chúng ta sẽ khám phá hai phương pháp phổ biến:

  • Gói AnomalyDetection của Twitter – dựa trên thuật toán Seasonal Hybrid ESD (SH-ESD).
  • Gói Anomalize – được xây dựng cho phân tích dữ liệu chuỗi thời gian với các phương pháp phân rã.

Các gói này cho phép doanh nghiệp phát hiện bất thường trong dữ liệu chuỗi thời gian, nơi mà các mẫu như tính mùa vụ và xu hướng có thể che giấu các bất thường.

Ví dụ 1: Lượt xem trang Wikipedia với SH-ESD

Chúng ta bắt đầu với gói AnomalyDetection từ GitHub, gói này xác định các đỉnh và đáy bất thường trong dữ liệu chuỗi thời gian. Hãy lấy lượt xem trang từ trang Wikipedia của FIFA (từ tháng 3 năm 2013 trở đi).

r Copy
# Cài đặt các gói phụ thuộc

install.packages("devtools")  
install.packages("Rcpp")  
library(devtools)  
install_github("petermeissner/wikipediatrend")  
install_github("twitter/AnomalyDetection")

# Tải các thư viện

library(Rcpp)  
library(wikipediatrend)  
library(AnomalyDetection)

# Lấy dữ liệu trang FIFA

fifa_data_wikipedia <- wp_trend("fifa", from="2013-03-18", lang = "en")

# Giữ lại các cột liên quan

fifa_data_wikipedia <- fifa_data_wikipedia[, c("date","views")]

# Áp dụng phát hiện bất thường

anomalies <- AnomalyDetectionTs(fifa_data_wikipedia, direction="pos", plot=TRUE)  
anomalies$plot

Phương pháp này đánh dấu các ngày có lượt xem trang cao bất thường. Ví dụ, các bất thường thường phù hợp với các trận đấu FIFA, tin tức cầu thủ, hoặc các thông báo lớn. Nếu không có sự kiện nào giải thích cho đỉnh này, có thể đây là một bất thường thực sự đáng được điều tra thêm.

Ví dụ 2: Biến động giá Bitcoin với Anomalize

Gói Anomalize là một công cụ mạnh mẽ khác, đặc biệt cho các chuỗi thời gian tài chính như giá tiền điện tử. Nó phân rã một chuỗi thời gian thành xu hướng, tính mùa vụ, và phần còn lại, sau đó nổi bật các mẫu không đều.

r Copy
# Cài đặt các gói

install.packages("anomalize")  
library(devtools)  
install_github("business-science/anomalize")

# Tải các thư viện hỗ trợ

library(tidyverse)  
library(coindeskr)

# Lấy dữ liệu giá Bitcoin

bitcoin_data <- get_historic_price(start = "2017-01-01")  
bitcoin_data_ts <- bitcoin_data %>% rownames_to_column() %>%  
as_tibble() %>% mutate(date = as.Date(rowname)) %>%  
select(-rowname)

# Phân rã và phát hiện bất thường

bitcoin_data_ts %>%  
time_decompose(Price, method = "stl") %>%  
anomalize(remainder, method = "gesd") %>%  
time_recompose() %>%  
plot_anomalies(time_recomposed = TRUE)

Phân tích này tiết lộ những cú nhảy bất ngờ trong giá Bitcoin, chẳng hạn như sự tăng vọt mạnh mẽ vào năm 2018, và cô lập các bất thường như các điểm đỏ trên biểu đồ.

Các Phương Pháp Khác nhau để Phát hiện Bất thường trong R

R cung cấp nhiều gói để xử lý các bất thường, bao gồm:

  • AnomalyDetection của Twitter – thuật toán SH-ESD
  • Anomalize – phát hiện dựa trên phân rã
  • TsOutliers – tập trung vào các ngoại lệ trong chuỗi thời gian
  • Phân tích yếu tố & các phương pháp dựa trên PCA – hữu ích cho dữ liệu đa biến

Mỗi phương pháp có những điểm mạnh riêng, nhưng nguyên tắc cơ bản là giống nhau: đánh dấu các điểm dữ liệu không theo mẫu kỳ vọng.

Thực tiễn tốt nhất trong Phát hiện Bất thường

  • Luôn kiểm tra dữ liệu đầu vào: Đảm bảo dữ liệu sạch và không có lỗi trước khi áp dụng các thuật toán phát hiện bất thường.
  • Sử dụng nhiều phương pháp: Kết hợp nhiều phương pháp phát hiện để tăng khả năng chính xác.
  • Thường xuyên cập nhật mô hình: Các mẫu hành vi của người dùng có thể thay đổi, vì vậy cần cập nhật mô hình thường xuyên.

Những cạm bẫy thường gặp

  • Xem nhẹ các bất thường hợp pháp: Đôi khi, các bất thường có thể là kết quả của các thay đổi hợp pháp trong hành vi người tiêu dùng.
  • Thiếu dữ liệu: Nếu dữ liệu không đủ lớn hoặc không đa dạng, có thể dẫn đến việc phát hiện sai.

Mẹo Tối ưu Hiệu suất

  • Sử dụng dữ liệu mẫu: Chỉ áp dụng phát hiện bất thường cho các mẫu nhỏ hơn để tiết kiệm thời gian và tài nguyên.
  • Tối ưu hóa mã: Đảm bảo mã được tối ưu hóa để tăng tốc độ xử lý.

Giải quyết sự cố

  • Không tìm thấy bất thường: Kiểm tra lại dữ liệu đầu vào và đảm bảo rằng nó đã được phân tích đúng cách.
  • Kết quả không chính xác: Thay đổi phương pháp phát hiện hoặc điều chỉnh các tham số để cải thiện kết quả.

Kết luận

Phát hiện bất thường không chỉ đơn thuần là xác định các con số kỳ lạ—mà là hiểu ngữ cảnh của chúng. Trong BFSI, các bất thường có thể biểu thị cho gian lận, trong khi trong thương mại điện tử, chúng có thể cho thấy sự thay đổi trong hành vi của khách hàng, và trong y tế, chúng có thể làm nổi bật hoạt động bất thường của bệnh nhân.

Bằng cách sử dụng các gói phát hiện bất thường trong R, các doanh nghiệp không chỉ có thể phát hiện các bất thường mà còn có thể thực hiện hành động kịp thời để ngăn chặn rủi ro, tối ưu hóa quy trình, và cải thiện quyết định.

FAQ

1. Phát hiện bất thường là gì?
Phát hiện bất thường là quá trình xác định các điểm dữ liệu không tuân theo các mẫu đã biết trong hệ thống dữ liệu.

2. Tại sao phát hiện bất thường lại quan trọng?
Nó giúp phát hiện gian lận, sự không hiệu quả và các thay đổi trong hành vi người tiêu dùng, từ đó bảo vệ doanh nghiệp.

Tài nguyên tham khảo

Hãy bắt đầu khám phá cách phát hiện bất thường trong dữ liệu của bạn ngay hôm nay!

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào