Hiểu về Naive Bayes


47

Từ StatSoft, Inc. (2013), Sách giáo khoa thống kê điện tử , "Phân loại Naive Bayes" :

nhập mô tả hình ảnh ở đây

Để thể hiện khái niệm Phân loại Naïve Bayes, hãy xem xét ví dụ hiển thị trong hình minh họa ở trên. Như đã chỉ ra, các đối tượng có thể được phân loại là XANH hoặc ĐỎ. Nhiệm vụ của tôi là phân loại các trường hợp mới khi chúng đến, tức là quyết định chúng thuộc về nhãn lớp nào, dựa trên các đối tượng hiện đang thoát.

Vì có gấp đôi số đối tượng XANH so với ĐỎ, nên có thể tin rằng một trường hợp mới (chưa được quan sát) có khả năng thành viên XANH nhiều hơn gấp đôi so với ĐỎ. Trong phân tích Bayes, niềm tin này được gọi là xác suất trước. Xác suất trước dựa trên kinh nghiệm trước đó, trong trường hợp này là tỷ lệ phần trăm của các đối tượng XANH và ĐỎ, và thường được sử dụng để dự đoán kết quả trước khi chúng thực sự xảy ra.

Vì vậy, chúng ta có thể viết:

nhập mô tả hình ảnh ở đây

Vì có tổng cộng 60 đối tượng, 40 trong số đó là XANH và 20 ĐỎ, nên xác suất trước đây của chúng tôi cho tư cách thành viên lớp là:

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây

Đã xác định xác suất trước của chúng tôi, bây giờ chúng tôi đã sẵn sàng để phân loại một đối tượng mới (vòng tròn TRẮNG). Vì các đối tượng được phân cụm tốt, nên có lý khi cho rằng các đối tượng XANH (hoặc ĐỎ) ở vùng lân cận X càng nhiều, thì các trường hợp mới càng thuộc về màu đặc biệt đó. Để đo lường khả năng này, chúng tôi vẽ một vòng tròn quanh X bao gồm một số (sẽ được chọn một ưu tiên) các điểm không phân biệt nhãn lớp của chúng. Sau đó, chúng tôi tính toán số điểm trong vòng tròn thuộc về mỗi nhãn lớp. Từ đó, chúng tôi tính toán khả năng:

nhập mô tả hình ảnh ở đây

Từ hình minh họa ở trên, rõ ràng Likabilities of X cho XANH nhỏ hơn Likabilities của X cho RED, vì vòng tròn bao gồm 1 đối tượng XANH và 3 đối tượng XANH. Do vậy:

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

Mặc dù các xác suất trước đó cho thấy X có thể thuộc về XANH (với điều kiện là có số lượng XANH nhiều gấp đôi so với ĐỎ), khả năng cho thấy điều khác; rằng thành viên lớp của X là ĐỎ (cho rằng có nhiều đối tượng ĐỎ trong vùng lân cận của X hơn XANH). Trong phân tích Bayes, phân loại cuối cùng được tạo ra bằng cách kết hợp cả hai nguồn thông tin, nghĩa là trước và khả năng, để tạo thành xác suất sau sử dụng quy tắc gọi là Bayes (được đặt tên theo Rev. Thomas Bayes 1702-1761).

nhập mô tả hình ảnh ở đây

Cuối cùng, chúng tôi phân loại X là RED vì thành viên lớp của nó đạt được xác suất sau lớn nhất.

Đây là nơi mà sự khó hiểu về toán học của tôi xuất hiện.

nhập mô tả hình ảnh ở đây

p (Cj | x1, x2, x ..., xd) là xác suất sau của thành viên lớp, nghĩa là xác suất X thuộc về Cj nhưng tại sao lại viết như thế này?

Tính khả năng?

nhập mô tả hình ảnh ở đây

Xác suất hậu thế?

nhập mô tả hình ảnh ở đây

Tôi chưa bao giờ học toán, nhưng sự hiểu biết của tôi về những cái vịnh ngây thơ vẫn ổn Tôi nghĩ chỉ khi nói đến những phương pháp phân tách này làm tôi bối rối. Ai đó có thể giúp đỡ với việc hình dung các phương pháp này và làm thế nào để viết toán ra một cách dễ hiểu không?


12
(+1) Tôi ngưỡng mộ cách thực sự cẩn thận và rõ ràng mà bạn đã đặt ra câu hỏi của mình.
rolando2

2
@ rolando2: tất cả các số liệu và gần như tất cả các văn bản của câu hỏi này đều xuất phát từ statsoft.com/textbook/naive-bayes- classifier
Franck Dernoncourt

Vui lòng chỉnh sửa bài đăng này để ghi rõ tài liệu từ nơi khác, theo Cách tham chiếu tài liệu được viết bởi người khác .
Scortchi - Phục hồi Monica

Phân bổ chính xác các trích dẫn trực tiếp luôn là một yêu cầu trên các trang web Stack Exchange. Dù sao, thiếu sót dễ dàng được sửa chữa; & Tôi đã làm như vậy. Không cần xóa tài khoản của bạn - vui lòng xem xét lại.
Scortchi - Phục hồi Monica

Câu trả lời:


50

Tôi sẽ chạy qua toàn bộ quá trình Naive Bayes từ đầu, vì nó không hoàn toàn rõ ràng với tôi nơi bạn đang bị treo lên.

Chúng tôi muốn tìm xác suất để một ví dụ mới thuộc về mỗi lớp: ). Sau đó, chúng tôi tính toán xác suất đó cho mỗi lớp và chọn lớp có khả năng nhất. Vấn đề là chúng ta thường không có những xác suất đó. Tuy nhiên, Định lý Bayes cho phép chúng ta viết lại phương trình đó ở dạng dễ điều khiển hơn.P(class|feature1,feature2,...,featuren

Bayes 'thereom chỉ đơn giản là hoặc về mặt vấn đề của chúng tôi:

P(A|B)=P(B|A)P(A)P(B)
P(class|features)=P(features|class)P(class)P(features)

Chúng ta có thể đơn giản hóa điều này bằng cách loại bỏ . Chúng tôi có thể làm điều này bởi vì chúng tôi sẽ xếp hạng cho mỗi giá trị của ; sẽ giống nhau mọi lúc - nó không phụ thuộc vào . Điều này cho chúng ta P(features)P(class|features)classP(features)class

P(class|features)P(features|class)P(class)

Các xác suất trước đó, , có thể được tính như bạn mô tả trong câu hỏi của bạn.P(class)

Rời khỏi . Chúng tôi muốn loại bỏ xác suất chung rất lớn và có lẽ rất thưa thớt . Nếu mỗi tính năng là độc lập, thì Ngay cả khi chúng không thực sự độc lập, chúng ta có thể cho rằng chúng là (đó là " ngây thơ "một phần của Bayes ngây thơ). Cá nhân tôi nghĩ rằng việc nghĩ thông qua các biến rời rạc (nghĩa là phân loại) sẽ dễ dàng hơn, vì vậy hãy sử dụng một phiên bản hơi khác trong ví dụ của bạn. Ở đây, tôi đã chia mỗi chiều tính năng thành hai biến phân loại.P(features|class)P(feature1,feature2,...,featuren|class)

P(feature1,feature2,...,featuren|class)=iP(featurei|class)

Dữ liệu ví dụ rời rạc.

Ví dụ: Đào tạo lớp

Để huấn luyện lớp, chúng tôi đếm các tập hợp điểm khác nhau và sử dụng chúng để tính toán xác suất trước và điều kiện.

Các linh mục là tầm thường: Có sáu mươi điểm, bốn mươi là màu xanh lá cây trong khi hai mươi là màu đỏ. Do đó

P(class=green)=4060=2/3 and P(class=red)=2060=1/3

Tiếp theo, chúng ta phải tính toán xác suất có điều kiện của từng giá trị tính năng được cung cấp cho một lớp. Ở đây, có hai tính năng: và , mỗi tính năng lấy một trong hai giá trị (A hoặc B cho một, X hoặc Y cho cái kia). Do đó, chúng ta cần biết những điều sau đây:feature1feature2

  • P(feature1=A|class=red)
  • P(feature1=B|class=red)
  • P(feature1=A|class=green)
  • P(feature1=B|class=green)
  • P(feature2=X|class=red)
  • P(feature2=Y|class=red)
  • P(feature2=X|class=green)
  • P(feature2=Y|class=green)
  • (trong trường hợp không rõ ràng, đây là tất cả các cặp giá trị tính năng và lớp)

Đây là những tính toán dễ dàng bằng cách đếm và chia quá. Ví dụ: đối với , chúng tôi chỉ nhìn vào các điểm màu đỏ và đếm xem có bao nhiêu trong số chúng nằm trong vùng 'A' cho tính . Có hai mươi điểm đỏ, tất cả đều nằm trong vùng 'A', vì vậy . Không có điểm đỏ nào trong khu vực B, vì vậy . Tiếp theo, chúng tôi làm tương tự, nhưng chỉ xem xét các điểm màu xanh lá cây. Điều này mang lại cho chúng ta và . Chúng tôi lặp lại quy trình đó cho tính , để làm tròn bảng xác suất. Giả sử tôi đã đếm đúng, chúng tôi nhận đượcP(feature1=A|class=red)feature1P(feature1=A|class=red)=20/20=1P(feature1|class=red)=0/20=0P(feature1=A|class=green)=5/40=1/8P(feature1=B|class=green)=35/40=7/8feature2

  • P(feature1=A|class=red)=1
  • P(feature1=B|class=red)=0
  • P(feature1=A|class=green)=1/8
  • P(feature1=B|class=green)=7/8
  • P(feature2=X|class=red)=3/10
  • P(feature2=Y|class=red)=7/10
  • P(feature2=X|class=green)=8/10
  • P(feature2=Y|class=green)=2/10

Mười xác suất đó (hai linh mục cộng với tám điều kiện) là mô hình của chúng tôi

Phân loại một ví dụ mới

Hãy phân loại điểm trắng từ ví dụ của bạn. Nó nằm trong khu vực "A" cho tính và khu vực "Y" cho tính . Chúng tôi muốn tìm xác suất trong mỗi lớp. Hãy bắt đầu với màu đỏ. Sử dụng công thức trên, chúng ta biết rằng: Subbing trong các xác suất từ ​​bảng, chúng tôi nhận đượcfeature1feature2

P(class=red|example)P(class=red)P(feature1=A|class=red)P(feature2=Y|class=red)

P(class=red|example)131710=730
Sau đó, chúng tôi cũng làm tương tự với màu xanh lá cây:
P(class=green|example)P(class=green)P(feature1=A|class=green)P(feature2=Y|class=green)

Subbing trong các giá trị đó được chúng tôi 0 ( ). Cuối cùng, chúng tôi xem xét lớp nào cho chúng tôi xác suất cao nhất. Trong trường hợp này, đó rõ ràng là lớp màu đỏ, vì vậy đó là nơi chúng ta gán điểm.2/302/10

Ghi chú

Trong ví dụ ban đầu của bạn, các tính năng là liên tục. Trong trường hợp đó, bạn cần tìm một số cách gán P (Feature = value | class) cho mỗi lớp. Sau đó, bạn có thể xem xét việc phù hợp với phân phối xác suất đã biết (ví dụ: Gaussian). Trong quá trình đào tạo, bạn sẽ tìm thấy giá trị trung bình và phương sai cho mỗi lớp dọc theo từng chiều tính năng. Để phân loại một điểm, bạn sẽ tìm thấy bằng cách cắm vào giá trị trung bình và phương sai thích hợp cho mỗi lớp. Các bản phân phối khác có thể phù hợp hơn, tùy thuộc vào chi tiết của dữ liệu của bạn, nhưng Gaussian sẽ là điểm khởi đầu tốt.P(feature=value|class)

Tôi không quá quen thuộc với tập dữ liệu DARPA, nhưng về cơ bản bạn sẽ làm điều tương tự. Bạn có thể sẽ kết thúc việc tính toán một cái gì đó như P (tấn công = TRUE | dịch vụ = ngón tay), P (tấn công = sai | dịch vụ = ngón tay), P (tấn công = TRUE | dịch vụ = ftp), v.v. và sau đó kết hợp chúng trong giống như ví dụ Là một lưu ý phụ, một phần của mẹo ở đây là đưa ra các tính năng tốt. Ví dụ, IP nguồn có thể sẽ trở nên vô vọng thưa thớt - có lẽ bạn sẽ chỉ có một hoặc hai ví dụ cho một IP nhất định. Bạn có thể làm tốt hơn nhiều nếu bạn định vị địa lý IP và sử dụng "Source_in_same_building_as_dest (true / false)" hoặc một cái gì đó như một tính năng thay thế.

Tôi hy vọng điều đó sẽ giúp nhiều hơn. Nếu có bất cứ điều gì cần làm rõ, tôi rất vui lòng thử lại!


3
Chắc chắn rồi. Nếu nó ổn với bạn, tôi sẽ chỉnh sửa câu trả lời của mình để có nhiều chỗ hơn (và tôi có thể làm những điều LaTex).
Matt Krause

1
Tôi mở rộng các phần đào tạo và kiểm tra và biến chúng thành phần riêng của họ. Các đoạn đôi đầu tiên giống nhau ...
Matt Krause

2
Matt, điều này rõ ràng hơn nhiều so với bất kỳ định nghĩa sách giáo khoa nào về Naive Bayes mà tôi đã gặp. Đây có lẽ là câu trả lời tốt nhất cho bất kỳ câu hỏi tôi đã thấy cho đến nay trên trang web này.
Zhubarb

@Berkan, cảm ơn; bạn thật tốt bụng (mặc dù cũng có rất nhiều câu trả lời tuyệt vời khác!) Nếu bạn có bất kỳ đề xuất nào, tôi rất vui lòng thử giải quyết chúng!
Matt Krause

+ 1 và stackoverflow.com/questions/10059594/ ở nơi có một lời giải thích tương tự
Drey

6

Đơn giản hóa ký hiệu với biểu thị dữ liệu, chúng tôi muốn tìm nào trong số là lớn nhất. Bây giờ, công thức của Bayes cho nơi mẫu số trên đúng là giống nhau cho tất cả . Nếu chúng ta muốn tìm , là lớn nhất, tất nhiên, chúng ta có thể tính toán từng và so sánh các giá trị. Nhưng lưu ý rằng các so sánh không thực sự bị ảnh hưởng bởi giá trị của giống nhau trong mọi trường hợp. Chúng ta cũng có thể tính toán tốt tất cảDP(CjD)

P(CjD)=P(DCj)P(Cj)P(D), j=1,2,
jP(C1D)P(C2D),P(CjD)P(D)P(DCj)P(Cj) và so sánh (nghĩa là không cần chia mỗi cho trước khi so sánh), và cùng một sẽ được chọn là có xác suất hậu nghiệm lớn nhất. Nói cách khác, xác suất hậu nghiệm là tỷ lệ thuận với khả năng lần so với khả năng trước khi Cuối cùng, khi dữ liệu là tập hợp các quan sát độc lập (có điều kiện) cho , chúng ta có điều đó P(DCj)P(Cj)P(D)CjP(CjD)P(DCj) P(Cj)
P(CjD)P(DCj)P(Cj).
DC j ) P ( D | C j )(x1,x2,,xd)Cj)
P(DCj)=P(x1,x2,,xdCj)=P(x1Cj)P(x2Cj)P(xdCj)=1=1dP(xiCj)

1

Giả định chính đằng sau mô hình vịnh ngây thơ là mỗi tính năng (x_i) độc lập có điều kiện với tất cả các tính năng khác được cung cấp cho lớp. Giả định này là những gì cho phép chúng tôi viết khả năng là một sản phẩm đơn giản (như bạn đã chỉ ra).

Đây cũng là điều giúp mô hình vịnh ngây thơ khái quát tốt trong thực tế. Hãy xem xét giai đoạn đào tạo: nếu chúng ta không đưa ra giả định này, thì việc học sẽ liên quan đến việc ước tính phân phối chiều cao, phức tạp: p (x1, x2, ..., xn, c) trong đó tất cả các tính năng được phân phối chung. Thay vào đó, chúng ta có thể đào tạo bằng cách ước tính p (x1, c), p (x2, c), ..., p (xn, c), vì bằng cách biết giá trị c làm cho các giá trị của tất cả các tính năng khác không liên quan (chúng cung cấp không có thêm thông tin về x_i).

Tôi không biết một cách hay để hình dung điều này (bên cạnh ký hiệu mô hình đồ họa tiêu chuẩn), nhưng để cụ thể hơn, bạn có thể viết một số mã để tìm hiểu mô hình vịnh Naive ( bạn có thể lấy một số dữ liệu ví dụ ở đây ). Đào tạo và kiểm tra. Bây giờ bỏ giả định độc lập có điều kiện và sửa đổi mã. Đào tạo, kiểm tra và so sánh với mô hình trước đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.