Trong Naive Bayes, tại sao phải bận tâm với việc làm mịn Laplace khi chúng ta có những từ chưa biết trong bộ thử nghiệm?


27

Tôi đã đọc qua Phân loại Naive Bayes ngày hôm nay. Tôi đọc, dưới tiêu đề Ước tính tham số với thêm 1 làm mịn :

Hãy để c tham khảo một lớp (chẳng hạn như Tích cực hoặc Tiêu cực) và để w tham khảo mã thông báo hoặc từ.

Công cụ ước tính khả năng tối đa cho P(w|c)

count(w,c)count(c)=counts w in class ccounts of words in class c.

Ước tính này của P(w|c) có thể có vấn đề vì nó sẽ cho chúng ta xác suất 0 cho các tài liệu có từ chưa biết. Một cách phổ biến để giải quyết vấn đề này là sử dụng làm mịn Laplace.

Đặt V là tập hợp các từ trong tập huấn luyện, thêm một yếu tố mới UNK (không xác định) vào tập hợp các từ.

Xác định

P(w|c)=count(w,c)+1count(c)+|V|+1,

trong đó V dùng để chỉ từ vựng (các từ trong tập huấn luyện).

Đặc biệt, bất kỳ từ nào chưa biết sẽ có xác suất

1count(c)+|V|+1.

Câu hỏi của tôi là: tại sao chúng ta bận tâm với việc làm mịn Laplace này? Nếu những từ chưa biết mà chúng ta gặp phải trong bộ kiểm tra có xác suất gần như bằng 0, tức là 1count(c)+|V|+1 , điểm bao gồm chúng trong mô hình là gì? Tại sao không bỏ qua và xóa chúng?


3
Nếu bạn không thì bất kỳ câu lệnh nào bạn gặp có chứa từ chưa từng thấy trước đó sẽ có . Điều này có nghĩa là một sự kiện không thể đã xảy ra. Điều đó có nghĩa là mô hình của bạn là một sự phù hợp vô cùng tồi tệ. Ngoài ra, trong một mô hình Bayes thích hợp, điều này không bao giờ có thể xảy ra, vì xác suất từ ​​chưa biết sẽ có một tử số được đưa ra trước đó (có thể không phải là 1). Vì vậy, tôi không biết tại sao điều này đòi hỏi cái tên lạ mắt 'Làm mịn Laplace'. p=0
phỏng đoán

1
Các văn bản mà việc đọc đến từ đâu?
lời giới thiệu

Câu trả lời:


17

Bạn luôn cần xác suất 'không an toàn' này.

Để xem tại sao phải xem xét trường hợp xấu nhất trong đó không có từ nào trong mẫu huấn luyện xuất hiện trong câu kiểm tra. Trong trường hợp này, theo mô hình của bạn, chúng tôi sẽ kết luận rằng câu là không thể nhưng rõ ràng nó tồn tại tạo ra mâu thuẫn.

Một ví dụ cực đoan khác là câu kiểm tra "Alex đã gặp Steve". trong đó "đã gặp" xuất hiện nhiều lần trong mẫu đào tạo nhưng "Alex" và "Steve" thì không. Mô hình của bạn sẽ kết luận tuyên bố này rất có thể không đúng.


Tôi ghét âm thanh như một kẻ biến thái hoàn toàn, nhưng bạn có phiền khi xây dựng không? Làm thế nào để loại bỏ "Alex" và "Steve" thay đổi khả năng của tuyên bố xảy ra?
Matt O'Brien

2
Nếu chúng ta giả định tính độc lập của các từ P (Alex) P (Steve) P (đã gặp) << P (đã gặp)
Sid

1
chúng ta có thể xây dựng vốn từ vựng khi đào tạo mô hình trên tập dữ liệu huấn luyện, vậy tại sao không loại bỏ tất cả các từ mới không xảy ra trong từ vựng khi đưa ra dự đoán về tập dữ liệu kiểm tra?

15

Giả sử bạn đã đào tạo Trình phân loại Naive Bayes của mình trên 2 lớp, "Ham" và "Spam" (nghĩa là phân loại email). Để đơn giản, chúng tôi sẽ giả sử xác suất trước là 50/50.

Bây giờ giả sử bạn có một email (w1,w2,...,wn) mà giá phân loại của bạn rất cao như "Ham", nói

P(Ham|w1,w2,...wn)=.90
P(Spam|w1,w2,..wn)=.10

Càng xa càng tốt.

Bây giờ giả sử bạn có một email khác (w1,w2,...,wn,wn+1) là chính xác giống như email trên ngoại trừ rằng có một từ trong đó mà không được bao gồm trong vốn từ vựng . Do đó, vì số từ này là 0,

P(Ham|wn+1)=P(Spam|wn+1)=0

Đột nhiên,

P(Ham|w1,w2,...wn,wn+1)=P(Ham|w1,w2,...wn)P(Ham|wn+1)=0
P(Spam|w1,w2,..wn,wn+1)=P(Spam|w1,w2,...wn)P(Spam|wn+1)=0

Mặc dù email thứ 1 được phân loại mạnh trong một lớp, email thứ 2 này có thể được phân loại khác nhau vì từ cuối cùng đó có xác suất bằng không.

Làm mịn Laplace giải quyết điều này bằng cách đưa ra từ cuối cùng một xác suất nhỏ khác không cho cả hai lớp, để xác suất sau không đột nhiên giảm xuống không.


Tại sao chúng ta sẽ giữ một từ không tồn tại trong từ vựng? Tại sao không loại bỏ nó?

4
nếu trình phân loại của bạn xếp hạng một email có khả năng là ham, thì p (ham | w1, ..., wn) là 0,9, không phải p (w1, ..., wn | ham)
braaterAfrikaaner

5

Câu hỏi này khá đơn giản nếu bạn quen thuộc với các công cụ ước tính Bayes, vì nó là kết luận trực tiếp của công cụ ước tính Bayes.

Trong phương pháp Bayes, các tham số được coi là một đại lượng mà sự thay đổi của chúng có thể được mô tả bằng phân phối xác suất (hoặc phân phối trước).

Vì vậy, nếu chúng ta xem quy trình chọn là phân phối đa quốc gia, thì chúng ta có thể giải quyết câu hỏi trong vài bước.

Đầu tiên, xác định

m=|V|,n=ni

Nếu chúng ta giả sử phân phối trước của pi là phân phối đồng đều, chúng ta có thể tính toán phân phối xác suất có điều kiện của nó là

p(p1,p2,...,pm|n1,n2,...,nm)=Γ(n+m)i=1mΓ(ni+1)i=1mpini

chúng ta có thể tìm thấy nó trong thực tế phân phối Dirichlet và kỳ vọng của pi

E[pi]=ni+1n+m

Một ước tính tự nhiên cho pi là giá trị trung bình của phân phối sau. Vì vậy, chúng tôi có thể đưa ra công cụ ước tính Bayes của pi :

p^i=E[pi]

Bạn có thể thấy chúng tôi chỉ rút ra kết luận tương tự như Laplace Smoothing.


4

Bỏ qua những từ đó là một cách khác để xử lý nó. Nó tương ứng với tính trung bình (tích hợp) trên tất cả các biến bị thiếu. Vì vậy, kết quả là khác nhau. Làm sao?

Giả sử ký hiệu được sử dụng ở đây :

P(C*|d)= =tranh luậntối đaCΠtôip(ttôi|C)P(C)P(d)αtranh luậntối đaCΠtôip(ttôi|C)P(C)
Ở đâu ttôi là các mã thông báo trong từ vựng và d là một tài liệu.

Hãy nói mã thông báo tkkhông xuất hiện. Thay vì sử dụng làm mịn Laplace (xuất phát từ việc áp dụng Dirichlet trước trên Bayes đa phương), bạn tổng hợp lạitk tương ứng với câu nói: Tôi thực hiện bỏ phiếu có trọng số đối với tất cả các khả năng đối với các mã thông báo chưa biết (có hay không).

P(C*|d)αtranh luậntối đaCΣtkΠtôip(ttôi|C)P(C)= =tranh luậntối đaCP(C)Πtôikp(ttôi|C)Σtkp(tk|C)= =tranh luậntối đaCP(C)Πtôikp(ttôi|C)

Nhưng trong thực tế người ta thích cách tiếp cận làm mịn. Thay vì bỏ qua các mã thông báo đó, bạn chỉ định cho chúng một xác suất thấp giống như suy nghĩ: nếu tôi có mã thông báo không xác định, thì nhiều khả năng đó không phải là loại tài liệu mà tôi nghĩ là nó.


2

Bạn muốn biết lý do tại sao chúng tôi bận tâm với việc làm mịn tất cả trong trình phân loại Naive Bayes (khi chúng ta có thể loại bỏ các tính năng chưa biết thay thế).

Câu trả lời cho câu hỏi của bạn là: không phải tất cả các từ phải được biết trong tất cả các lớp.

Giả sử có hai lớp MN với các tính năng A , BC , như sau:

M: A = 3, B = 1, C = 0

(Trong lớp M , A xuất hiện 3 lần và B chỉ một lần)

N: A = 0, B = 1, C = 3

(Trong lớp N , C xuất hiện 3 lần và B chỉ một lần)

Hãy xem điều gì xảy ra khi bạn vứt bỏ các tính năng xuất hiện 0 lần.

A) Vứt bỏ các tính năng xuất hiện số lần không trong bất kỳ lớp nào

Nếu bạn vứt bỏ các tính năng AC vì chúng xuất hiện 0 lần trong bất kỳ lớp nào, thì bạn chỉ còn lại tính năng B để phân loại tài liệu.

Và mất thông tin đó là một điều xấu như bạn sẽ thấy dưới đây!

Nếu bạn được trình bày với một tài liệu kiểm tra như sau:

B = 1, C = 3

(Nó chứa B một lần và C ba lần)

Bây giờ, kể từ khi bạn đã loại bỏ các tính năng MộtB , bạn sẽ không có thể cho biết liệu các tài liệu nêu trên thuộc về lớp M hoặc lớp N .

Vì vậy, mất bất kỳ thông tin tính năng là một điều xấu!

B) Vứt bỏ các tính năng xuất hiện số lần không trong tất cả các lớp

Có thể khắc phục vấn đề này bằng cách loại bỏ chỉ những tính năng xuất hiện 0 lần trong tất cả các lớp không?

Không, bởi vì điều đó sẽ tạo ra vấn đề của riêng nó!

Tài liệu kiểm tra sau đây minh họa những gì sẽ xảy ra nếu chúng ta làm điều đó:

A = 3, B = 1, C = 1

Xác suất của MN đều trở thành số không (vì chúng tôi không vứt bỏ xác suất 0 của A trong lớp N và xác suất 0 của C trong lớp M ).

C) Đừng vứt bỏ mọi thứ - Thay vào đó hãy sử dụng Smoothing

Làm mịn cho phép bạn phân loại chính xác cả hai tài liệu trên bởi vì:

  1. Bạn không bị mất thông tin đếm trong các lớp có thông tin đó và
  2. Bạn không cần phải tranh cãi với số không.

Phân loại Naive Bayes trong thực tế

Trình phân loại Naive Bayes trong NLTK được sử dụng để loại bỏ các tính năng không có số lượng trong bất kỳ lớp nào.

Điều này được sử dụng để làm cho nó hoạt động kém khi được đào tạo bằng cách sử dụng một quy trình EM cứng (trong đó trình phân loại được khởi động từ rất ít dữ liệu đào tạo).


2
@ Aiaioo Labs Bạn không nhận ra rằng anh ấy đang đề cập đến những từ không xuất hiện trong tập huấn luyện, ví dụ của bạn, anh ấy đã đề cập đến việc nếu D xuất hiện, vấn đề không phải là làm trơn tru các tính toán từ tập huấn luyện thay vì tập kiểm tra. Việc sử dụng làm mịn laplace trên các từ chưa biết từ bộ TEST khiến xác suất bị lệch về phía bất kỳ lớp nào có số lượng mã thông báo ít nhất do 0 + 1/2 + 3 lớn hơn 0 + 1/3 + 3 (nếu một trong các lớp có 3 mã thông báo và cái còn lại có 2). ...

2
Điều này thực sự có thể biến một phân loại chính xác thành một phân loại không chính xác nếu đủ các từ chưa biết được làm mịn vào phương trình. Làm mịn Laplace là ok cho các tính toán tập huấn luyện, nhưng bất lợi cho kiểm tra phân tích tập hợp. Cũng hãy tưởng tượng bạn có một bộ kiểm tra với tất cả các từ chưa biết, nó nên được phân loại ngay lập tức cho lớp có xác suất cao nhất, nhưng thực tế nó có thể và thường sẽ không được phân loại như vậy và thường được phân loại là lớp có số lượng thấp nhất mã thông báo.

@DrakeThatcher, rất đồng ý với bạn, vâng, nếu chúng tôi không xóa những từ không có trong từ vựng, thì proba dự đoán sẽ bị lệch sang lớp với số lượng từ ít nhất.

1

Tôi cũng gặp phải vấn đề tương tự khi nghiên cứu Naive Bayes.

Theo tôi, bất cứ khi nào chúng tôi bắt gặp một ví dụ thử nghiệm mà chúng tôi đã không gặp trong khi đào tạo, thì xác suất Posterior sẽ trở thành 0.

Vì vậy, thêm 1, ngay cả khi chúng tôi không bao giờ đào tạo về một tính năng / lớp cụ thể, xác suất Posterior sẽ không bao giờ là 0.


1

Matt bạn đúng là bạn nêu lên một điểm rất tốt - vâng Laplace Smoothing khá vô nghĩa! Chỉ cần vứt bỏ các tính năng đó có thể là một cách tiếp cận hợp lệ, đặc biệt khi mẫu số cũng là một con số nhỏ - đơn giản là không có đủ bằng chứng để hỗ trợ ước tính xác suất.

Tôi có ác cảm mạnh mẽ với việc giải quyết bất kỳ vấn đề nào thông qua việc sử dụng một số điều chỉnh tùy ý. Vấn đề ở đây là số không, "giải pháp" là chỉ "thêm một số giá trị nhỏ vào 0 để nó không còn nữa - MAGIC vấn đề không còn nữa". Tất nhiên đó là hoàn toàn tùy ý.

Đề xuất của bạn về lựa chọn tính năng tốt hơn để bắt đầu là một cách tiếp cận ít độc đoán hơn và IME làm tăng hiệu suất. Hơn nữa, Laplace Smoothing kết hợp với Bayes ngây thơ như mô hình theo kinh nghiệm của tôi làm trầm trọng thêm vấn đề về độ chi tiết - tức là vấn đề mà đầu ra điểm có xu hướng gần bằng 1 hoặc 0,0 (nếu số lượng tính năng là vô hạn thì mọi điểm sẽ là 1,0 hoặc 0,0 - đây là hệ quả của giả định độc lập).

Bây giờ các kỹ thuật thay thế cho ước tính xác suất tồn tại (ngoài khả năng tối đa + làm mịn Laplace), nhưng được ồ ạt theo tài liệu. Trong thực tế, có cả một lĩnh vực gọi là Quy trình suy luận và logic suy diễn sử dụng rất nhiều công cụ từ Lý thuyết thông tin.

Những gì chúng tôi sử dụng trong thực tế là Cập nhật Entropy tối thiểu, đây là phần mở rộng của Cập nhật của Jeffrey, nơi chúng tôi xác định vùng lồi của không gian xác suất phù hợp với bằng chứng là một khu vực có nghĩa là ước tính Khả năng tối đa nằm trong Độ lệch tuyệt đối dự kiến ​​từ điểm.

Điều này có một đặc tính tốt là khi số lượng điểm dữ liệu giảm các ước tính hòa bình một cách suôn sẻ tiếp cận trước - và do đó, hiệu quả của chúng trong tính toán Bayes là không có giá trị. Mặt khác, làm mịn Laplace làm cho mỗi ước lượng tiếp cận điểm Entropy tối đa có thể không phải là trước và do đó hiệu ứng trong phép tính không phải là null và sẽ chỉ thêm nhiễu.

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.