ใน Naive Bayes ทำไมต้องกังวลกับ Laplace ที่ราบเรียบเมื่อเรามีคำที่ไม่รู้จักในชุดทดสอบ


27

วันนี้ฉันอ่านหนังสือจำแนก Naive Bayes ฉันอ่านภายใต้หัวข้อการประมาณค่าพารามิเตอร์ด้วยการเพิ่ม 1 การปรับให้เรียบ :

ให้cอ้างถึงคลาส (เช่นค่าบวกหรือค่าลบ) และให้wหมายถึงโทเค็นหรือคำ

ตัวประมาณความน่าจะเป็นสูงสุดสำหรับP(w|c)คือ

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

การประมาณค่าP(w|c)อาจเป็นปัญหาได้เนื่องจากมันจะทำให้เรามีความน่าจะเป็น0สำหรับเอกสารที่มีคำที่ไม่รู้จัก วิธีทั่วไปในการแก้ปัญหานี้คือการใช้ Laplace smoothing

ให้ V เป็นชุดของคำในชุดฝึกอบรมเพิ่มองค์ประกอบใหม่UNK (ไม่ทราบ) ลงในชุดคำ

กำหนด

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

โดยที่Vหมายถึงคำศัพท์ (คำในชุดฝึกอบรม)

โดยเฉพาะอย่างยิ่งคำที่ไม่รู้จักจะมีความน่าจะเป็น

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

คำถามของฉันคือสิ่งนี้: ทำไมเราถึงต้องกังวลกับ Laplace ที่ปรับให้เรียบนี้? หากคำที่ไม่รู้จักเหล่านี้ที่เราพบในชุดทดสอบมีความน่าจะเป็นที่เห็นได้ชัดเกือบเป็นศูนย์คือ1count(c)+|V|+1อะไรคือจุดรวมของพวกเขาในรูปแบบ? ทำไมไม่มองข้ามและลบทิ้ง?


3
p=0

1
ข้อความที่อ่านมาจากอะไร
คำจากนั้นไป

คำตอบ:


17

คุณต้องการความน่าจะเป็น "ล้มเหลว" นี้เสมอ

เพื่อดูว่าทำไมพิจารณากรณีที่เลวร้ายที่สุดโดยที่ไม่มีคำใด ๆ ในตัวอย่างการฝึกปรากฏในประโยคทดสอบ ในกรณีนี้ภายใต้แบบจำลองของคุณเราจะสรุปได้ว่าประโยคนั้นเป็นไปไม่ได้ แต่มีอยู่อย่างชัดเจนว่าสร้างความขัดแย้ง

อีกตัวอย่างที่รุนแรงคือประโยคทดสอบ "อเล็กซ์ได้พบกับสตีฟ" ที่ "พบ" ปรากฏขึ้นหลายครั้งในตัวอย่างการฝึกอบรม แต่ "อเล็กซ์" และ "สตีฟ" ไม่ แบบจำลองของคุณจะสรุปว่าข้อความนี้มีแนวโน้มมากซึ่งไม่เป็นความจริง


ฉันเกลียดที่จะฟังดูเหมือนปัญญาอ่อนที่สมบูรณ์ แต่คุณจะคิดอย่างละเอียดไหม? การลบ "Alex" และ "Steve" จะเปลี่ยนโอกาสของคำสั่งที่เกิดขึ้นได้อย่างไร
Matt O'Brien

2
หากเราถือว่าความเป็นอิสระของคำ P (Alex) P (Steve) P (พบ) << P (พบ)
Sid

1
เราสามารถสร้างคำศัพท์เมื่อฝึกฝนแบบจำลองในชุดข้อมูลการฝึกอบรมดังนั้นทำไมไม่เพียง แต่ลบคำศัพท์ใหม่ทั้งหมดที่ไม่ได้เกิดขึ้นในคำศัพท์ออกมาเมื่อทำการทำนายในชุดข้อมูลการทดสอบ?
อะโวคาโด

15

สมมติว่าคุณได้ฝึกอบรมตัวแยกแยะ Naive Bayes ใน 2 คลาส "แฮม" และ "สแปม" (นั่นคือการจำแนกอีเมล) เพื่อความเรียบง่ายเราจะถือว่าความน่าจะเป็นก่อนหน้านี้คือ 50/50

(w1,w2,...,wn)

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

จนถึงตอนนี้ดีมาก

(w1,w2,...,wn,wn+1)

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

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

แม้ว่าอีเมลที่ 1 จะถูกจัดประเภทอย่างมากในชั้นเดียว แต่อีเมลที่สองนี้อาจถูกจัดประเภทแตกต่างกันเนื่องจากคำสุดท้ายที่มีความน่าจะเป็นศูนย์

Laplace smoothing แก้ปัญหานี้โดยการให้คำสุดท้ายมีความเป็นไปได้ที่ไม่เป็นศูนย์ขนาดเล็กสำหรับทั้งสองคลาสเพื่อให้ความน่าจะเป็นด้านหลังไม่ลดลงเป็นศูนย์ทันที


ทำไมเราถึงเก็บคำที่ไม่มีอยู่ในคำศัพท์ทั้งหมด? ทำไมไม่ลองลบมันดูล่ะ?
อะโวคาโด

4
ถ้าลักษณนามของคุณให้คะแนนอีเมลว่าน่าจะเป็นแฮมแล้ว p (แฮม | w1, ... , wn) คือ 0.9 ไม่ใช่ p (w1, ... , wn | แฮม)
braaterAfrikaaner

5

คำถามนี้ค่อนข้างง่ายหากคุณคุ้นเคยกับตัวประมาณค่าแบบเบย์เนื่องจากเป็นข้อสรุปโดยตรงจากตัวประมาณค่าแบบเบย์

ในวิธีการแบบเบย์พารามิเตอร์จะถือเป็นปริมาณที่สามารถอธิบายความผันแปรได้โดยการแจกแจงความน่าจะเป็น (หรือการแจกแจงก่อนหน้า)

ดังนั้นหากเราดูขั้นตอนการยกเป็นการแจกแจงแบบหลายส่วนเราสามารถแก้ปัญหาได้ในไม่กี่ขั้นตอน

ก่อนกำหนด

m=|V|,n=ni

pi

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

pi

E[pi]=ni+1n+m

pipi

p^i=E[pi]

คุณจะเห็นว่าเราเพิ่งวาดข้อสรุปเดียวกับ Laplace Smoothing


4

การไม่สนใจคำเหล่านั้นเป็นอีกวิธีในการจัดการ มันสอดคล้องกับค่าเฉลี่ย (รวมออก) มากกว่าตัวแปรที่หายไปทั้งหมด ดังนั้นผลลัพธ์จึงแตกต่างกัน อย่างไร?

P(C|d)=argmaxCip(ti|C)P(C)P(d)argmaxCip(ti|C)P(C)
tid

สมมติว่าโทเค็นไม่ปรากฏขึ้น แทนการใช้ Laplace smoothing (ซึ่งมาจากการจัดเก็บ Dirichlet ก่อนที่ Multinomial Bayes) คุณสรุปที่สอดคล้องกับการพูดว่า: ฉันรับน้ำหนักลงคะแนนความเป็นไปได้ทั้งหมดสำหรับโทเค็นที่ไม่รู้จัก (มีหรือไม่) .tktk

P(C|d)argmaxCtkip(ti|C)P(C)=argmaxCP(C)ikp(ti|C)tkp(tk|C)=argmaxCP(C)ikp(ti|C)

แต่ในทางปฏิบัติเราชอบวิธีการที่ราบเรียบมากกว่า แทนที่จะเพิกเฉยโทเค็นเหล่านั้นคุณได้กำหนดความน่าจะเป็นต่ำซึ่งเป็นเหมือนความคิด: ถ้าฉันไม่รู้จักโทเค็นมันก็ไม่น่าเป็นไปได้ที่เป็นเอกสารประเภทที่ฉันคิดว่าเป็นอย่างนั้น


2

คุณต้องการที่จะรู้ว่าทำไมเราถึงต้องปรับให้เรียบในตัวจำแนก Naive Bayes (เมื่อเราสามารถละทิ้งคุณสมบัติที่ไม่รู้จักแทน)

คำตอบสำหรับคำถามของคุณคือ: ไม่จำเป็นต้องรู้ทุกคำในทุกชั้นเรียน

สมมติว่ามีคลาสMและNสองคลาสพร้อมคุณสมบัติA , BและCดังนี้

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

(ในคลาสM , Aจะปรากฏขึ้น 3 ครั้งและBเพียงครั้งเดียว)

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

(ในคลาสN , Cจะปรากฏขึ้น 3 ครั้งและBเพียงครั้งเดียว)

มาดูกันว่าจะเกิดอะไรขึ้นเมื่อคุณละทิ้งฟีเจอร์ที่ปรากฏเป็นศูนย์ครั้ง

A) ทิ้งคุณสมบัติที่ปรากฏเป็นศูนย์ในทุกคลาส

หากคุณทิ้งคุณสมบัติAและCเนื่องจากปรากฏเป็นศูนย์ในคลาสใด ๆคุณจะเหลือฟีเจอร์Bเพื่อจัดประเภทเอกสารด้วยเท่านั้น

และการสูญเสียข้อมูลนั้นเป็นสิ่งที่ไม่ดีอย่างที่คุณเห็นด้านล่าง!

หากคุณพบเอกสารทดสอบดังนี้:

B = 1, C = 3

(ประกอบด้วย B หนึ่งครั้งและ C สามครั้ง)

ตอนนี้เมื่อคุณได้ทิ้งมีและBคุณจะไม่สามารถที่จะบอกได้ว่าเอกสารดังกล่าวข้างต้นเป็นของชั้นMหรือระดับN

ดังนั้นการสูญเสียข้อมูลคุณลักษณะใด ๆ จึงเป็นสิ่งที่ไม่ดี!

B) ทิ้งคุณสมบัติที่ปรากฏเป็นศูนย์ในทุกคลาส

เป็นไปได้หรือไม่ที่จะแก้ไขปัญหานี้โดยการยกเลิกเฉพาะคุณสมบัติที่ปรากฏเป็นศูนย์ในทุกคลาส?

ไม่เพราะนั่นจะสร้างปัญหาของตัวเอง!

เอกสารทดสอบต่อไปนี้แสดงให้เห็นถึงสิ่งที่จะเกิดขึ้นหากเราทำเช่นนั้น:

A = 3, B = 1, C = 1

ความน่าจะเป็นของMและNจะกลายเป็นศูนย์ทั้งคู่(เพราะเราไม่ได้ละทิ้งความน่าจะเป็นศูนย์ของAในคลาสNและความน่าจะเป็นศูนย์ของCในคลาสM )

C) อย่าทิ้งอะไรไป - ใช้การปรับให้เรียบแทน

การปรับให้เรียบช่วยให้คุณจำแนกเอกสารทั้งสองข้างต้นได้อย่างถูกต้องเนื่องจาก:

  1. คุณจะไม่สูญเสียข้อมูลการนับในชั้นเรียนที่มีข้อมูลดังกล่าวและ
  2. คุณไม่ต้องโต้แย้งกับการนับศูนย์

ลักษณนามไร้เดียงสาในทางปฏิบัติ

ลักษณนาม Naive Bayes ใน NLTK เคยใช้ในการทิ้งคุณสมบัติที่มีค่าเป็นศูนย์ในชั้นเรียนใด ๆ

สิ่งนี้ใช้เพื่อให้ทำงานได้ไม่ดีเมื่อฝึกอบรมโดยใช้โพรซีเดอร์ EM อย่างหนัก (ซึ่งตัวจําแนกถูกบูสเตอร์ติดตั้งจากข้อมูลการฝึกอบรมเพียงเล็กน้อย)


2
@ Aiaioo Labs คุณล้มเหลวที่จะรู้ว่าเขาพูดถึงคำที่ไม่ปรากฏในชุดฝึกอบรมเลยสำหรับตัวอย่างของคุณเขาอ้างว่าถ้า D ปรากฏขึ้นปัญหาไม่ได้เกิดจากการที่ Laplace ปรับให้เรียบในการคำนวณจาก ชุดฝึกอบรมค่อนข้างชุดทดสอบ การใช้ Laplace ที่ราบเรียบกับคำที่ไม่รู้จักจากชุดการทดสอบทำให้เกิดความเป็นไปได้ที่จะเอียงไปหาคลาสใดก็ตามที่มีโทเค็นจำนวนน้อยที่สุดเนื่องจาก 0 + 1/2 + 3 มีขนาดใหญ่กว่านั้นคือ 0 + 1/3 + 3 โทเค็น 3 อันและอีกอันมี 2) ...

2
สิ่งนี้สามารถเปลี่ยนการจัดประเภทที่ถูกต้องให้เป็นการจัดประเภทที่ไม่ถูกต้องหากมีคำที่ไม่รู้จักเพียงพอที่จะทำให้เรียบในสมการ Laplace smoothing นั้นใช้ได้สำหรับการคำนวณชุดฝึกอบรม แต่เป็นอันตรายต่อการวิเคราะห์ชุดทดสอบ ลองจินตนาการว่าคุณมีชุดทดสอบที่มีคำที่ไม่รู้จักทั้งหมดควรจัดให้อยู่ในชั้นเรียนที่มีความน่าจะเป็นสูงที่สุด แต่ในความเป็นจริงมันสามารถและจะไม่จัดเป็นแบบนี้และมักจะจัดเป็นคลาสที่มีจำนวนต่ำที่สุด ของโทเค็น

@DrakeThatcher เห็นด้วยอย่างยิ่งกับคุณใช่ถ้าเราไม่ลบคำที่ไม่ได้อยู่ในคำศัพท์แล้ว proba ทำนายแล้วจะเบ้ไปเรียนด้วยคำจำนวนน้อย
อะโวคาโด

1

ฉันเจอปัญหาเดียวกันขณะเรียนที่ Naive Bayes

ตามที่ฉันทุกครั้งที่เราพบตัวอย่างการทดสอบที่เราไม่ได้เจอในระหว่างการฝึกซ้อมความน่าจะเป็นด้านหลังจะกลายเป็น 0

ดังนั้นการเพิ่ม 1 ถึงแม้ว่าเราจะไม่เคยฝึกฝนคุณลักษณะ / คลาสเฉพาะความน่าจะเป็นหลังนั้นจะไม่เป็น 0


1

แมตต์คุณถูกต้องที่คุณยกระดับจุดที่ดีมาก - ใช่ Laplace Smoothing เป็นเรื่องไร้สาระค่อนข้างตรงไปตรงมา! เพียงแค่ทิ้งคุณสมบัติเหล่านั้นอาจเป็นวิธีที่ถูกต้องโดยเฉพาะอย่างยิ่งเมื่อตัวหารยังมีจำนวนน้อย - มีหลักฐานเพียงไม่เพียงพอที่จะสนับสนุนการประมาณค่าความน่าจะเป็น

ฉันมีความเกลียดชังอย่างมากในการแก้ไขปัญหาใด ๆ ผ่านการปรับใช้โดยพลการบางอย่าง ปัญหานี่คือเลขศูนย์ "การแก้ปัญหา" ก็แค่ "เพิ่มค่าเล็ก ๆ น้อย ๆ ให้เป็นศูนย์ดังนั้นมันจึงไม่ใช่ศูนย์อีกต่อไป - MAGIC ปัญหาไม่มีอีกแล้ว" แน่นอนว่าเป็นเรื่องโดยพลการทั้งหมด

ข้อเสนอแนะของคุณเกี่ยวกับการเลือกคุณสมบัติที่ดีกว่าเพื่อเริ่มต้นนั้นเป็นวิธีการที่ไม่เจาะจงและ IME จะเพิ่มประสิทธิภาพ นอกจากนี้ Laplace Smoothing ร่วมกับ Bayes ไร้เดียงสาแบบที่มีในประสบการณ์ของฉันแย่ลงปัญหา granularity - นั่นคือปัญหาที่คะแนนผลลัพธ์มีแนวโน้มที่จะใกล้เคียงกับ 1.0 หรือ 0.0 (ถ้าจำนวนของคุณลักษณะเป็นอนันต์ทุกคะแนนจะเป็น 1.0 หรือ 0.0 - นี่เป็นผลสืบเนื่องมาจากการสันนิษฐานอิสรภาพ

ขณะนี้มีเทคนิคทางเลือกอื่น ๆ สำหรับการประมาณความน่าจะเป็น (นอกเหนือจากความเป็นไปได้สูงสุด + การปรับให้เรียบแบบ Laplace) แต่ได้รับการบันทึกไว้อย่างหนาแน่น ในความเป็นจริงมีทั้งฟิลด์ที่เรียกว่า Inductive Logic และ Inference Process ที่ใช้เครื่องมือจำนวนมากจากทฤษฎีข้อมูล

สิ่งที่เราใช้ในทางปฏิบัติคือการข้ามขั้นต่ำของเอนโทรปีการอัปเดตซึ่งเป็นส่วนเสริมของการอัปเดตของเจฟฟรีย์ที่เรากำหนดขอบเขตของความน่าจะเป็นพื้นที่นูนที่สอดคล้องกับหลักฐานว่าเป็นภูมิภาคดังกล่าว ค่าเบี่ยงเบนสัมบูรณ์ที่คาดหวังจากจุด

นี่เป็นคุณสมบัติที่ดีที่เมื่อจำนวนคะแนนข้อมูลลดลงการประมาณความสงบจึงเข้าใกล้อย่างราบรื่นก่อนหน้านี้ดังนั้นผลกระทบในการคำนวณแบบเบย์จึงเป็นโมฆะ Laplace ที่ปรับให้เรียบจะทำให้การประมาณค่าแต่ละค่าเข้าใกล้จุดสูงสุดของเอนโทรปีที่อาจไม่ใช่ค่าก่อนหน้าดังนั้นผลลัพธ์ในการคำนวณจะไม่เป็นโมฆะและจะเพิ่มสัญญาณรบกวน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.