1. Naive Bayes là gì?
1.1 Khái niệm

Naive Bayes là thuật toán học máy có giám sát sử dụng cho các bài toán phân loại để tìm xác suất. Ý tưởng chính là sử dụng định lý Bayes để phân loại dữ liệu dựa trên xác suất của các lớp khác nhau với các đặc trưng của dữ liệu.
- Naive Bayes Classifier là mô hình phân loại xác suất đơn giản, có rất ít tham số, dự đoán nhanh.
- Giả định các đặc trưng là độc lập với nhau (independent features).
- Ứng dụng: lọc thư rác, phân tích cảm xúc, phân loại văn bản…
Ví dụ tập dữ liệu thời tiết ảnh hưởng đến quyết định đi chơi golf:
Outlook | Temperature | Humidity | Windy | PlayGolf |
---|---|---|---|---|
Rainy | Hot | High | False | No |
Rainy | Hot | High | True | No |
Overcast | Hot | High | False | Yes |
Sunny | Mild | High | False | Yes |
Sunny | Cool | Normal | False | Yes |
Sunny | Cool | Normal | True | No |
Overcast | Cool | Normal | True | Yes |
Rainy | Mild | High | False | No |
Rainy | Cool | Normal | False | Yes |
Sunny | Mild | Normal | False | Yes |
Rainy | Mild | Normal | True | Yes |
Overcast | Mild | High | True | Yes |
Overcast | Hot | Normal | False | Yes |
Sunny | Mild | High | True | No |
Giả định Naive Bayes:
- Tính độc lập giữa các đặc trưng: Mỗi đặc trưng không ảnh hưởng đến nhau.
- Đặc trưng liên tục có phân phối chuẩn (Gaussian): Nếu đặc trưng liên tục.
- Đặc trưng rời rạc có phân phối đa thức (Multinomial): Nếu đặc trưng rời rạc.
- Các đặc trưng quan trọng như nhau.
- Không có dữ liệu bị thiếu.
Định lý Bayes đối với Naive Bayes
P(A∣B)=P(B∣A)P(A)P(B)(P(B)≠0)P(A∣B)=P(B)P(B∣A)P(A)(P(B)=0)
- P(A∣B)P(A∣B): Xác suất hậu nghiệm (posterior) của AA khi biết BB
- P(B∣A)P(B∣A): Xác suất khả năng (likelihood) của BB khi biết AA
- P(A)P(A): Xác suất tiên nghiệm (prior) của AA
- P(B)P(B): Xác suất của BB
Áp dụng cho dữ liệu có đặc trưng X=(x1,x2,…,xn)X=(x1,x2,…,xn):
P(y∣X)=P(X∣y)P(y)P(X)P(y∣X)=P(X)P(X∣y)P(y)
- P(y∣X)P(y∣X): Xác suất thuộc lớp yy khi biết đặc trưng XX.
- P(X∣y)P(X∣y): Xác suất XX xuất hiện nếu biết lớp yy.
- P(y)P(y): Xác suất tiên nghiệm lớp yy.
- P(X)P(X): Xác suất của XX trong toàn bộ tập dữ liệu.
Với giả định độc lập:
P(y∣x1,…,xn)=P(y)∏i=1nP(xi∣y)P(x1)⋯P(xn)P(y∣x1,…,xn)=P(x1)⋯P(xn)P(y)∏i=1nP(xi∣y)
Vì mẫu số là hằng số với mỗi đầu vào, chỉ cần so sánh tử số:
P(y∣x1,…,xn)∝P(y)∏i=1nP(xi∣y)P(y∣x1,…,xn)∝P(y)i=1∏nP(xi∣y)
Dự đoán lớp:
y=argmaxy P(y)∏i=1nP(xi∣y)y=argymax P(y)i=1∏nP(xi∣y)
Ví dụ minh họa: Dự đoán email spam
- AA: Email là spam
- BB: Email có chứa “khuyến mãi”
P(A)=0.3P(B∣A)=0.8P(B)=0.4P(A)=0.3P(B∣A)=0.8P(B)=0.4
P(A∣B)=0.8×0.30.4=0.6P(A∣B)=0.40.8×0.3=0.6
=> 60% khả năng email chứa “khuyến mãi” là spam.
Ví dụ với thời tiết: Dự đoán (Sunny, Hot, Normal, False)
P(No∣today)=P(Sunny∣No)⋅P(Hot∣No)⋅P(Normal∣No)⋅P(NoWind∣No)⋅P(No)P(today)P(No∣today)=P(today)P(Sunny∣No)⋅P(Hot∣No)⋅P(Normal∣No)⋅P(NoWind∣No)⋅P(No)
P(Yes∣today)=P(Sunny∣Yes)⋅P(Hot∣Yes)⋅P(Normal∣Yes)⋅P(NoWind∣Yes)⋅P(Yes)P(today)P(Yes∣today)=P(today)P(Sunny∣Yes)⋅P(Hot∣Yes)⋅P(Normal∣Yes)⋅P(NoWind∣Yes)⋅P(Yes)
So sánh tử số để chọn lớp.
Đặc trưng liên tục dùng phân phối chuẩn (Gaussian):
P(xi∣y)=12πσy2exp(−(xi−μy)22σy2)P(xi∣y)=2πσy21exp(−2σy2(xi−μy)2)
1.2 Naive Bayes với NLP
- P(y∣X)=P(X∣y)P(y)P(X)P(y∣X)=P(X)P(X∣y)P(y)
- X=(w1,w2,…,wn)X=(w1,w2,…,wn) là các từ trong văn bản.
Với giả định độc lập:
P(X∣y)=P(w1∣y)P(w2∣y)⋯P(wn∣y)P(X∣y)=P(w1∣y)P(w2∣y)⋯P(wn∣y)
Sử dụng Laplace smoothing:
P(w∣y)=Soˆˊ laˆˋn w xuaˆˊt hiện trong y+1Tổng soˆˊ từ trong y+∣V∣P(w∣y)=Tổng soˆˊ từ trong y+∣V∣Soˆˊ laˆˋn w xuaˆˊt hiện trong y+1
- ∣V∣∣V∣ là kích thước tập từ vựng.

Ví dụ:
Nhãn | |
---|---|
Mua ngay, giảm giá 50% | Spam |
Sản phẩm tốt, miễn phí | Spam |
Gặp bạn lúc 7 giờ tối | Not spam |
Chào bạn, tài liệu đính kèm | Not spam |
Tính P(“Mieˆ˜n phıˊ”∣Spam)P(“Mieˆ˜n phıˊ”∣Spam) và P(“Mieˆ˜n phıˊ”∣Not spam)P(“Mieˆ˜n phıˊ”∣Not spam) với Laplace.
1.3 Naive Bayes cho phân loại spam email
- Khi tin nhắn mới tới, xác suất:
P(Spam∣w1,…,wn)=P(Spam)P(w1,…,wn∣Spam)P(w1,…,wn)P(Spam∣w1,…,wn)=P(w1,…,wn)P(Spam)P(w1,…,wn∣Spam)
P(Ham∣w1,…,wn)=P(Ham)P(w1,…,wn∣Ham)P(w1,…,wn)P(Ham∣w1,…,wn)=P(w1,…,wn)P(Ham)P(w1,…,wn∣Ham)
So sánh tử số để phân loại.
- Laplace smoothing:
P(wi∣Spam)=Soˆˊ laˆˋn wi xuaˆˊt hiện trong taˆˊt cả email Spam+1Tổng soˆˊ từ trong email Spam+VP(wi∣Spam)=Tổng soˆˊ từ trong email Spam+VSoˆˊ laˆˋn wi xuaˆˊt hiện trong taˆˊt cả email Spam+1
- VV: Tổng số từ duy nhất trong tập dữ liệu.
1.4 Các thao tác xử lý dữ liệu trước khi đưa vào mô hình
- Chuẩn hóa: Loại bỏ khoảng trắng, loại bỏ email trống.
- Loại bỏ dấu câu, ký tự đặc biệt (trừ các ký tự có ý nghĩa như $).
- Chuyển về chữ thường (lowercase).
- Loại bỏ từ dừng (stopwords).
- Stemming/Lemmatization.
- Thay thế URL, số thành token đặc biệt.
- Thay thế từ viết tắt, lóng thành từ đầy đủ.
- Dùng TF-IDF để giảm trọng số từ quá phổ biến.
TF-IDF:
- TF (Term Frequency): Tần suất từ trong văn bản.
- DF (Document Frequency): Số tài liệu chứa từ đó.
- IDF:
IDF(w)=log(NDF(w))IDF(w)=log(DF(w)N)
- TF-IDF:
TFIDF(w)=TF(w)⋅IDF(w)TFIDF(w)=TF(w)⋅IDF(w)
Từ xuất hiện ở mọi văn bản có IDF = 0 (không mang giá trị phân loại).

1.5 Cân bằng dữ liệu
Dữ liệu phân loại thường mất cân bằng, cần cân bằng lại để mô hình học tốt hơn.
1.5.1 Undersampling (Giảm dữ liệu lớp đa số)
- Nmajority′=NminorityNmajority′=Nminority hoặc Nmajority′=αNminorityNmajority′=αNminority với 0.8≤α≤10.8≤α≤1
- Ưu: giảm thời gian huấn luyện. Nhược: mất dữ liệu quan trọng.
1.5.2 Oversampling (Tăng dữ liệu lớp thiểu số)
- Nminority′=NmajorityNminority′=Nmajority hoặc Nminority′=αNmajorityNminority′=αNmajority
- Phương pháp: Random oversampling (sao chép ngẫu nhiên mẫu lớp thiểu số)
- Ưu: Không mất dữ liệu. Nhược: dễ overfitting.
1.5.3 SMOTE (Synthetic Minority Over-Sampling Technique)
- Tạo dữ liệu mới cho lớp thiểu số, không lặp lại dữ liệu cũ.
- Ý tưởng:
- Chọn một mẫu thiểu số xminxmin
- Chọn kk hàng xóm gần nhất xneighborxneighbor
- Tạo điểm mới:xnew=xmin+λ(xneighbor−xmin)xnew=xmin+λ(xneighbor−xmin)với λ∼U[0,1]λ∼U[0,1]
- Ưu: tạo dữ liệu mới không lặp lại. Nhược: giảm đa dạng nếu chọn kk không hợp lý.
Ví dụ:
ID | Feature 1 (free) | Feature 2 (win) |
---|---|---|
Spam A | 0.2 | 0.7 |
Spam B | 0.3 | 0.8 |
Spam C | 0.25 | 0.75 |
Giả sử chọn Spam A, hàng xóm gần nhất là Spam C, λ=0.5λ=0.5:
- Feature 1: 0.2+0.5×(0.25−0.2)=0.2250.2+0.5×(0.25−0.2)=0.225
- Feature 2: 0.7+0.5×(0.75−0.7)=0.7250.7+0.5×(0.75−0.7)=0.725
Khi áp dụng SMOTE cho Naive Bayes, cần đảm bảo các giá trị ≥0≥0 hoặc chuẩn hóa lại.
Sign up