0

Tất tần tật về Naive Bayes

1. Naive Bayes

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(AB)=P(BA)P(A)P(B)(P(B)0)P(A|B) = \frac{P(B|A) P(A)}{P(B)} \quad (P(B) \neq 0)

  • P(AB)P(A|B): Xác suất hậu nghiệm (posterior) của AA khi biết BB
  • P(BA)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 = (x_1, x_2, ..., x_n):

P(yX)=P(Xy)P(y)P(X)P(y|X) = \frac{P(X|y) P(y)}{P(X)}

  • P(yX)P(y|X): Xác suất thuộc lớp yy khi biết đặc trưng XX.
  • P(Xy)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(yx1,...,xn)=P(y)i=1nP(xiy)P(x1)P(xn)P(y|x_1, ..., x_n) = \frac{P(y) \prod_{i=1}^n P(x_i|y)}{P(x_1)\cdots P(x_n)}

Vì mẫu số là hằng số với mỗi đầu vào, chỉ cần so sánh tử số:

P(yx1,...,xn)P(y)i=1nP(xiy)P(y|x_1,...,x_n) \propto P(y) \prod_{i=1}^n P(x_i|y)

Dự đoán lớp:

y=argmaxy P(y)i=1nP(xiy)y = \arg\max_y \ P(y) \prod_{i=1}^n P(x_i|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(BA)=0.8P(B)=0.4P(A) = 0.3 \\ P(B|A) = 0.8 \\ P(B) = 0.4

P(AB)=0.8×0.30.4=0.6P(A|B) = \frac{0.8 \times 0.3}{0.4} = 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(Notoday)=P(SunnyNo)P(HotNo)P(NormalNo)P(NoWindNo)P(No)P(today)P(\text{No}|today) = \frac{P(\text{Sunny}|\text{No}) \cdot P(\text{Hot}|\text{No}) \cdot P(\text{Normal}|\text{No}) \cdot P(\text{NoWind}|\text{No}) \cdot P(\text{No})}{P(today)}

P(Yestoday)=P(SunnyYes)P(HotYes)P(NormalYes)P(NoWindYes)P(Yes)P(today)P(\text{Yes}|today) = \frac{P(\text{Sunny}|\text{Yes}) \cdot P(\text{Hot}|\text{Yes}) \cdot P(\text{Normal}|\text{Yes}) \cdot P(\text{NoWind}|\text{Yes}) \cdot P(\text{Yes})}{P(today)}

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(xiy)=12πσy2exp((xiμy)22σy2)P(x_i|y) = \frac{1}{\sqrt{2\pi \sigma_y^2}} \exp\left( -\frac{(x_i - \mu_y)^2}{2\sigma_y^2} \right)


1.2 Naive Bayes với NLP

  • P(yX)=P(Xy)P(y)P(X)P(y|X) = \frac{P(X|y) P(y)}{P(X)}
  • X=(w1,w2,...,wn)X = (w_1, w_2, ..., w_n) là các từ trong văn bản.

Với giả định độc lập:

P(Xy)=P(w1y)P(w2y)P(wny)P(X|y) = P(w_1|y) P(w_2|y) \cdots P(w_n|y)

Sử dụng Laplace smoothing:

P(wy)=Soˆˊ laˆˋn w xuaˆˊt hiện trong y+1Tổng soˆˊ từ trong y+VP(w|y) = \frac{\text{Số lần w xuất hiện trong y} + 1}{\text{Tổng số từ trong y} + |V|}

  • V|V| là kích thước tập từ vựng.

Ví dụ:

Email 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(\text{"Miễn phí"}|\text{Spam})P("Mieˆ˜n phıˊ"Not spam)P(\text{"Miễn phí"}|\text{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(Spamw1,...,wn)=P(Spam)P(w1,...,wnSpam)P(w1,...,wn)P(\text{Spam}|w_1, ..., w_n) = \frac{P(\text{Spam}) P(w_1,...,w_n|\text{Spam})}{P(w_1,...,w_n)}

P(Hamw1,...,wn)=P(Ham)P(w1,...,wnHam)P(w1,...,wn)P(\text{Ham}|w_1, ..., w_n) = \frac{P(\text{Ham}) P(w_1,...,w_n|\text{Ham})}{P(w_1,...,w_n)}

So sánh tử số để phân loại.

  • Laplace smoothing:

P(wiSpam)=Soˆˊ laˆˋwi xuaˆˊt hiện trong taˆˊt cả email Spam+1Tổng soˆˊ từ trong email Spam+VP(w_i|\text{Spam}) = \frac{\text{Số lần } w_i \text{ xuất hiện trong tất cả email Spam} + 1}{\text{Tổng số từ trong email Spam} + V}

  • 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 \left( \frac{N}{DF(w)} \right)

  • TF-IDF:

TFIDF(w)=TF(w)IDF(w)TFIDF(w) = TF(w) \cdot 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=NminorityN_{majority}' = N_{minority} hoặc Nmajority=αNminorityN_{majority}' = \alpha N_{minority} với 0.8α10.8 \leq \alpha \leq 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=NmajorityN_{minority}' = N_{majority} hoặc Nminority=αNmajorityN_{minority}' = \alpha N_{majority}
  • 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:
    1. Chọn một mẫu thiểu số xminx_{min}
    2. Chọn kk hàng xóm gần nhất xneighborx_{neighbor}
    3. Tạo điểm mới:

      xnew=xmin+λ(xneighborxmin)x_{new} = x_{min} + \lambda (x_{neighbor} - x_{min})

      với λU[0,1]\lambda \sim 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\lambda = 0.5:

  • Feature 1: 0.2+0.5×(0.250.2)=0.2250.2 + 0.5 \times (0.25 - 0.2) = 0.225
  • Feature 2: 0.7+0.5×(0.750.7)=0.7250.7 + 0.5 \times (0.75 - 0.7) = 0.725

Khi áp dụng SMOTE cho Naive Bayes, cần đảm bảo các giá trị 0\geq 0 hoặc chuẩn hóa lại.



All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí