Logistic Regression in Spam Filtering
Hồi quy logistic trong lọc spam
Công ty nào đang ứng dụng Hồi quy logistic?
Mỗi sáng bạn mở Gmail và hộp thư đến rất gọn — không có email giả ngân hàng, không có "trúng thưởng 500 triệu", không có "xác thực tài khoản NGAY". Bạn hiếm khi thấy vì chúng đã bị âm thầm chuyển vào thùng rác trước khi bạn kịp nhìn.
Dưới đây là một hộp thư mô phỏng để bạn nhìn thẳng vào cơ chế. Thử bật/tắt các đặc trưng và kéo ngưỡng — cùng một dãy email, nhưng cách phân loại thay đổi từng giây.
Precision = tỉ lệ email bị đánh dấu spam đúng thật là spam. Recall = tỉ lệ email spam thật bị hệ thống bắt được. Khi bạn tăng ngưỡng, precision tăng (ít báo nhầm) nhưng recall giảm (bỏ sót nhiều hơn). Gmail cân bằng hai chỉ số này trên hàng tỷ email mỗi ngày.
Vấn đề công ty cần giải quyết
Gmail phục vụ 1,8 tỷ người dùng. Mỗi ngày hệ thống nhận hàng chục tỷ email, trong đó khoảng 15 tỷ là thư rác. Kẻ gửi spam liên tục đổi chiến thuật: viết sai chính tả cố ý (tr-úng th-ưởng), chèn ký tự đặc biệt, thay domain mới, ẩn chữ vào hình ảnh.
Vấn đề cốt lõi: mỗi email phải được gán một xác suất spam, rồi hệ thống tự quyết định vào hộp thư hay thùng rác. Sai chiều này (để lọt spam) gây phiền; sai chiều kia (chặn nhầm email quan trọng của sếp) gây hậu quả nghiêm trọng.
Bạn không bao giờ nhìn thấy — hộp thư sạch. Đây là "công việc im lặng" làm Gmail đáng dùng.
Bỏ sót = mất tiền (lừa đảo trúng ví). Báo nhầm = mất hợp đồng (email sếp vào thùng rác).
Cách Hồi quy logistic giải quyết vấn đề
Trích xuất đặc trưng từ email. Hệ thống bóc tách mọi dấu hiệu có thể: số từ VIẾT HOA, số link, từ khoá đáng ngờ, domain người gửi, IP máy chủ, cấu trúc HTML. Mỗi email trở thành một danh sách con số — đặc trưng (feature).
Một email — bật/tắt từng dấu hiệu để xem P(spam) đổi
Link:0P(spam)10%0% - an toàn50% - ngưỡng mặc định100% - chắc chắn spamMỗi lần bạn bật/tắt một đặc trưng, xác suất nhảy theo. Bạn vừa quan sát bản chất của hồi quy logistic: mỗi đặc trưng đóng góp một phần vào "điểm spam", rồi hàm sigmoid biến tổng thành xác suất.
Tính điểm tuyến tính w·x + b.Mỗi đặc trưng được nhân với một trọng số (đặc trưng nào "nặng ký" hơn — ví dụ domain lạ — có trọng số lớn hơn). Cộng tất cả vào thành một điểm số z duy nhất. Đây là phần hồi quy tuyến tính trong lòng mô hình.
Ép qua sigmoid → xác suất. Điểm z có thể là bất kỳ số nào, nhưng ta cần một xác suất trong (0, 1) để ra quyết định. Hàm sigmoid ép z thành một số trong khoảng đó — chính là P(email này là spam).
z thấpz = −3: σ(z) ≈ 0.05. Email rất có khả năng là thư thường. Vào hộp thư đến.Đặt ngưỡng để ra quyết định.Ngưỡng mặc định là 0.5, nhưng Gmail có thể chỉnh cao hơn cho người dùng doanh nghiệp (sợ báo nhầm) hoặc thấp hơn cho tài khoản hay bị tấn công. Hộp thư đến nhận mọi email có P < ngưỡng; thùng rác nhận phần còn lại.
Học liên tục từ phản hồi.Khi bạn bấm "Đánh dấu là spam", Gmail học thêm. Khi bạn kéo email từ thùng rác về, Gmail cũng học. Qua hàng tỷ phản hồi mỗi ngày, các trọng số w và bias b được cập nhật liên tục bằng cross-entropy loss + gradient descent. Dù bộ lọc ngày nay đã mở rộng sang mạng nơ-ron (RETVec), cơ chế nền "tính xác suất rồi phân loại" của hồi quy logistic vẫn là tư duy gốc.
Con số thật
Nếu không có Hồi quy logistic, app sẽ ra sao?
Không có hồi quy logistic, bộ lọc spam sẽ dựa vào luật cứng do con người viết tay: "nếu email chứa từ X thì chặn". Cách này dễ bị qua mặt (chỉ cần viết sai chính tả) và không mở rộng được khi kẻ gửi spam đổi chiến thuật.
Hồi quy logistic biến mỗi email thành một xác suất, kết hợp nhiều đặc trưng nhẹ thành một điểm số. Kẻ spam giờ phải lách tất cả đặc trưng cùng lúc — khó hơn nhiều. Ý tưởng "tính xác suất nhị phân từ đặc trưng đầu vào" này đã trở thành viên gạch nền của mọi hệ thống phân loại email hiện đại.
Ngưỡng hiện tại là 0.5. Một email spam tinh vi cho P = 0.42 (dưới ngưỡng). Nó vào đâu?
- Mỗi email biến thành một danh sách đặc trưng: số link, từ đáng ngờ, domain lạ, VIẾT HOA, v.v.
- Hồi quy logistic cộng các đặc trưng thành điểm số z, rồi sigmoid ép thành xác suất P(spam).
- Ngưỡng chốt: P ≥ ngưỡng → thùng rác. Ngưỡng cao = ít báo nhầm, ngưỡng thấp = bắt nhiều hơn.
- Mỗi lần bạn đánh dấu 'spam' hay 'không spam', Gmail học lại trọng số — mô hình sống chứ không cố định.
Bốn "chiêu" của kẻ spam — mô hình sống lại học
1. Sai chính tả cố ý
"tr-úng th-ưởng", "m1ễn ph1" — né được bộ lọc dựa vào chuỗi chữ chính xác. Đối phó: dùng RETVec / character-level embedding.2. Chữ trong hình ảnh
Chèn toàn bộ nội dung vào một tấm ảnh, không có text để quét. Đối phó: OCR nội dung ảnh, mô hình đa-phương tiện.3. Domain giả danh ngân hàng
"no-reply@vietcom-bank.top" thay cho "vietcombank.com.vn". Đối phó: kiểm tra whois + DMARC + lịch sử domain.4. Thay đổi liên tục theo ngày
Sáng nay một mẫu, chiều đã khác. Đối phó: mô hình học online (online learning) — cập nhật trọng số trên dòng dữ liệu.Kiểm tra hiểu biết
Gmail muốn giảm số email bị đánh dấu nhầm là spam (False Positive). Họ nên chỉnh ngưỡng thế nào?