Yolo Tầm nhìn Thâm Quyến
Thâm Quyến
Tham gia ngay
Bảng chú giải thuật ngữ

Naive Bayes

Khám phá sự đơn giản và sức mạnh của bộ phân loại Naive Bayes để phân loại văn bản, NLP, phát hiện thư rác và phân tích tình cảm trong AI và ML.

Naive Bayes là một bộ phân loại xác suất hiệu quả cao được sử dụng trong học máy (ML) , áp dụng các nguyên lý của định lý Bayes với giả định độc lập mạnh mẽ giữa các đặc trưng. Mặc dù đơn giản, thuật toán này thường cạnh tranh với các kỹ thuật phức tạp hơn, đặc biệt là trong các ứng dụng dựa trên văn bản. Naive Bayes thuộc họ thuật toán học có giám sát và nổi tiếng về tốc độ trong cả giai đoạn huấn luyện và khi tạo dự đoán thông qua công cụ suy luận . Vì chỉ cần một lượng dữ liệu huấn luyện tương đối nhỏ để ước tính các tham số cần thiết, Naive Bayes vẫn là một phương pháp cơ sở phổ biến cho các bài toán phân loại.

Giả định Độc lập "Ngây thơ"

Thuật ngữ "Naive" (ngây thơ) bắt nguồn từ tiền đề cốt lõi của thuật toán: nó giả định rằng sự hiện diện của một đặc điểm cụ thể trong một lớp không liên quan đến sự hiện diện của bất kỳ đặc điểm nào khác. Ví dụ, một loại quả có thể được coi là táo nếu nó có màu đỏ, tròn và đường kính khoảng 3 inch (7,7 cm). Bộ phân loại Naive Bayes xem xét từng đặc điểm này đóng góp độc lập vào xác suất quả đó là táo, bất kể bất kỳ mối tương quan nào giữa màu sắc, độ tròn và kích thước.

Trong dữ liệu thực tế, các đặc trưng hiếm khi hoàn toàn độc lập. Tuy nhiên, sự đơn giản hóa này cho phép mô hình giảm đáng kể độ phức tạp tính toán và tránh các vấn đề như quá khớp trên các tập dữ liệu đa chiều. Điều này làm cho nó khác biệt với Mạng Bayesian , vốn mô hình hóa rõ ràng các mối quan hệ phụ thuộc phức tạp và mối quan hệ nhân quả giữa các biến bằng đồ thị có hướng phi chu trình. Trong khi Mạng Bayesian cung cấp biểu diễn chính xác hơn về các hệ thống phụ thuộc chặt chẽ, Naive Bayes lại ưu tiên hiệu quả tính toán.

Các Ứng dụng Thực tế

Naive Bayes hoạt động hiệu quả trong các tình huống liên quan đến dữ liệu đa chiều, đặc biệt là trong Xử lý ngôn ngữ tự nhiên (NLP) .

  • Lọc thư rác: Một trong những ứng dụng nổi tiếng nhất là phát hiện thư rác trong các dịch vụ email. Bộ phân loại tính toán xác suất một email là thư rác dựa trên sự xuất hiện của các từ cụ thể (ví dụ: "miễn phí", "người chiến thắng", "khẩn cấp"). Mặc dù các từ "miễn phí" và "người chiến thắng" có thể xuất hiện cùng nhau thường xuyên, thuật toán vẫn coi chúng là bằng chứng độc lập, giúp phân loại email một cách hiệu quả với độ chính xác cao.
  • Phân tích tình cảm: Các công ty sử dụng Naive Bayes để phân tích tình cảm nhằm đánh giá dư luận trên mạng xã hội hoặc đánh giá của khách hàng. Bằng cách phân tích tần suất xuất hiện của các từ ngữ tích cực hoặc tiêu cực, mô hình có thể classify chuỗi văn bản thể hiện cảm xúc tích cực, tiêu cực hoặc trung tính, giúp các thương hiệu theo dõi danh tiếng của họ.

So sánh với Học sâu

Mặc dù Naive Bayes rất hiệu quả đối với văn bản, nhưng nó thường không hiệu quả trong các tác vụ nhận thức phức tạp như thị giác máy tính (CV) . Trong dữ liệu hình ảnh, giá trị pixel có mối tương quan cao; giả định "naive" bị phá vỡ khi cố gắng xác định đối tượng dựa trên các pixel độc lập. Đối với các tác vụ như phân loại hình ảnh hoặc phát hiện đối tượng theo thời gian thực, các mô hình học sâu (DL) tinh vi được ưu tiên hơn.

Các kiến trúc hiện đại như YOLO11 sử dụng các lớp tích chập để nắm bắt các hệ thống phân cấp đặc trưng phức tạp và các mối quan hệ không gian mà Naive Bayes bỏ qua. Tuy nhiên, Naive Bayes vẫn là một chuẩn mực hữu ích để thiết lập độ chính xác cơ sở trước khi huấn luyện các mô hình tốn nhiều tài nguyên hơn.

Ví dụ triển khai

Trong khi ultralytics gói tập trung vào học sâu, Naive Bayes thường được triển khai bằng cách sử dụng tiêu chuẩn scikit-learn thư viện. Ví dụ sau đây minh họa cách đào tạo mô hình Gaussian Naive Bayes, 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, weight] and class labels (0 or 1)
X = np.array([[5.9, 175], [5.8, 170], [6.1, 190], [5.2, 120], [5.1, 115]])
y = np.array([0, 0, 0, 1, 1])

# Initialize and train the classifier
model = GaussianNB()
model.fit(X, y)

# Predict class for a new individual
prediction = model.predict([[6.0, 180]])
print(f"Predicted Class: {prediction[0]}")

Ư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à khả năng mở rộng. Nó có thể xử lý các tập dữ liệu khổng lồ, vốn có thể làm chậm các thuật toán khác như Máy vectơ hỗ trợ (SVM) . Hơn nữa, nó hoạt động tốt một cách đáng ngạc nhiên ngay cả khi giả định độc lập bị vi phạm.

Tuy nhiên, việc dựa vào các đặc điểm độc lập đồng nghĩa với việc nó không thể nắm bắt đượ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 mô hình sử dụng cơ chế chú ý hoặc Transformers . Ngoài ra, nếu một hạng mục trong dữ liệu thử nghiệm không có trong tập huấn luyện, mô hình sẽ gán cho nó một xác suất bằng không, một vấn đề thường được giải quyết bằng phương pháp làm mịn Laplace .

Tham gia Ultralytics cộng đồng

Tham gia vào tương lai của AI. Kết nối, hợp tác và phát triển cùng với những nhà đổi mới toàn cầu

Tham gia ngay