Thuật toán Naive Bayes trong học máy

⚡ Tóm tắt thông minh

Naive Bayes là một thuật toán phân loại xác suất có giám sát được xây dựng dựa trên định lý Bayes, giả định rằng mỗi đặc trưng đóng góp một cách độc lập. Lý thuyết của nó, một mô hình được xây dựng dựa trên thực nghiệm, rất đơn giản.ping Ví dụ, ba biến thể mô hình, lợi ích, hạn chế và ứng dụng thực tế được trình bày dưới đây.

  • 🔘 Định nghĩa: Bộ phân loại gán nhãn cho một bản ghi bằng cách so sánh xác suất hậu nghiệm của mỗi lớp ứng cử viên.
  • ☑️ Giả định ngây thơ: Mỗi đặc điểm được coi là độc lập có điều kiện, điều này hiếm khi đúng nhưng vẫn dự đoán khá tốt.
  • Công thức Bayes: P(A|B) bằng P(B|A) nhân với P(A), chia cho P(B).
  • 🧪 Ví dụ thực tế: Sự kết hợp giữa giảm giá trong ngày và giao hàng miễn phí mang lại xác suất mua hàng lên đến 97.33%.
  • 🛠️ Ba biến thể: Phân phối đa thức cho số lượng từ, phân phối Bernoulli cho sự xuất hiện của từ, phân phối Gaussian cho các giá trị liên tục.
  • ⚠️ hạn chế: Các đặc điểm tương quan bị bỏ qua, do đó cây quyết định hoặc SVM phù hợp hơn với dữ liệu phụ thuộc.

Thuật toán Naive Bayes trong học máy

Thuật toán phân loại Naive Bayes

Bộ phân loại là một thuật toán học máy sắp xếp dữ liệu vào một hoặc nhiều "lớp" trong một tập hợp các lớp. Bộ phân loại email là một ví dụ quen thuộc: nó quét mọi tin nhắn đến và gán cho chúng nhãn lớp là Thư rác hoặc Không phải thư rác.

Thuật toán phân loại Naive Bayes trong học máy là một thuật toán phân loại Naive Bayes. học có giám sát Thuật toán được sử dụng cho các nhiệm vụ phân loại.

Sơ đồ bên dưới mô tả quy trình đó.

Thuật toán phân loại Naive Bayes gán nhãn lớp cho một bản ghi đầu vào.

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ì thuật toán phân loại Naive Bayes dựa trên định lý Bayes, nên nó còn được gọi là thuật toán 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ục.

Tại sao nó được gọi là Naive Bayes?

Tên gọi Naive Bayes gồm hai phần: Naive (ngây thơ) và Bayes (Bayes). Tại sao lại là "naive"? Thuật toán này bỏ qua thứ tự xuất hiện của các đặc điểm, vì vậy "Bạn là" và "Bạn có phải là" trông giống hệt nhau đối với nó. Nó cũng giả định rằng không có đặc điểm nào ảnh hưởng đến đặc điểm khác. Để nhận biết quả táo, bạn sử dụng màu đỏ, hình dạng tròn và vị ngọt, và thuật toán coi mỗi manh mối đó là bằng chứng riêng biệt, độc lập.

  • Thuật toán phân loại Naive Bayes giả định rằng các đặc trưng độ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 thuật toán phân loại này được gọi là "naive" (ngây thơ).
  • Thuật toán phân loại này dựa trên định lý Bayes, vì vậy nó được gọi là thuật toán phân loại Naive Bayes.

Định lý Bayes đơn giản

Định lý Bayes được sử dụng để tìm xác suất của một giả thuyết với các xác suất có điều kiện phụ thuộc vào kiến ​​thức tiên nghiệm. Đị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, như đượ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ề bộ phân loại Naive Bayes khi tung hai đồng xu. Ta có thể thu được các không gian mẫu sau bằng cách tung hai đồng xu: {HH, HT, TH, TT}. Vì vậy, xác suất của các 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 toán xác suất xảy ra của 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 cho như sau:

P(A|B) = (P(B|A) * P(A)) / P(B)

P(A|B) là xác suất xảy ra sự kiện A khi sự kiện B đã xảy ra. Xác suất P(B) không được bằng không.

  • 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à xác suất tiên nghiệm của A, tức là xác suất của sự kiện trước khi có bất kỳ bằng chứng nào được quan sát. Ở đâ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 A, tức là xác suất của A sau khi xem xét bằng chứng B.

Ví dụ thực tế về bộ phân loại Naive Bayes

Cách nhanh nhất để thấy công thức hoạt động là tự mình chạy thử.

Chúng ta hãy lấy một ví dụ về cửa hàng.ping Để hiểu cách hoạt động của thuật toán phân loại đơn giản Bayes (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

Cửa hàng mẫuping Tập dữ liệu gồm 30 hàng với các cột Ngày, Giảm giá, Giao hàng miễn phí và Mua.

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ảng tần suất thống kê kết quả Mua và Không Mua cho mỗi giá trị thuộc tính

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í.

Bảng tần suất cho các thuộc tính Ngày, Giảm giá và Giao hàng miễn phí

Giả sử 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 các sự kiện và biến 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.

Bảng xác suất cho thuộc tính Ngày so với Mua và Không Mua

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.

Bảng xác suất cho Ngày, Giảm giá và Giao hàng miễn phí được sử dụng trong phép tính kết hợp.

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 %

Hai điểm số cộng lại bằng 1.013 chứ không phải 1 vì giả định độc lập khiến mỗi ước tính chỉ là xấp xỉ, do đó việc chia cho tổng sẽ chuyển chúng thành tỷ lệ phần trăm.

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 Naive 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.

biến thể Loại tính năng Sử dụng điển hình
Đa thức Số lượng từ Phân loại chủ đề và tài liệu
Bernoulli Cờ nhị phân hiện diện hoặc vắng mặt Tin nhắn ngắn và lọc thư rác
Gaussian Giá trị số liên tục Các chỉ số và phép đo của cảm biến

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.

Đường cong hình chuông Gauss được sử dụng để mô hình hóa các đặc điểm liên tục trong thuật toán Naive Bayes.

Công thức tính xác suất có điều kiện thay đổi thành,

Công thức xác suất có điều kiện Naive Bayes Gauss sử dụng giá trị trung bình và phương sai

học hỏi Thư viện bổ sung thêm hai biến thể: Naive Bayes bổ sung cho văn bản không cân bằng và Naive Bayes phân loại cho các danh mục rời rạc.

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 đặc trưng. Nó có thể dự đoán nhanh chóng sau khi mô hình được huấn luyện.
  • 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ỏ: Thuật toán Naive Bayes có thể cho kết quả hợp lý ngay cả với dữ liệu huấn luyện hạn chế. Nó có thể xử lý các trường hợp số lượng mẫu huấn luyện nhỏ.

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.

Lưu ý thứ hai: xác suất của các lớp mà nó báo cáo được hiệu chỉnh kém, do đó, con số độ tin cậy gắn liền với một dự đoán không phải là một xác suất đáng tin cậy.

Để khắc phục vấn đề này, bạn có thể sử dụng Cây quyết địnhRừng ngẫu nhiên, Máy vectơ hỗ trợ (SVM), Mạng lưới thần kinh vân vân. Các thuật toán này có khả năng học hỏi các mối quan hệ và sự phụ thuộc phức tạp giữa các đặc điểm trong dữ liệu. Do đó, 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 (Chẳng hạn 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 hiệu quả trong việc 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ự báo thời tiết, chẩn đoán y tế, và mua sắm.pingPhân loại tin tức, v.v. Bạn có thể triển khai Naive Bayes trong PythonTrong đó, mô-đun sklearn.naive_bayes cung cấp mọi biến thể được mô tả ở trên.

Câu Hỏi Thường Gặp

Nhập biến thể bạn cần từ sklearn.naive_bayesChia dữ liệu bằng hàm train_test_split, sau đó gọi hàm fit() trên các hàng dữ liệu huấn luyện và hàm predict() trên các hàng dữ liệu kiểm tra. GaussianNB phù hợp với các đặc trưng liên tục, trong khi MultinomialNB và BernoulliNB xử lý số lượng văn bản và cờ từ nhị phân.

Nếu một danh mục không bao giờ xuất hiện cùng với một lớp trong quá trình huấn luyện, xác suất có điều kiện của nó sẽ trở thành 0 và xóa toàn bộ tích. Phương pháp làm mịn Laplace sẽ cộng thêm 1 vào mỗi số đếm để không có gì bị giảm xuống 0. Scikit-learn hiển thị điều này dưới dạng tham số alpha.

Không thuật toán nào thắng tuyệt đối. Naive Bayes huấn luyện nhanh hơn, cần ít dữ liệu hơn và xử lý tốt văn bản đa chiều. Mô hình hồi quy logistic mô phỏng các đặc trưng tương quan và tạo ra xác suất được hiệu chỉnh tốt hơn. Trên các tập dữ liệu văn bản nhỏ, Naive Bayes thường dẫn đầu; với nhiều dữ liệu hơn, hồi quy logistic vượt trội hơn.

Sử dụng một tập dữ liệu thử nghiệm và so sánh các dự đoán với nhãn thực bằng cách sử dụng một công thức nào đó. ma trận hỗn loạnTừ đó suy ra độ chính xác, độ thu hồi và F1. Chỉ số độ chính xác đơn thuần có thể gây hiểu nhầm trên dữ liệu không cân bằng, chẳng hạn như thư rác, nơi một lớp chiếm ưu thế trong mẫu.

Chuyển văn bản thành chữ thường, loại bỏ dấu câu, xóa các từ dừng và tùy chọn rút gọn từ (stemming), sau đó chuyển mỗi tài liệu thành vectơ đếm hoặc vectơ TF-IDF. Các biến thể Bernoulli yêu cầu cờ hiện diện nhị phân thay vì số lượng. Áp dụng các bước giống hệt nhau trong quá trình huấn luyện và dự đoán.

Naive Bayes là mạng Bayes đơn giản nhất: một nút lớp với mọi đặc trưng được gắn trực tiếp vào đó và không có liên kết giữa các đặc trưng. Mạng Bayes tổng quát cho phép bạn vẽ các cạnh phụ thuộc đó, do đó nó mô hình hóa các mối tương quan mà Naive Bayes cố tình bỏ qua.

Các công cụ học máy tự động tìm kiếm các giá trị làm mịn, biểu diễn đặc trưng và lựa chọn biến thể, sau đó xếp hạng các ứng viên theo điểm số được kiểm định chéo. Điều này loại bỏ hầu hết các thử nghiệm và sai sót thủ công — bạn vẫn quyết định chỉ số nào quan trọng và liệu ứng viên chiến thắng có hành xử hợp lý hay không.

Trợ lý GitHub Công cụ này soạn thảo nhanh chóng các đoạn mã mẫu — các lệnh nhập, phân chia tập huấn luyện và kiểm thử, các lệnh huấn luyện và dự đoán — từ một đoạn bình luận ngắn. Luôn kiểm tra biến thể mà nó chọn và mã đánh giá, vì một kịch bản hợp lý vẫn có thể huấn luyện sai mô hình.

Tóm tắt bài viết này với: