Tìm hiểu Naive Bayes Classification – Phần 1

Chào mừng các bạn đến với bài viết về Supervised Learning (Học có giám sát). Trong bài viết này, chúng ta sẽ đi vào tìm hiểu về Naive Bayes Classification qua một ví dụ nhỏ để hiểu rõ hơn về các khái niệm thông qua định lý Bayes.

Giới Thiệu

Bài viết này sẽ được chia thành hai phần:

  • Phần một: Trình bày cách hoạt động của Bayes Classifier (Thuật toán phân loại Naive Bayes).
  • Phần hai: Bài tập lập trình bằng Python sử dụng thư viện sklearn, thư viện này đã triển khai sẵn thuật toán Naive Bayes Classifier, giúp chúng ta tiết kiệm thời gian và công sức. Sau đó, chúng ta sẽ nói về độ chính xác của mô hình đã được huấn luyện.

Hãy tưởng tượng rằng chúng ta có hai người, Alice và Bob, mỗi người có cách sử dụng từ ngữ khác nhau. Alice thường kết hợp các từ “love”, “great”, “wonderful”, trong khi Bob thì thích sử dụng các từ “dog”, “ball”, “wonderful”.

Nếu bạn nhận được một email ẩn danh, bạn có thể đoán được người gửi là ai không? Chúng ta sẽ giải quyết câu hỏi này trong bài viết này.

1. Định lý Bayes

Định lý Bayes cho chúng ta biết xác suất của sự kiện A xảy ra dựa trên sự kiện B đã xảy ra.

Ví dụ: P(Fire) là xác suất có lửa, P(Smoke) là xác suất có khói.

P(Fire|Smoke) là xác suất có lửa khi có khói.
P(Smoke|Fire) là xác suất có khói khi có lửa.

Giả sử ta có các xác suất sau:

  • P(Fire) = 1%
  • P(Smoke) = 10%
  • P(Smoke|Fire) = 90%

Theo định lý Bayes, ta có thể tính được xác suất P(Fire|Smoke) = (0.9 * 0.01) / 0.1 = 9%. Kết luận là khi thấy khói, có 9% khả năng là có lửa.

2. Naive Bayes Classifier

Naive Bayes là một trong nhóm các thuật toán áp dụng định lý Bayes. Nó giả định rằng các đặc trưng đầu vào độc lập với nhau. Naive Bayes là bộ phân loại theo xác suất, sử dụng công thức xác suất Bayes để tính toán.

Ví dụ, khi bạn nhận được một tấm ảnh chứa một chữ số từ 0-9, bạn có thể tính toán xác suất của ảnh này với các chữ số từ 0-9 (P(0| ảnh), P(1| ảnh),…), sau đó chọn cặp có xác suất cao nhất là kết quả. Naive Bayes đã được áp dụng thành công trong nhiều lĩnh vực, trong đó có Xử lý ngôn ngữ tự nhiên (Natural Language Processing).

2.1 Tại sao Naive Bayes hiệu quả?

So với các thuật toán phức tạp như Support Vector Machine (SVM) hay Neural Networks, Naive Bayes có thiết kế đơn giản và thời gian xử lý nhanh. Nó được đánh giá là đáng tin cậy và chính xác trong nhiều tình huống của Xử lý ngôn ngữ tự nhiên (NLP).

2.2 Một ví dụ cụ thể

Trong ví dụ này, người đối diện đưa cho bạn một tập dữ liệu huấn luyện được đánh nhãn (label) là “Sports” và “Not Sports”, sau đó họ hỏi bạn rằng câu nói “A very close game” thuộc vào category nào, “Sports” hay “Not Sports”.

Cách làm của chúng ta là tính toán xác suất P(“Sports”|”A very close game”) và P(“Not Sports”|”A very close game”), rồi chọn category có xác suất cao hơn.

Các bước thực hiện như sau:

Bước 1: Feature Engineering
Chúng ta trích xuất các features từ cột “Text” trong dữ liệu đầu vào. Ở đây, chúng ta đếm tần suất xuất hiện của các từ. Ví dụ: với category “Sports” ta thấy từ “Game” xuất hiện 2 lần.

Bước 2: Naive Bayes Classifier
Chúng ta tính toán xác suất bằng cách sử dụng định lý Bayes.

Bước 3: Tính toán xác suất
Chúng ta tính toán xác suất và so sánh P(“A very close game”|”Sports”) và P(“A very close game”|”Not Sports”), cái nào lớn hơn thì chúng ta chọn category đó.

Tuy nhiên, chúng ta cần lưu ý rằng khi từ “close” không xuất hiện trong tập dữ liệu huấn luyện, P(“close”) = 0, dẫn đến P(“A very close game”|”Sports”) = 0. Để giải quyết vấn đề này, chúng ta có thể sử dụng kỹ thuật “Laplace smoothing” để làm mịn dữ liệu.

Tóm lại, Naive Bayes là một thuật toán phân loại hiệu quả với thiết kế đơn giản. Nó đặc biệt phù hợp trong lĩnh vực Xử lý ngôn ngữ tự nhiên (NLP). Một số cách để cải thiện độ chính xác của Naive Bayes gồm: loại bỏ stopwords, lemmatizing words, sử dụng n-grams, sử dụng TF-IDF.

Hy vọng bài viết đã cung cấp cho bạn hiểu biết về Naive Bayes và cách áp dụng nó trong công việc. Nếu bạn có bất kỳ thắc mắc hay góp ý nào, hãy gửi mail về địa chỉ [email protected] để được hỗ trợ.

Tham khảo:

  • Supervised Learning and Naive Bayes Classification
  • Multinomial Naive Bayes for NLP Problems

Đăng ký tham gia nhóm và nhận thêm nhiều tài liệu hữu ích về Data tại link.

FEATURED TOPIC