Thuật toán phân loại - Naïve Bayes
Giới thiệu về thuật toán Naïve Bayes
Các thuật toán Naïve Bayes là một kỹ thuật phân loại dựa trên việc áp dụng định lý Bayes với một giả định chắc chắn rằng tất cả các yếu tố dự đoán là độc lập với nhau. Nói cách đơn giản, giả định là sự hiện diện của một đối tượng trong một lớp là độc lập với sự hiện diện của bất kỳ đối tượng nào khác trong cùng một lớp. Ví dụ, một chiếc điện thoại có thể được coi là thông minh nếu nó có màn hình cảm ứng, kết nối internet, máy ảnh tốt, v.v. Mặc dù tất cả các tính năng này phụ thuộc vào nhau nhưng chúng đóng góp độc lập vào xác suất điện thoại đó là điện thoại thông minh.
Trong phân loại Bayes, mối quan tâm chính là tìm xác suất hậu nghiệm tức là xác suất của một nhãn cho một số đặc điểm quan sát được, (|). Với sự trợ giúp của định lý Bayes, chúng ta có thể biểu diễn điều này dưới dạng định lượng như sau:
$$ P (L | features) = \ frac {P (L) P (features | L)} {()} $$Ở đây, (|) là xác suất sau của lớp.
() là xác suất trước của lớp.
(|) là khả năng xảy ra là xác suất của lớp dự đoán cho trước.
() là xác suất trước của bộ dự đoán.
Xây dựng mô hình bằng Naïve Bayes trong Python
Thư viện Python, Scikit learning là thư viện hữu ích nhất giúp chúng ta xây dựng mô hình Naïve Bayes bằng Python. Chúng tôi có ba loại mô hình Naïve Bayes sau đây trong thư viện Scikit học Python:
Gaussian Naïve Bayes
Đây là trình phân loại Naïve Bayes đơn giản nhất có giả định rằng dữ liệu từ mỗi nhãn được lấy từ phân phối Gaussian đơn giản.
Đa thức Naïve Bayes
Một bộ phân loại Naïve Bayes hữu ích khác là Đa thức Naïve Bayes, trong đó các tính năng được giả định được rút ra từ một phân phối Đa thức đơn giản. Loại Naïve Bayes như vậy thích hợp nhất cho các tính năng biểu thị số đếm rời rạc.
Bernoulli Naïve Bayes
Một mô hình quan trọng khác là Bernoulli Naïve Bayes, trong đó các đặc trưng được giả định là nhị phân (0 và 1). Phân loại văn bản với mô hình 'túi từ' có thể là một ứng dụng của Bernoulli Naïve Bayes.
Thí dụ
Tùy thuộc vào tập dữ liệu của chúng tôi, chúng tôi có thể chọn bất kỳ mô hình Naïve Bayes nào được giải thích ở trên. Ở đây, chúng tôi đang triển khai mô hình Gaussian Naïve Bayes bằng Python -
Chúng tôi sẽ bắt đầu với các lần nhập bắt buộc như sau:
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns; sns.set()
Bây giờ, bằng cách sử dụng hàm make_blobs () của Scikit learning, chúng ta có thể tạo ra các đốm màu với phân phối Gaussian như sau:
from sklearn.datasets import make_blobs
X, y = make_blobs(300, 2, centers=2, random_state=2, cluster_std=1.5)
plt.scatter(X[:, 0], X[:, 1], c=y, s=50, cmap='summer');
Tiếp theo, để sử dụng mô hình GaussianNB, chúng ta cần nhập và tạo đối tượng của nó như sau:
from sklearn.naive_bayes import GaussianNB
model_GBN = GaussianNB()
model_GNB.fit(X, y);
Bây giờ, chúng ta phải dự đoán. Nó có thể được thực hiện sau khi tạo một số dữ liệu mới như sau:
rng = np.random.RandomState(0)
Xnew = [-6, -14] + [14, 18] * rng.rand(2000, 2)
ynew = model_GNB.predict(Xnew)
Tiếp theo, chúng tôi đang vẽ dữ liệu mới để tìm ranh giới của nó -
plt.scatter(X[:, 0], X[:, 1], c=y, s=50, cmap='summer')
lim = plt.axis()
plt.scatter(Xnew[:, 0], Xnew[:, 1], c=ynew, s=20, cmap='summer', alpha=0.1)
plt.axis(lim);
Bây giờ, với sự trợ giúp của dòng mã sau, chúng ta có thể tìm xác suất sau của nhãn thứ nhất và thứ hai -
yprob = model_GNB.predict_proba(Xnew)
yprob[-10:].round(3)
Đầu ra
array([[0.998, 0.002],
[1. , 0. ],
[0.987, 0.013],
[1. , 0. ],
[1. , 0. ],
[1. , 0. ],
[1. , 0. ],
[1. , 0. ],
[0. , 1. ],
[0.986, 0.014]]
)
Ưu & Nhược điểm
Ưu điểm
Sau đây là một số ưu điểm của việc sử dụng bộ phân loại Naïve Bayes -
Phân loại Naïve Bayes rất dễ thực hiện và nhanh chóng.
Nó sẽ hội tụ nhanh hơn các mô hình phân biệt như hồi quy logistic.
Nó yêu cầu ít dữ liệu đào tạo hơn.
Nó có khả năng mở rộng cao về bản chất, hoặc chúng chia tỷ lệ tuyến tính với số lượng yếu tố dự đoán và điểm dữ liệu.
Nó có thể đưa ra dự đoán xác suất và có thể xử lý dữ liệu liên tục cũng như rời rạc.
Thuật toán phân loại Naïve Bayes có thể được sử dụng cho cả hai bài toán phân loại nhị phân và đa lớp.
Nhược điểm
Sau đây là một số nhược điểm của việc sử dụng bộ phân loại Naïve Bayes -
Một trong những nhược điểm quan trọng nhất của phân loại Naïve Bayes là tính độc lập mạnh mẽ của nó bởi vì trong cuộc sống thực, hầu như không thể có một tập hợp các đối tượng địa lý hoàn toàn độc lập với nhau.
Một vấn đề khác với phân loại Naïve Bayes là 'tần số không' của nó, có nghĩa là nếu một biến phân loại có một danh mục nhưng không được quan sát trong tập dữ liệu huấn luyện, thì mô hình Naïve Bayes sẽ chỉ định một xác suất bằng không cho nó và nó sẽ không thể tạo ra một sự dự đoán.
Các ứng dụng của phân loại Naïve Bayes
Sau đây là một số ứng dụng phổ biến của phân loại Naïve Bayes -
Real-time prediction - Do dễ thực hiện và tính toán nhanh, nó có thể được sử dụng để dự đoán trong thời gian thực.
Multi-class prediction - Thuật toán phân loại Naïve Bayes có thể được sử dụng để dự đoán xác suất sau của nhiều lớp biến mục tiêu.
Text classification- Do tính năng của dự đoán nhiều lớp, các thuật toán phân loại của Naïve Bayes rất thích hợp cho việc phân loại văn bản. Đó là lý do tại sao nó cũng được sử dụng để giải quyết các vấn đề như lọc thư rác và phân tích tình cảm.
Recommendation system - Cùng với các thuật toán như lọc cộng tác, Naïve Bayes tạo ra một hệ thống Đề xuất có thể được sử dụng để lọc thông tin không nhìn thấy và dự đoán thời tiết mà người dùng có muốn tài nguyên đã cho hay không.