Naive Bayes
Khám phá Naive Bayes, một thuật toán machine learning chính cho phân loại. Tìm hiểu về giả định độc lập, các ứng dụng trong NLP và cách nó so sánh với Ultralytics YOLO26.
Naive Bayes là một họ các thuật toán xác suất được sử dụng rộng rãi trong machine learning cho các tác vụ phân loại. Bắt nguồn từ các nguyên lý thống kê, nó áp dụng Định lý Bayes với giả định độc lập mạnh (hoặc "ngây thơ") giữa các đặc trưng. Mặc dù đơn giản, phương pháp này cực kỳ hiệu quả để phân loại dữ liệu, đặc biệt trong các kịch bản liên quan đến các bộ dữ liệu đa chiều như văn bản. Nó đóng vai trò là một khối xây dựng nền tảng trong lĩnh vực học có giám sát, mang lại sự cân bằng giữa hiệu quả tính toán và hiệu suất dự đoán.
Link to this sectionKhái niệm cốt lõi: Giả định "ngây thơ"#
Thuật toán dự đoán xác suất một điểm dữ liệu nhất định thuộc về một lớp cụ thể. Khía cạnh "ngây thơ" bắt nguồn từ giả định rằng sự hiện diện của một đặc trưng cụ thể trong một lớp không liên quan đến sự hiện diện của bất kỳ đặc trưng nào khác. Ví dụ, một loại trái cây có thể được coi là táo nếu nó có màu đỏ, tròn và đường kính khoảng 3 inch. Một bộ phân loại Naive Bayes xem xét độc lập từng điểm trích xuất đặc trưng này để tính toán xác suất loại trái cây đó là táo, bất kể các mối tương quan có thể có giữa màu sắc, độ tròn và kích thước.
Việc đơn giản hóa này làm giảm đáng kể sức mạnh tính toán cần thiết cho quá trình huấn luyện model, giúp thuật toán đạt tốc độ vượt trội. Tuy nhiên, vì dữ liệu thực tế thường chứa các biến phụ thuộc và các mối quan hệ phức tạp, giả định này đôi khi có thể giới hạn hiệu suất của model so với các kiến trúc phức tạp hơn.
Link to this sectionCác ứng dụng trong thực tế#
Naive Bayes tỏa sáng trong các ứng dụng yêu cầu tốc độ là then chốt và giả định về tính độc lập được đáp ứng hợp lý.
- Lọc thư rác: Một trong những ứng dụng nổi tiếng nhất của Naive Bayes là trong xử lý ngôn ngữ tự nhiên (NLP) để lọc email. Bộ phân loại phân tích tần suất của các từ (token) trong một email để xác định xem đó là "thư rác" hay "thư thường" (hợp lệ). Nó tính toán xác suất một thông điệp là thư rác dựa trên sự xuất hiện của các từ như "free", "winner" hoặc "urgent". Ứng dụng này phụ thuộc rất nhiều vào các kỹ thuật phân loại văn bản để giữ cho hộp thư đến luôn sạch sẽ.
- Phân tích cảm xúc: Các doanh nghiệp sử dụng thuật toán này để đánh giá ý kiến công chúng bằng cách phân tích các đánh giá của khách hàng hoặc bài đăng trên mạng xã hội. Bằng cách liên kết các từ cụ thể với cảm xúc tích cực hoặc tiêu cực, model có thể nhanh chóng phân loại lượng lớn phản hồi. Điều này cho phép các công ty thực hiện phân tích cảm xúc quy mô lớn để hiểu cảm nhận về thương hiệu mà không cần đọc thủ công từng bình luận.
Link to this sectionNaive Bayes so với Deep Learning trong Computer Vision#
Mặc dù Naive Bayes rất mạnh mẽ đối với văn bản, nhưng nó thường gặp khó khăn với các tác vụ nhận thức như thị giác máy tính (CV). Trong một hình ảnh, giá trị của một pixel thường phụ thuộc rất nhiều vào các láng giềng của nó (ví dụ: một nhóm các pixel tạo thành cạnh hoặc kết cấu). Giả định về tính độc lập bị phá vỡ ở đây.
Đối với các tác vụ hình ảnh phức tạp như phát hiện đối tượng, các model deep learning (DL) hiện đại thường được ưu tiên hơn. Các kiến trúc như YOLO26 sử dụng các lớp tích chập để nắm bắt các phân cấp không gian và tương tác đặc trưng mà Naive Bayes bỏ qua. Mặc dù Naive Bayes cung cấp một cơ sở xác suất, các model như YOLO26 mang lại độ chính xác cao cần thiết cho xe tự lái hoặc chẩn đoán y tế. Để quản lý các bộ dữ liệu cần thiết cho các model thị giác phức tạp này, các công cụ như Ultralytics Platform cung cấp các quy trình chú thích và huấn luyện hợp lý vượt xa việc xử lý dữ liệu dạng bảng đơn thuần.
Link to this sectionSo sánh với Bayesian Networks#
Việc phân biệt Naive Bayes với khái niệm rộng hơn về Bayesian Network là rất hữu ích.
- Naive Bayes: Một dạng chuyên biệt, đơn giản hóa của Bayesian Network, nơi tất cả các node dự đoán chỉ trực tiếp vào node lớp, và không có kết nối nào tồn tại giữa các node dự đoán.
- Bayesian Networks: Sử dụng Đồ thị có hướng không chu trình (DAG) để mô hình hóa các phụ thuộc điều kiện phức tạp giữa các biến. Chúng có thể đại diện cho các mối quan hệ nhân quả mà cách tiếp cận "ngây thơ" đã loại bỏ.
Link to this sectionVí dụ về triển khai#
Mặc dù gói ultralytics tập trung vào deep learning, Naive Bayes thường được triển khai bằng cách sử dụng thư viện scikit-learn tiêu chuẩn. Ví dụ sau đây minh họa cách huấn luyện một model Gaussian Naive Bayes, rất hữu ích cho dữ liệu liên tục.
import numpy as np
from sklearn.naive_bayes import GaussianNB
# Sample training data: [height (cm), weight (kg)] and Labels (0: Cat A, 1: Cat B)
X = np.array([[175, 70], [180, 80], [160, 50], [155, 45]])
y = np.array([0, 0, 1, 1])
# Initialize and train the classifier
model = GaussianNB()
model.fit(X, y)
# Predict class for a new individual [172 cm, 75 kg]
# Returns the predicted class label (0 or 1)
print(f"Predicted Class: {model.predict([[172, 75]])[0]}")Link to this sectionƯu điểm và Hạn chế#
Ưu điểm chính của Naive Bayes là độ trễ suy luận cực thấp và yêu cầu phần cứng tối thiểu. Nó có thể diễn giải các bộ dữ liệu khổng lồ vốn có thể làm chậm các thuật toán khác như Support Vector Machines (SVM). Hơn nữa, nó hoạt động hiệu quả một cách đáng ngạc nhiên ngay cả khi giả định về tính độc lập bị vi phạm.
Tuy nhiên, sự phụ thuộc vào các đặc trưng độc lập có nghĩa là nó không thể nắm bắt được các tương tác giữa các thuộc tính. Nếu một dự đoán phụ thuộc vào sự kết hợp của các từ (ví dụ: "không tốt"), Naive Bayes có thể gặp khó khăn so với các model sử dụng cơ chế chú ý hoặc Transformers. Ngoài ra, nếu một danh mục trong dữ liệu kiểm thử không có trong tập huấn luyện, model sẽ gán cho nó xác suất bằng không, một vấn đề thường được giải quyết bằng Laplace smoothing.






