Trong bài viết này, chúng ta sẽ tìm hiểu về thuật toán phân loại Naive Bayes, một thuật toán cơ bản trong Supervised Learning (Học có giám sát). Bài viết sẽ được chia thành hai phần: phần đầu sẽ giải thích cách hoạt động của thuật toán Naive Bayes và phần tiếp theo sẽ sử dụng thư viện sklearn trên Python để viết code và đánh giá độ chính xác của thuật toán này.
Nào, chúng ta bắt đầu nào!
Bạn đang xem: Phân loại Naive Bayes: Học cùng Izumi.Edu.VN
Phương pháp Naive Bayes
Hãy cùng xem một ví dụ nhỏ. Giả sử chúng ta có hai người bạn là Alice và Bob. Alice thường sử dụng những từ như “yêu thích”, “tuyệt vời”, “tuyệt diệu”, trong khi Bob thường sử dụng từ như “chó”, “quả bóng”, “tuyệt vời”.
Một ngày đẹp trời, bạn nhận được một email ẩn danh với nội dung: “Tôi yêu biển cát. Hơn nữa, hoàng hôn trên bãi biển mang đến cảnh quan tuyệt diệu”. Có thể là Alice hoặc Bob đã gửi email này. Bạn có thể đoán được ai không?
Chính xác, đó là Alice. Chúng ta dựa vào các từ như “yêu thích”, “tuyệt diệu” đã được sử dụng.
Một trường hợp khác, bạn nhận được một email với nội dung là “Tuyệt vời. Yêu thương.” Bạn đoán đó là ai?
Đó là Bob. Nhưng nếu bạn không biết đó là ai, không sao cả! Chúng ta có thể sử dụng Định lý Bayes.
Định lý Bayes
Công thức này cho chúng ta biết xác suất của A xảy ra nếu B cũng xảy ra, được ký hiệu là P(A|B)
. Và nếu chúng ta biết xác suất của B xảy ra khi đã biết A, được ký hiệu là P(B|A)
, cũng như xác suất độc lập của A và B.
Trong trường hợp này, chúng ta có các biểu thức sau:
P(A|B)
là “xác suất của A khi đã biết B”P(A)
là xác suất xảy ra của AP(B|A)
là “xác suất của B khi đã biết A”P(B)
là xác suất xảy ra của B
Ví dụ, P(Lửa)
là xác suất có lửa, P(Khói)
là xác suất nhìn thấy khói. Chúng ta có các trường hợp sau:
P(Lửa|Khói)
có nghĩa là tần suất có lửa khi nhìn thấy khóiP(Khói|Lửa)
có nghĩa là chúng ta thường thấy khói khi có lửa
Công thức này sẽ giúp chúng ta biết điều gì sẽ xảy ra tiếp theo nếu chúng ta đã biết một điều.
Ví dụ: Một đám cháy có xác suất là 1%, nhưng khói khá phổ biến là 10% (do các nhà máy), và 90% đám cháy gây ra khói. Vậy chúng ta có:
P(Lửa|Khói) = P(Lửa) * P(Khói|Lửa) = 1% * 90% = 0.9%
(xác suất nhìn thấy khói nếu có đám cháy)P(Khói) = 10%
Trong trường hợp này, xác suất nhìn thấy khói là 9%, nghĩa là có một đám cháy nguy hiểm.
Tương tự, bạn có thể áp dụng định lý Bayes để giải quyết trường hợp của Bob và Alice, phải không?
Phân loại Naive Bayes
Naive Bayes là một thuật toán phân loại được sử dụng cho các vấn đề phân loại nhị phân (hai lớp) và đa lớp. Kỹ thuật này dễ hiểu nhất khi sử dụng giá trị đầu vào nhị phân hoặc phân loại.
Thuật toán Naive Bayes tính xác suất cho các yếu tố và sau đó chọn kết quả có xác suất cao nhất.
Tuy nhiên, chúng ta cần lưu ý rằng Naive Bayes giả định rằng các yếu tố đầu vào là độc lập với nhau.
Thuật toán này có ứng dụng phổ biến trong các bài toán:
- Dự đoán thời gian thực
- Phân loại văn bản / Lọc thư rác
- Hệ thống Recommendation
Theo mặt toán học, chúng ta có thể viết như sau:
Nếu có một class E và các điểm dữ liệu x1, x2, x3, …
Đầu tiên, chúng ta tính xác suất P(x1|E), P(x2|E), ...
(xác suất xảy ra x1 thuộc class E) và sau đó chọn class có xác suất xảy ra x1 cao nhất.
Trên đây là toàn bộ lý thuyết về Phân loại Naive Bayes. Trong phần tiếp theo, chúng ta sẽ giới thiệu cách sử dụng thư viện sklearn trên Python để áp dụng phân loại Naive Bayes và gắn nhãn email thành “Spam” hoặc “Không Spam”.
Hi vọng bài viết này mang lại những kiến thức hữu ích cho bạn. Hãy theo dõi Izumi.Edu.VN để không bỏ lỡ những bài viết mới nhé.
Nguồn: https://izumi.edu.vn/
Danh mục: Tài liệu toán