Thuật toán Naive Bayes trong học máy
Thuật toán phân loại Naive Bayes
Trình phân loại là một thuật toán học máy phân loại dữ liệu thành một hoặc nhiều nhóm "lớp". Trình phân loại email là một ví dụ về trình phân loại quét email để lọc chúng theo nhãn lớp: Thư rác hay Không phải thư rác.
Trình phân loại Naive Bayes trong học máy là học máy được giám sát cho các nhiệm vụ phân loại.
Naive Bayes được sử dụng để giải quyết các vấn đề phân loại. Nó dự đoán trên cơ sở xác suất của một đối tượng. Naive Bayes dựa trên Định lý Bayes và nó được sử dụng chủ yếu để phân loại văn bản. Naive Bayes là một thuật toán phân loại xác suất, dễ thực hiện và đào tạo nhanh.
Vì bộ phân loại Naive Bayes dựa trên định lý Bayes nên nó được gọi là bộ phân loại xác suất. Nó dự đoán dựa trên xác suất của một mặt hàng.
Lý do được gọi là Naïve Bayes?
Trình phân loại Naive Bayes có hai từ: Naive và Bayes. Tại sao lại là Navie? Thuật toán này xử lý tất cả các câu từ như nhau. Ví dụ: “Bạn là” và “Bạn là ai” giống nhau đối với thuật toán này. Nó không phụ thuộc vào đặc điểm hoặc sự xuất hiện của đặc điểm. Muốn nhận biết quả Táo thì cần có màu đỏ, hình cầu, vị ngọt để nhận biết là quả Táo. Nó có nghĩa là các tính năng này độc lập với nhau.
- Trình phân loại Naive Bayes giả định rằng các đặc điểm này độc lập với nhau. Vì điều này hiếm khi xảy ra trong dữ liệu thực tế nên bộ phân loại được gọi là ngây thơ.
- Thuật toán phân loại này dựa trên định lý Bayes còn được gọi là Trình phân loại Naive Bayes.
Định lý Naïve Bayes
Định lý Bayes được sử dụng để tìm xác suất của một giả thuyết có xác suất có điều kiện phụ thuộc vào kiến thức có sẵn. Định lý này được đặt theo tên của Thomas Bayes. Bộ phân loại Naive Bayes hoạt động dựa trên nguyên tắc xác suất có điều kiện, được đưa ra bởi định lý Bayes.
Để hiểu định lý Bayes, chúng ta hãy xem xét một ví dụ đơn giản về phân loại Bayes về việc tung hai đồng xu. Chúng ta có thể có được các không gian mẫu này bằng cách tung hai đồng xu: {HH, HT, TH, TT}. Vì vậy, xác suất của những sự kiện này sẽ là:
- Bắt được hai đầu = 1/4
- Ít nhất một đuôi = 3/4
- Đồng xu thứ hai là mặt ngửa, đồng xu thứ nhất là đuôi = 1/2
- Nhận được hai mặt ngửa với đồng xu đầu tiên là mặt ngửa = 1/2
Định lý Bayes tính xác suất xảy ra một sự kiện dựa trên xác suất của một sự kiện khác đã xảy ra. Công thức của định lý Bayes được đưa ra là:
P(A|B) = (P(B|A) * P(A)) / P(B)
P(A|B) Xác suất của A chẵn khi B chẵn đã xảy ra. Xác suất P(B) không được bằng 0.
- Bạn cần tìm xác suất của sự kiện A, được đưa ra khi sự kiện B (bằng chứng) là đúng.
- P(A) là tiên nghiệm (tiên nghiệm, tức là xác suất của một sự kiện được quan sát trước khi có bằng chứng) của A. Ở đây, sự kiện B là giá trị của một trường hợp chưa biết.
- P(A|B) là xác suất hậu nghiệm của sự kiện B, tức là xác suất của sự kiện sau khi xem xét bằng chứng.
Ví dụ hoạt động của Trình phân loại của Naïve Bayes
Chúng ta hãy lấy một ví dụ về mua sắm để hiểu hoạt động của Bayes Naive Classifier. Trong tập dữ liệu này, có một tập dữ liệu mẫu nhỏ gồm 30 hàng cho ví dụ này.
Bộ dữ liệu
Vấn đề là dự đoán liệu một người có mua sản phẩm theo sự kết hợp cụ thể giữa Ngày, Giảm giá và Giao hàng miễn phí hay không bằng cách sử dụng Định lý Naive Bayes.
Bước 1) Chúng tôi sẽ tạo bảng tần suất cho từng thuộc tính bằng cách sử dụng các loại đầu vào được đề cập trong tập dữ liệu, chẳng hạn như ngày, ưu đãi giảm giá và giao hàng miễn phí.
Đặt sự kiện 'Mua' được ký hiệu là 'A' và các biến độc lập, cụ thể là 'Giảm giá', 'Giao hàng miễn phí' và 'Ngày', được ký hiệu là 'B'. Chúng ta sẽ sử dụng những sự kiện và biến số này để áp dụng định lý Bayes.
Bước 2) Bây giờ chúng ta hãy tính toán từng bảng Khả năng.
Ví dụ 1:
Dựa vào bảng khả năng này, chúng ta sẽ tính các xác suất có điều kiện như dưới đây.
P(A) = P(No Buy) = 6/30 = 0.2 P(B) = P(Weekday) = 11/30 = 0.37 P(B/A) = P(Weekday / No Buy) = 2/6 = 0.33
Và tìm P(A/B) bằng định lý Bayes,
P(A/B) = P(No Buy / Weekday) = P(Weekday / No Buy) * P(No Buy) / P(Weekday) = (2/6 * 6/30) / (11/30) = 0.1818
Tương tự, nếu A là Mua thì
= P(Buy / Weekday) = P(Weekday / Buy) * P(Buy) / P(Weekday) = (9/24 * 24/30) / (11/30) = 0.8181
Lưu ý: Vì P(Mua | Ngày trong tuần) lớn hơn P(Không mua | Ngày trong tuần), chúng tôi có thể kết luận rằng rất có thể khách hàng sẽ mua sản phẩm vào Ngày trong tuần.
Bước 3) Tương tự, chúng ta có thể tính toán khả năng xảy ra một sự kiện dựa trên cả ba biến số. Bây giờ chúng ta sẽ tính toán bảng Khả năng cho cả ba biến bằng cách sử dụng bảng tần số ở trên.
Ví dụ 2:
Bây giờ, bằng cách sử dụng ba bảng Khả năng này, chúng tôi sẽ tính toán xem khách hàng có khả năng mua hàng hay không dựa trên sự kết hợp cụ thể của 'Ngày', 'Giảm giá' và 'Giao hàng miễn phí'.
Ở đây chúng ta hãy kết hợp các yếu tố sau:
- Ngày = Ngày lễ
- Giảm giá = Có
- Giao hàng miễn phí = Có
Khi nào, A = Mua
Tính xác suất có điều kiện mua hàng theo tổ hợp sau: ngày, giảm giá và giao hàng miễn phí.
Ở đâu B là:
- Ngày = Ngày lễ
- Giảm giá = Có
- Giao hàng miễn phí = Có
Và A = Mua
Vì vậy,
= P(A/B) = P(Buy / Discount=Yes, Day=Holiday, Free Delivery=Yes) = ( P(Discount=(Yes/Buy)) * P(Free Delivery=(Yes/Buy)) * P(Day=(Holiday/Buy)) * P(Buy) ) / ( P(Discount=Yes) * P(Free Delivery=Yes) * P(Day=Holiday) ) = (19/24 * 21/24 * 8/24 * 24/30) / (20/30 * 23/30 * 11/30) = 0.986
Khi nào, A = Không mua
Tương tự như vậy, tính xác suất có điều kiện mua hàng theo tổ hợp sau: ngày, giảm giá và giao hàng miễn phí.
Ở đâu B là:
- Ngày = Ngày lễ
- Giảm giá = Có
- Giao hàng miễn phí = Có
Và A = Không Mua
Vì vậy,
= P(A/B) = P(No Buy / Discount=Yes, Day=Holiday, Free Delivery=Yes) = ( P(Discount=(Yes/No Buy)) * P(Free Delivery=(Yes/No Buy)) * P(Day=(Holiday/No Buy)) * P(No Buy) ) / ( P(Discount=Yes) * P(Free Delivery=Yes) * P(Day=Holiday) ) = (1/6 * 2/6 * 3/6 * 6/30) / (20/30 * 23/30 * 11/30) = 0.027
Bước 4) Vì thế,
Xác suất mua hàng = 0.986
Xác suất không mua hàng = 0.027
Cuối cùng, chúng ta có xác suất có điều kiện để mua vào ngày này. Bây giờ chúng ta hãy khái quát hóa những xác suất này để có được Khả năng xảy ra các sự kiện.
- Tổng xác suất = 0.986 + 0.027 = 1.013
- Khả năng mua hàng = 0.986 / 1.013 = 97.33 %
- Khả năng không mua hàng = 0.027 / 1.013 = 2.67 %
Lưu ý rằng, vì 97.33% lớn hơn 2.67%. Chúng ta có thể kết luận rằng khách hàng bình thường sẽ mua hàng vào kỳ nghỉ với mức chiết khấu và giao hàng miễn phí.
Các loại mô hình Naïve Bayes
Có nhiều loại Trình phân loại Naive Bayes. Ở đây chúng ta đã thảo luận về các bộ phân loại Multinomial, Bernoulli và Gaussian Naive Bayes.
1. Naive Bayes đa thức
Loại mô hình Naive Bayes này được sử dụng cho các bài toán phân loại tài liệu. Nó hoạt động với các tính năng đại diện cho tần suất của các từ trong tài liệu. Trình phân loại xem xét sự xuất hiện và số lượng từ để xác định xác suất tài liệu thuộc một danh mục cụ thể, chẳng hạn như thể thao, chính trị hoặc công nghệ.
2. Bernoulli Naive Bayes
Điều này tương tự như Naive Bayes đa thức. Trình phân loại Bernoulli Naive Bayes được sử dụng cho các nhiệm vụ phân loại tài liệu. Tuy nhiên, nó sử dụng các dự đoán boolean. Nó cho biết một từ có hiện diện hay không và chỉ nhận các giá trị Có hoặc Không. Trình phân loại tính toán xác suất dựa trên việc một từ có xuất hiện trong văn bản hay không.
3. Vịnh ngây thơ Gaussian
Phân loại này được sử dụng trong trường hợp giá trị liên tục nhưng không có giá trị rời rạc. Trình phân loại này tính toán xác suất bằng cách sử dụng các tham số của Gaussian phân phối, tức là, giá trị trung bình và phương sai.
Công thức tính xác suất có điều kiện thay đổi thành,
Lợi ích và hạn chế của Trình phân loại Naive Bayes
Thuật toán Naive Bayes có nhiều ưu điểm và nhược điểm khác nhau trong học máy.
Lợi ích của Trình phân loại Naive Bayes
- Đơn giản và hiệu quả: Naive Bayes rất đơn giản, dễ đào tạo và thực hiện. Nó hiệu quả vì chi phí tính toán thấp. Nó có thể xử lý các tập dữ liệu lớn một cách hiệu quả.
- Đào tạo và dự đoán nhanh: Naive Bayes không yêu cầu nhiều dữ liệu huấn luyện vì tính độc lập giữa các tính năng. Nó có thể dự đoán nhanh khi mô hình được đào tạo.
- Khả năng mở rộng: Naive Bayes có thể xử lý các bộ dữ liệu nhiều chiều với nhiều tính năng. Nó hoạt động tốt ngay cả khi số lượng tính năng lớn hơn số lượng ví dụ huấn luyện. Nó chia tỷ lệ theo số lượng điểm dữ liệu và yếu tố dự đoán. Nó xử lý cả dữ liệu liên tục và rời rạc.
- Mạnh mẽ đối với các tính năng không liên quan: Nó không nhạy cảm với các tính năng không liên quan.
- Hoạt động tốt với Bộ đào tạo nhỏ: Naive Bayes có thể cung cấp kết quả hợp lý ngay cả với dữ liệu đào tạo hạn chế. Nó có thể xử lý các tình huống trong đó số lượng trường hợp đào tạo nhỏ. Nó không đòi hỏi nhiều dữ liệu đào tạo.
Hạn chế của Trình phân loại Naive Bayes
Bayes ngây thơ ở học máy giả định rằng tất cả các tính năng là độc lập với nhau. Vì vậy, nó không thể tìm hiểu mối quan hệ giữa các tính năng khác nhau trong dữ liệu. Nó xử lý từng đặc điểm như thể nó không có mối quan hệ nào với những đặc điểm khác.
Để khắc phục vấn đề này, bạn có thể sử dụng Cây quyết định, Rừng ngẫu nhiên, Máy vectơ hỗ trợ (SVM), Mạng nơ-ron, v.v. Các thuật toán này có khả năng tìm hiểu các mối quan hệ phức tạp và sự phụ thuộc giữa các tính năng trong dữ liệu. Vì vậy, chúng có thể dự đoán kết quả chính xác hơn.
Các ứng dụng của Trình phân loại Naive Bayes
Vì thuật toán này nhanh và hiệu quả nên bạn có thể sử dụng nó để đưa ra dự đoán theo thời gian thực.
Phát hiện thư rác
Dịch vụ email (như Gmail) sử dụng thuật toán này để xác định xem email có phải là thư rác hay không. Thuật toán này rất tuyệt vời để lọc thư rác.
Phân tích tình cảm
Nó có thể phân loại văn bản là tích cực, tiêu cực hoặc trung tính dựa trên các đặc điểm như lựa chọn từ, cấu trúc câu và ngữ cảnh. Nó tìm thấy các ứng dụng trong giám sát phương tiện truyền thông xã hội, đánh giá của khách hàng và nghiên cứu thị trường.
Phân loại tài liệu
Nó có thể phân loại tài liệu thành các danh mục như thể thao, chính trị, công nghệ hoặc tài chính dựa trên tần suất hoặc sự hiện diện của các từ hoặc đặc điểm cụ thể trong tài liệu.
Hệ thống đề xuất
Nó có thể phân tích sở thích của người dùng, dữ liệu lịch sử và tính năng của mặt hàng để dự đoán sở thích của người dùng hoặc sở thích giới thiệu sản phẩm, phim hoặc bài viết.
Thuật toán phân loại này cũng được sử dụng trong Nhận dạng khuôn mặt, Dự đoán thời tiết, Chẩn đoán y tế, Mua sắm, Phân loại tin tức, v.v. Bạn có thể triển khai Naive Bayes trong Python. Có bộ phân loại Naive Bayes sklearn, tức là sklearn.naive_bayes. Đây là mô-đun thực hiện thuật toán này.
Kết luận
Thuật toán Naive Bayes trong học máy là các thuật toán phân loại chủ yếu được sử dụng trong phát hiện thư rác, phân loại tin tức, phân tích tình cảm, dự đoán thời tiết, mua sắm, v.v. Thuật toán Naive Bayes dựa trên Định lý Bayes. Cái này thuật toán rất đơn giản và dễ thực hiện. Vì nó nhanh nên chúng tôi có thể sử dụng nó trong các ứng dụng thời gian thực. Nhược điểm lớn nhất của nó là nó giả định các tính năng độc lập (Vì các tính năng độc lập hiếm khi có trong đời thực nên nó được gọi là Naive). Nó coi mỗi tính năng là như nhau. Để khắc phục nhược điểm này, bạn có thể sử dụng các trình phân loại khác như Cây quyết định, Rừng ngẫu nhiên, Máy vectơ hỗ trợ (SVM), v.v.