Tại sao cần LabelEncoder khi tiền xử lý nhãn cho mô hình Naive Bayes Classification?

Tác giả: AI VIET NAM (AI VIET NAM)

Keywords: LabelEncoder, Naive Bayes, mã hóa nhãn, classification, preprocessing

Mở đầu – Vì sao nhiều bạn thắc mắc về việc “mã hóa nhãn”?

Khi làm việc với những mô hình phân loại cơ bản như Naive Bayes, một câu hỏi quen thuộc thường xuất hiện:

“Nhãn (label) đã là chữ, ví dụ ‘spam’ – ‘ham’ hay ‘dog’ – ‘cat’, vậy có cần mã hóa lại không? Hay mô hình tự hiểu?”

Thực tế, hầu hết thuật toán ML đều yêu cầu nhãn được biểu diễn bằng dạng số.
Không phải vì mô hình cần giá trị lớn – nhỏ, mà vì nó cần một định danh để hiểu mỗi lớp là một thực thể riêng biệt.

Ở giai đoạn đầu học ML (nhóm kiến thức thuộc Module 4 – Classification), nhiều bạn dễ nhầm lẫn giữa:

  • Mã hóa đặc trưng đầu vào (features)
  • Mã hóa nhãn (labels)

Trong bài này, chúng ta tập trung vào lý do vì sao LabelEncoder đặc biệt quan trọng với Naive Bayes.

Cốt lõi – Naive Bayes cần nhãn dạng số để tính xác suất

Naive Bayes là mô hình dựa trên xác suất có điều kiện.
Khi huấn luyện, nó tính:

  • Xác suất của từng lớp
  • Xác suất của các đặc trưng xuất hiện trong lớp đó

Để làm được điều này, mô hình cần:

  • Biết có bao nhiêu lớp
  • Gán mỗi lớp một định danh duy nhất để lập bảng xác suất

Các định danh này phải là số nguyên (

0
,
1
,
2
, …).
Do đó LabelEncoder xuất hiện để giải quyết vấn đề này một cách nhất quán.

Lý do cụ thể: Vì sao LabelEncoder là bước cần thiết?

Nhãn dạng chữ không thể đưa trực tiếp vào thuật toán xác suất

Mô hình không hiểu “spam” lớn hơn “ham” hay “dog” bé hơn “cat”.
Transformer thì có embedding, còn Naive Bayes thì không → nó cần định danh rời rạc.

LabelEncoder giúp tạo ra chuỗi giá trị:

  • Spam →
    1
  • Ham →
    0

Hoặc theo thứ tự từ điển.
Chỉ cần định danh, không có ý nghĩa thứ tự.

Giúp mô hình quản lý bảng xác suất (likelihood table) rõ ràng

Ví dụ bài toán 3 lớp A, B, C:

  • A →
    0
  • B →
    1
  • C →
    2

Mô hình sẽ tạo 3 nhóm xác suất tương ứng.
Nếu không có mã hóa thống nhất, việc lưu – truy xuất các nhóm xác suất sẽ trở nên rối.

Tránh lỗi khi sử dụng thư viện ML

Các thư viện như scikit-learn yêu cầu:

  • y
    phải là vector 1D
  • Dạng số nguyên
  • Không chứa chuỗi ký tự

Nếu bạn bỏ qua bước LabelEncoder, mô hình sẽ báo lỗi ngay từ bước

fit()
.

Giữ tính nhất quán khi dự đoán

Sau khi mô hình trả về số:

  • 0
  • 1
  • 2

Bạn sẽ cần ánh xạ ngược lại thành nhãn thật.
LabelEncoder có sẵn

inverse_transform
→ đảm bảo dự đoán trả về đúng tên lớp gốc.

Ví dụ thực tế để dễ hình dung

Giả sử bài toán phân loại email:

EmailNhãn gốc
Nội dung 1spam
Nội dung 2ham
Nội dung 3spam
Nội dung 4ham

LabelEncoder chuyển thành:

EmailNhãn mã hóa
Nội dung 11
Nội dung 20
Nội dung 31
Nội dung 40

Lúc huấn luyện, Naive Bayes sẽ tính:

  • P(y=0)
    ,
    P(y=1)
  • P(words | y=0)
  • P(words | y=1)

Tất cả đều cần định danh số.

Góc nhìn trong dự án thực tế

Ở mức triển khai pipeline ML (nhóm kỹ năng thường xuất hiện trong Module 3–5):

  • LabelEncoder giúp bạn chuẩn hóa dữ liệu trước khi đẩy vào model
  • Dễ quản lý khi export mô hình và phục vụ inference
  • Đối với các hệ thống lớn (viết API, MLOps), bạn có thể tái sử dụng encoder để tránh sai lệch nhãn giữa train và deploy

Nhiều lỗi của người mới thường đến từ việc không lưu LabelEncoder, dẫn đến nhãn bị gán khác thứ tự khi chạy dự đoán.

Liên hệ kiến thức nền

Chủ đề này liên quan trực tiếp đến:

  • Bộ classification cơ bản trong Machine Learning (Module 4)
  • Kiến thức về tiền xử lý dữ liệu trong Data Analysis (Module 3)
  • Tư duy feature engineering và encoding trong pre-Deep Learning (Module 5)

Việc hiểu nhãn được encode như thế nào giúp bạn tránh sai sót trong suốt vòng đời mô hình.

Lời khuyên cho người mới

  • Luôn kiểm tra xem nhãn của bạn có phải số nguyên hay chưa
  • Lưu lại đối tượng LabelEncoder để sử dụng khi dự đoán
  • Khi có nhiều lớp hơn, hãy kiểm tra mapping để đảm bảo mô hình trả về đúng ý nghĩa
  • Bạn có thể thử nghiệm với vài nhãn mẫu để cảm nhận rõ cách mô hình xử lý

Hỏi đáp nhanh về chủ đề LabelEncoder & Naive Bayes

Q1. LabelEncoder có làm thay đổi ý nghĩa các lớp không?
A: Không, chỉ gán mã số để mô hình dễ xử lý.

Q2. LabelEncoder có làm mô hình hiểu nhầm thứ tự không?
A: Không, Naive Bayes không quan tâm thứ tự số – chỉ xem đó là ID.

Q3. Có thể dùng One-Hot cho nhãn không?
A: Không phù hợp, nhãn chỉ cần 1 định danh, không cần vector.

Q4. Nếu nhãn đã là số rồi, có cần LabelEncoder?
A: Không nhất thiết, miễn là số đó đại diện 1 lớp duy nhất.

Hỏi đáp nhanh về chương trình AIO

Q: Mình con số 0 thì học nổi không?
A: Chỉ cần có thời gian học mỗi ngày. Kiến thức và tài liệu team admin lo.

Q: Ai dạy AIO?
A: Toàn bộ admin AIO trực tiếp dạy và hỗ trợ trong suốt hành trình.

Q: Admin có “xịn” không?
A: Admin đều là người làm nghề thật. Không dám nói xịn, chỉ dạy bằng hết sức mình.

Q: AIO khác gì trung tâm khác?
A: AIO không phải trung tâm. Đây là dự án học tập cộng đồng với tinh thần “Cùng nhau học – cùng nhau khổ – cùng nhau lớn”.

Tài nguyên học AI: