Một bộ lọc thư dùng mô hình Naive Bayes để phân loại email vào k lớp (ví dụ: thư thường, thư rác, quảng cáo, ...) dựa trên sự xuất hiện của m từ khoá cho trước.
Với lớp i, biết xác suất tiên nghiệm πi (∑iπi=1) và, với mỗi từ khoá j, xác suất từ khoá đó xuất hiện trong một email thuộc lớp i là qij (giả định các từ khoá độc lập có điều kiện — "ngây thơ").
Cho một email được mã hoá thành vector nhị phân độ dài m (1 nếu từ khoá xuất hiện, 0 nếu không), hãy tính xác suất hậu nghiệm mỗi lớp theo định lý Bayes:
P(lớp i∣x)∝πi∏j=1mqijxj(1−qij)1−xj
và xác định lớp có xác suất hậu nghiệm lớn nhất (nếu đồng hạng, chọn chỉ số nhỏ nhất).
Dòng 1: hai số nguyên k và m (1≤k, 0≤m). k dòng tiếp theo, dòng thứ i gồm m+1 số thực: πi rồi đến qi1,…,qim (tối đa 6 chữ số thập phân). Dòng cuối: m số nguyên 0/1 là vector đặc trưng của email cần phân loại (nếu m=0 dòng này có thể để trống).
In ra hai giá trị cách nhau bởi khoảng trắng: chỉ số lớp dự đoán (1-based) và xác suất hậu nghiệm tương ứng làm tròn 6 chữ số thập phân (ví dụ 1 0.666667). Nếu với mọi lớp xác suất sinh ra dữ liệu này đều bằng 0 (tổng chuẩn hoá bằng 0), in ra UNDEFINED.
Ví dụ:
Đầu vào:
2 3
0.4 0.8 0.1 0.05
0.6 0.05 0.2 0.3
1 0 1
Đầu ra:
1 0.666667
Đầu vào:
1 0
1.0
Đầu ra:
1 1.000000
Đang tải editor...