Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [Xác suất - Thống kê] Bộ lọc thư rác Bayes ngây thơ (Naive Bayes)

    Một bộ lọc thư rác được huấn luyện từ NsN_sNs​ email spam và NhN_hNh​ email hợp lệ (ham). Xét mmm từ khóa đặc trưng, đánh số 1,…,m1,\ldots,m1,…,m. Với từ khóa jjj, biết:

    • csjcs_jcsj​: số email spam trong tập huấn luyện có chứa từ khóa jjj,
    • chjch_jchj​: số email ham trong tập huấn luyện có chứa từ khóa jjj.

    Xác suất tiên nghiệm: P(spam)=NsNs+NhP(\text{spam}) = \dfrac{N_s}{N_s+N_h}P(spam)=Ns​+Nh​Ns​​, P(ham)=NhNs+NhP(\text{ham}) = \dfrac{N_h}{N_s+N_h}P(ham)=Ns​+Nh​Nh​​.

    Xác suất có điều kiện của từng từ khóa được ước lượng bằng phép làm trơn Laplace (add-one): P(xj=1∣spam)=csj+1Ns+2,P(xj=1∣ham)=chj+1Nh+2,P(x_j{=}1 \mid \text{spam}) = \frac{cs_j + 1}{N_s + 2}, \qquad P(x_j{=}1 \mid \text{ham}) = \frac{ch_j + 1}{N_h + 2},P(xj​=1∣spam)=Ns​+2csj​+1​,P(xj​=1∣ham)=Nh​+2chj​+1​, và P(xj=0∣⋅)=1−P(xj=1∣⋅)P(x_j{=}0\mid \cdot) = 1 - P(x_j{=}1\mid \cdot)P(xj​=0∣⋅)=1−P(xj​=1∣⋅).

    Giả định các từ khóa độc lập có điều kiện với lớp (giả định "ngây thơ" của Naive Bayes). Với một email mới có vector đặc trưng x=(x1,…,xm)∈{0,1}mx = (x_1,\ldots,x_m) \in \{0,1\}^mx=(x1​,…,xm​)∈{0,1}m (mỗi xj=1x_j=1xj​=1 nếu email chứa từ khóa jjj), tính: scorespam=P(spam)∏j=1mP(xj∣spam),scoreham=P(ham)∏j=1mP(xj∣ham),\text{score}_{\text{spam}} = P(\text{spam}) \prod_{j=1}^m P(x_j \mid \text{spam}), \quad \text{score}_{\text{ham}} = P(\text{ham}) \prod_{j=1}^m P(x_j \mid \text{ham}),scorespam​=P(spam)∏j=1m​P(xj​∣spam),scoreham​=P(ham)∏j=1m​P(xj​∣ham), rồi chuẩn hóa: P(spam∣x)=scorespamscorespam+scoreham.P(\text{spam} \mid x) = \frac{\text{score}_{\text{spam}}}{\text{score}_{\text{spam}} + \text{score}_{\text{ham}}}.P(spam∣x)=scorespam​+scoreham​scorespam​​.

    Ví dụ: Ns=10,Nh=10N_s=10, N_h=10Ns​=10,Nh​=10, m=2m=2m=2, cs=(8,2)cs=(8,2)cs=(8,2), ch=(2,9)ch=(2,9)ch=(2,9), x=(1,0)x=(1,0)x=(1,0). Ta có P(spam∣x)=0.9375P(\text{spam}\mid x) = 0.9375P(spam∣x)=0.9375.

    • Định dạng đầu vào:
      • Dòng 1: hai số nguyên Ns NhN_s\ N_hNs​ Nh​ (1≤Ns,Nh≤1051 \le N_s, N_h \le 10^51≤Ns​,Nh​≤105).
      • Dòng 2: số nguyên mmm (0≤m≤200 \le m \le 200≤m≤20).
      • Dòng 3: mmm số nguyên cs1,…,csmcs_1,\ldots,cs_mcs1​,…,csm​ (0≤csj≤Ns0 \le cs_j \le N_s0≤csj​≤Ns​) — bỏ qua (rỗng) nếu m=0m=0m=0.
      • Dòng 4: mmm số nguyên ch1,…,chmch_1,\ldots,ch_mch1​,…,chm​ (0≤chj≤Nh0 \le ch_j \le N_h0≤chj​≤Nh​) — bỏ qua nếu m=0m=0m=0.
      • Dòng 5: mmm số nguyên x1,…,xm∈{0,1}x_1,\ldots,x_m \in \{0,1\}x1​,…,xm​∈{0,1} — bỏ qua nếu m=0m=0m=0.
    • Định dạng đầu ra:

      In ra P(spam∣x)P(\text{spam} \mid x)P(spam∣x), làm tròn đúng 6 chữ số thập phân (định dạng %.6f).

    Ví dụ:

    Đầu vào:

    10 10
    2
    8 1
    2 9
    1 0
    

    Đầu ra:

    0.937500
    

    Đầu vào:

    5 15
    0
    

    Đầu ra:

    0.250000
    

    Đang tải editor...