Tôi nhận ra rằng đây là một câu hỏi cũ, với một câu trả lời được thiết lập. Lý do tôi đăng là câu trả lời được chấp nhận có nhiều yếu tố của k-NN ( hàng xóm k -gần nhất), một thuật toán khác.
Cả k-NN và NaiveBayes đều là thuật toán phân loại. Về mặt khái niệm, k-NN sử dụng ý tưởng "gần" để phân loại các thực thể mới. Trong k-NN, "độ gần" được mô hình hóa với các ý tưởng như Khoảng cách Euclide hoặc Khoảng cách Cosine. Ngược lại, ở NaiveBayes, khái niệm 'xác suất' được sử dụng để phân loại các thực thể mới.
Vì câu hỏi là về Naive Bayes, đây là cách tôi mô tả các ý tưởng và các bước cho ai đó. Tôi sẽ cố gắng làm điều đó với càng ít phương trình và bằng tiếng Anh càng nhiều càng tốt.
Đầu tiên, Xác suất có điều kiện & Quy tắc Bayes
Trước khi ai đó có thể hiểu và đánh giá cao các sắc thái của Naive Bayes, trước tiên họ cần biết một vài khái niệm liên quan, cụ thể là ý tưởng về Xác suất có điều kiện và Quy tắc của Bayes. (Nếu bạn quen thuộc với các khái niệm này, hãy bỏ qua phần có tiêu đề Bắt đầu đến Naive Bayes ' )
Xác suất có điều kiện bằng tiếng Anh đơn giản: Xác suất để điều gì đó sẽ xảy ra, với điều gì đó đã xảy ra.
Chúng ta hãy nói rằng có một số Kết quả O. Và một số Bằng chứng E. Từ cách xác định các xác suất này: Xác suất có cả Kết quả O và Bằng chứng E là: (Xác suất xảy ra O) nhân với (Xác suất của E cho rằng O đã xảy ra)
Một ví dụ để hiểu Xác suất có điều kiện:
Hãy nói rằng chúng tôi có một bộ sưu tập Thượng nghị sĩ Hoa Kỳ. Thượng nghị sĩ có thể là đảng Dân chủ hoặc Cộng hòa. Họ cũng là nam hoặc nữ.
Nếu chúng ta chọn một thượng nghị sĩ hoàn toàn ngẫu nhiên, xác suất người này là nữ Dân chủ là bao nhiêu? Xác suất có điều kiện có thể giúp chúng ta trả lời điều đó.
Xác suất của (Dân chủ và Thượng nghị sĩ nữ) = Prob (Thượng nghị sĩ là Dân chủ) nhân với Xác suất có điều kiện là Nữ cho rằng họ là Dân chủ.
P(Democrat & Female) = P(Democrat) * P(Female | Democrat)
Chúng ta có thể tính toán chính xác điều tương tự, theo cách ngược lại:
P(Democrat & Female) = P(Female) * P(Democrat | Female)
Hiểu quy tắc Bayes
Về mặt khái niệm, đây là một cách để đi từ P (Evidence | Known Outcome) đến P (Outcome | Known Evidence). Thông thường, chúng tôi biết tần suất một số bằng chứng cụ thể được quan sát, đưa ra một kết quả đã biết . Chúng ta phải sử dụng thực tế đã biết này để tính toán ngược lại, để tính toán khả năng kết quả đó xảy ra , đưa ra bằng chứng.
P (Kết quả được đưa ra mà chúng tôi biết một số Bằng chứng) = P (Bằng chứng được đưa ra mà chúng tôi biết Kết quả) lần Prob (Kết quả), được chia tỷ lệ theo P (Bằng chứng)
Ví dụ kinh điển để hiểu Quy tắc của Bayes:
Probability of Disease D given Test-positive =
Prob(Test is positive|Disease) * P(Disease)
_______________________________________________________________
(scaled by) Prob(Testing Positive, with or without the disease)
Bây giờ, tất cả điều này chỉ là lời mở đầu, để đến Naive Bayes.
Đến Naive Bayes '
Cho đến nay, chúng ta chỉ nói về một bằng chứng. Trong thực tế, chúng ta phải dự đoán một kết quả được đưa ra nhiều bằng chứng. Trong trường hợp đó, toán học trở nên rất phức tạp. Để giải quyết vấn đề phức tạp đó, một cách tiếp cận là 'tách rời' nhiều bằng chứng và coi mỗi phần bằng chứng là độc lập. Cách tiếp cận này là lý do tại sao điều này được gọi là Bayes ngây thơ .
P(Outcome|Multiple Evidence) =
P(Evidence1|Outcome) * P(Evidence2|outcome) * ... * P(EvidenceN|outcome) * P(Outcome)
scaled by P(Multiple Evidence)
Nhiều người chọn ghi nhớ điều này như:
P(Likelihood of Evidence) * Prior prob of outcome
P(outcome|evidence) = _________________________________________________
P(Evidence)
Lưu ý một vài điều về phương trình này:
- Nếu Prob (bằng chứng | kết quả) là 1, thì chúng ta chỉ nhân với 1.
- Nếu Prob (một số bằng chứng cụ thể | kết quả) bằng 0, thì toàn bộ thăm dò. trở thành 0. Nếu bạn thấy bằng chứng mâu thuẫn, chúng ta có thể loại trừ kết quả đó.
- Vì chúng ta chia mọi thứ cho P (Bằng chứng), chúng ta thậm chí có thể thoát khỏi mà không cần tính toán.
- Trực giác đằng sau nhân với ưu tiên là để chúng tôi đưa ra xác suất cao cho các kết quả phổ biến hơn và xác suất thấp cho các kết quả không mong muốn. Chúng cũng được gọi
base rates
và chúng là một cách để mở rộng xác suất dự đoán của chúng tôi.
Làm thế nào để áp dụng NaiveBayes để dự đoán kết quả?
Chỉ cần chạy công thức trên cho mỗi kết quả có thể. Vì chúng tôi đang cố gắng phân loại , mỗi kết quả được gọi là a class
và class label.
công việc của chúng tôi là xem xét bằng chứng, xem xét khả năng nó là lớp này hoặc lớp đó và gán nhãn cho mỗi thực thể. Một lần nữa, chúng tôi thực hiện một cách tiếp cận rất đơn giản: Lớp có xác suất cao nhất được tuyên bố là "người chiến thắng" và nhãn lớp đó được gán cho sự kết hợp các bằng chứng đó.
Ví dụ trái cây
Hãy thử lấy một ví dụ để tăng hiểu biết của chúng tôi: OP đã yêu cầu một ví dụ nhận dạng 'trái cây'.
Hãy nói rằng chúng tôi có dữ liệu về 1000 miếng trái cây. Chúng tình cờ là chuối , cam hoặc một số loại trái cây khác . Chúng tôi biết 3 đặc điểm về mỗi loại trái cây:
- Cho dù đó là dài
- Cho dù đó là ngọt ngào và
- Nếu màu của nó là Vàng.
Đây là 'tập huấn luyện' của chúng tôi. Chúng tôi sẽ sử dụng điều này để dự đoán loại trái cây mới mà chúng tôi gặp phải.
Type Long | Not Long || Sweet | Not Sweet || Yellow |Not Yellow|Total
___________________________________________________________________
Banana | 400 | 100 || 350 | 150 || 450 | 50 | 500
Orange | 0 | 300 || 150 | 150 || 300 | 0 | 300
Other Fruit | 100 | 100 || 150 | 50 || 50 | 150 | 200
____________________________________________________________________
Total | 500 | 500 || 650 | 350 || 800 | 200 | 1000
___________________________________________________________________
Chúng tôi có thể tính toán trước rất nhiều điều về bộ sưu tập trái cây của chúng tôi.
Cái gọi là xác suất "Ưu tiên". (Nếu chúng ta không biết bất kỳ thuộc tính trái cây nào, đây sẽ là dự đoán của chúng ta.) Đây là những thuộc tính của chúng tabase rates.
P(Banana) = 0.5 (500/1000)
P(Orange) = 0.3
P(Other Fruit) = 0.2
Xác suất của "Bằng chứng"
p(Long) = 0.5
P(Sweet) = 0.65
P(Yellow) = 0.8
Xác suất của "Khả năng"
P(Long|Banana) = 0.8
P(Long|Orange) = 0 [Oranges are never long in all the fruit we have seen.]
....
P(Yellow|Other Fruit) = 50/200 = 0.25
P(Not Yellow|Other Fruit) = 0.75
Cho một quả, làm thế nào để phân loại nó?
Hãy nói rằng chúng ta được cung cấp các thuộc tính của một loại trái cây chưa biết và được yêu cầu phân loại nó. Chúng ta được biết rằng quả dài, ngọt và vàng. Có phải là một quả chuối? Nó có phải là cam không? Hay là một số trái cây khác?
Chúng ta có thể chỉ cần chạy các số cho mỗi trong số 3 kết quả, từng kết quả một. Sau đó, chúng tôi chọn xác suất cao nhất và 'phân loại' trái cây chưa biết của chúng tôi thuộc về nhóm có xác suất cao nhất dựa trên bằng chứng trước đó của chúng tôi (bộ đào tạo 1000 trái cây của chúng tôi):
P(Banana|Long, Sweet and Yellow)
P(Long|Banana) * P(Sweet|Banana) * P(Yellow|Banana) * P(banana)
= _______________________________________________________________
P(Long) * P(Sweet) * P(Yellow)
= 0.8 * 0.7 * 0.9 * 0.5 / P(evidence)
= 0.252 / P(evidence)
P(Orange|Long, Sweet and Yellow) = 0
P(Other Fruit|Long, Sweet and Yellow)
P(Long|Other fruit) * P(Sweet|Other fruit) * P(Yellow|Other fruit) * P(Other Fruit)
= ____________________________________________________________________________________
P(evidence)
= (100/200 * 150/200 * 50/200 * 200/1000) / P(evidence)
= 0.01875 / P(evidence)
Theo tỷ lệ áp đảo ( 0.252 >> 0.01875
), chúng tôi phân loại loại quả ngọt / dài / vàng này có khả năng là một quả chuối.
Tại sao Bayes Classifier rất phổ biến?
Nhìn vào những gì nó cuối cùng đi xuống. Chỉ cần một số đếm và nhân. Chúng tôi có thể tính toán trước tất cả các điều khoản này và do đó việc phân loại trở nên dễ dàng, nhanh chóng và hiệu quả.
Let z = 1 / P(evidence).
Bây giờ chúng tôi nhanh chóng tính toán ba số lượng sau đây.
P(Banana|evidence) = z * Prob(Banana) * Prob(Evidence1|Banana) * Prob(Evidence2|Banana) ...
P(Orange|Evidence) = z * Prob(Orange) * Prob(Evidence1|Orange) * Prob(Evidence2|Orange) ...
P(Other|Evidence) = z * Prob(Other) * Prob(Evidence1|Other) * Prob(Evidence2|Other) ...
Chỉ định nhãn lớp của bất kỳ số nào là số cao nhất và bạn đã hoàn thành.
Mặc dù tên của nó, Naive Bayes hóa ra lại xuất sắc trong một số ứng dụng nhất định. Phân loại văn bản là một lĩnh vực mà nó thực sự tỏa sáng.
Hy vọng rằng sẽ giúp hiểu được các khái niệm đằng sau thuật toán Naive Bayes.