Python phát hiện bất thường

Phát hiện bất thường xác định các mục, điểm dữ liệu, sự kiện hoặc quan sát bất thường khác biệt đáng kể so với tiêu chuẩn. Trong Học máy và Khoa học dữ liệu, bạn có thể sử dụng quy trình này để dọn sạch các giá trị ngoại lệ khỏi bộ dữ liệu của mình trong giai đoạn chuẩn bị dữ liệu hoặc xây dựng hệ thống máy tính phản ứng với các sự kiện bất thường. Ví dụ về các trường hợp sử dụng phát hiện bất thường có thể là phân tích lưu lượng truy cập mạng tăng đột biến, độ lệch chỉ số giám sát ứng dụng hoặc thậm chí phát hiện luồng bảo mật

Bài viết này giải thích cách sử dụng thuật toán Isolation Forests và Local Outlier Factor để phát hiện bất thường [Python] trong bộ dữ liệu của bạn

Hiệu suất của bất kỳ thuật toán Machine Learning nào phụ thuộc nhiều vào độ chính xác của tập dữ liệu được cung cấp. Trong các tình huống thực tế, chúng ta thường xử lý dữ liệu thô để phân tích và xử lý trước khi chạy các tác vụ Machine Learning. Chuẩn bị tập dữ liệu để đào tạo được gọi là Phân tích dữ liệu khám phá [EDA] và phát hiện bất thường là một trong các bước của quy trình này

Sách học máy tốt nhất cho người mới bắt đầu và chuyên gia

Khi Machine Learning ngày càng trở nên phổ biến, cả người mới bắt đầu và chuyên gia đều cần cập nhật những tiến bộ mới nhất. Đối với người mới bắt đầu, hãy xem những cuốn sách Machine Learning tốt nhất có thể giúp hiểu rõ những điều cơ bản. Đối với các chuyên gia, đọc những cuốn sách này có thể giúp bắt kịp với bối cảnh luôn thay đổi. Trong cả hai trường hợp, một số lý do chính để xem những cuốn sách này có thể hữu ích

Đầu tiên, chúng cung cấp một cái nhìn tổng quan toàn diện về chủ đề này, chủ yếu là về các thuật toán học máy. Thứ hai, họ cung cấp những hiểu biết sâu sắc từ các chuyên gia hàng đầu trong lĩnh vực này. Và thứ ba, họ đưa ra lời khuyên cụ thể về cách áp dụng các khái niệm máy học trong các tình huống thực tế. Khi máy học tiếp tục phát triển, không còn nghi ngờ gì nữa, những cuốn sách này sẽ tiếp tục là tài nguyên thiết yếu cho bất kỳ ai có kiến ​​thức trước đó muốn đi trước đường cong

Dị thường là gì?

Điểm bất thường là một mục, điểm dữ liệu, sự kiện hoặc quan sát bất thường khác biệt đáng kể so với tiêu chuẩn. Các thuật toán phát hiện bất thường giúp tự động xác định các điểm dữ liệu trong tập dữ liệu không khớp với các điểm dữ liệu khác. Trong Khoa học dữ liệu và Học máy, điểm dữ liệu bất thường trong tập dữ liệu còn được gọi là "ngoại lệ" và các thuật ngữ này được sử dụng thay thế cho nhau

Đây là cách các điểm bất thường hoặc ngoại lệ từ tập dữ liệu thường xuất hiện trong biểu đồ

Có một số loại bất thường

  • Điểm bất thường là các đối tượng nằm cách xa phân phối trung bình hoặc trung bình của tập dữ liệu. Một ví dụ về điểm bất thường có thể là một giao dịch đơn lẻ của một số tiền lớn từ thẻ tín dụng
  • Bất thường theo ngữ cảnh là bất thường theo ngữ cảnh cụ thể thường xảy ra trong bộ dữ liệu chuỗi thời gian. Ví dụ: lưu lượng truy cập cao vào một trang web có thể là điều phổ biến vào bất kỳ ngày nào trong tuần, nhưng không phải vào cuối tuần. Vì vậy, lưu lượng truy cập tăng đột biến vào cuối tuần có thể thể hiện sự bất thường về ngữ cảnh
  • Một điểm bất thường tập thể mô tả một nhóm các đối tượng bất thường có liên quan. Phiên bản dữ liệu riêng lẻ trong một điểm bất thường tập thể có thể không phải là một điểm bất thường, nhưng nhiều lần xuất hiện của các điểm dữ liệu đó cùng nhau có thể là một điểm bất thường. Ví dụ: một kết nối mạng chậm đến trang web nói chung có thể không phải là vấn đề, nhưng hàng nghìn kết nối như vậy có thể là dấu hiệu của một cuộc tấn công DDoS

Phát hiện dị thường thị giác

Cách nhanh nhất để tìm điểm bất thường trong tập dữ liệu là trực quan hóa các điểm dữ liệu của nó. Ví dụ: có thể dễ dàng xác định các giá trị ngoại lệ bằng cách trực quan hóa chuỗi dữ liệu bằng biểu đồ hộp, biểu đồ phân tán hoặc biểu đồ đường

cốt truyện hộp

Biểu đồ hộp là một cách hiển thị phân phối dữ liệu được tiêu chuẩn hóa dựa trên năm chỉ số. tối thiểu, phần tư thứ nhất [Q1], trung bình, phần tư thứ ba [Q3] và tối đa

Biểu đồ hộp không hiển thị phân phối dữ liệu và biểu đồ. Tuy nhiên, nó vẫn hữu ích để chỉ ra liệu một phân phối có chứa các điểm dữ liệu bất thường tiềm ẩn [ngoại lệ] trong tập dữ liệu hay không

Biểu đồ hộp có các đặc điểm sau

  • Các mặt dưới cùng và trên cùng của hộp là các phần tư dưới và trên. Hộp bao gồm khoảng tứ phân vị chứa 50% dữ liệu
  • Trung tuyến là đường thẳng đứng chia hộp thành hai phần
  • Râu là hai đường bên ngoài hộp đi từ phần tư tối thiểu đến phần tư dưới và sau đó từ phần tư trên đến tối đa
  • Bất kỳ điểm dữ liệu nào nằm bên ngoài râu được coi là ngoại lệ
  • Một biến thể của biểu đồ hộp và râu giới hạn độ dài của râu ở mức tối đa là 1. 5 lần phạm vi liên vùng. Các điểm dữ liệu bên ngoài khoảng thời gian này được biểu diễn dưới dạng các điểm trên biểu đồ và được coi là các ngoại lệ tiềm năng

biểu đồ đường

Biểu đồ đường là lý tưởng để trực quan hóa một loạt các điểm dữ liệu. Nếu chuỗi dữ liệu chứa bất kỳ điểm bất thường nào, chúng có thể dễ dàng nhận dạng bằng mắt thường

Biểu đồ phân tán sử dụng dấu chấm để biểu thị giá trị cho hai biến số khác nhau. Vị trí của mỗi dấu chấm trên trục ngang và trục dọc biểu thị các giá trị cho một điểm dữ liệu riêng lẻ. Biểu đồ phân tán được sử dụng để quan sát mối quan hệ giữa các biến

biểu đồ. io – Biểu đồ phân tán là gì

Nếu tập dữ liệu có điểm bất thường, bạn có thể nhìn thấy chúng trên biểu đồ đó. Đây là hình ảnh trực quan của bộ dữ liệu Iris nổi tiếng, nơi chúng ta có thể dễ dàng thấy ít nhất một ngoại lệ

Phát hiện và sửa lỗi bất thường trong bộ dữ liệu

Trong phần này của bài viết, chúng tôi sẽ chỉ ra mức độ bất thường [hoặc ngoại lệ] có thể ảnh hưởng đáng kể đến kết quả của bất kỳ mô hình Học máy nào bằng cách phân tích một tập dữ liệu đơn giản

Hãy cài đặt một số mô-đun Python cần thiết bằng cách chạy các lệnh sau trong ô của Jupyter Notebook

%pip install sklearn
%pip install pandas
%pip install numpy
%pip install matplotlib
%pip install plotly
%pip install seaborn
%pip install sktime
%pip install statsmodels

Khám phá tập dữ liệu

Bước đầu nhập tập dữ liệu và làm quen với kiểu dữ liệu. Chúng tôi sẽ phân tích một bộ dữ liệu đơn giản chứa doanh số bán cá da trơn từ năm 1986 đến 2001. Bạn có thể tải xuống bộ dữ liệu từ liên kết này

# Import pandas
import pandas as pd

# Read data
dataset = pd.read_csv['catfish_sales_1986_2001.csv', parse_dates=[0]]
# Printing head of the DataFrame
dataset.head[]

đầu ra

Đầu ra cho thấy dữ liệu của chúng tôi có hai cột chứa ngày và số lượng bán hàng mỗi tháng. Bây giờ chúng ta hãy trực quan hóa tập dữ liệu để xem thông tin bán hàng rõ ràng hơn

import plotly.express as px
# Limiting DataFrame to specific date
mask = [dataset['Date'] 

Chủ Đề