อัลกอริทึม Naive Bayes ในการเรียนรู้ของเครื่อง

อัลกอริทึมลักษณนาม Naive Bayes

อัลกอริทึมลักษณนาม Naive Bayes

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

Naive Bayes Classifier ในแมชชีนเลิร์นนิงเป็นแมชชีนเลิร์นนิงที่ได้รับการดูแลสำหรับงานจำแนกประเภท

อัลกอริทึมลักษณนาม Naive Bayes

Naive Bayes ใช้สำหรับแก้ไขปัญหาการจำแนกประเภท มันทำนายบนพื้นฐานของความน่าจะเป็นของวัตถุ Naive Bayes ขึ้นอยู่กับทฤษฎีบทของ Bayes และส่วนใหญ่จะใช้ในการจำแนกข้อความ Naive Bayes เป็นอัลกอริธึมการจำแนกความน่าจะเป็นที่ใช้งานง่ายและฝึกอบรมได้รวดเร็ว

เนื่องจากตัวแยกประเภท Naive Bayes ขึ้นอยู่กับทฤษฎีบทของ Bayes ดังนั้นจึงเรียกว่าตัวแยกประเภทความน่าจะเป็น คาดการณ์ตามความน่าจะเป็นของรายการ

เหตุผลที่ถูกเรียกว่า Naïve Bayes?

ตัวแยกประเภท Naive Bayes มีสองคำ: Naive และ Bayes ทำไมต้องนาวี? อัลกอริทึมนี้ถือว่าประโยคคำทั้งหมดเหมือนกัน ตัวอย่างเช่น “คุณเป็น” และ “คุณเป็น” เหมือนกันสำหรับอัลกอริทึมนี้ ไม่ขึ้นอยู่กับคุณสมบัติหรือการเกิดขึ้นของคุณสมบัติ หากคุณต้องการระบุผลไม้แอปเปิ้ล คุณต้องมีสีแดง รูปร่างทรงกลม รสหวานจึงจะเรียกว่าแอปเปิ้ล หมายความว่าคุณลักษณะเหล่านี้เป็นอิสระจากกัน

  • ตัวแยกประเภท Naive Bayes ถือว่าฟีเจอร์นั้นเป็นอิสระจากกัน เนื่องจากสิ่งนี้แทบจะเป็นไปไม่ได้เลยในข้อมูลในชีวิตจริง ดังนั้นตัวแยกประเภทจึงเรียกว่าไร้เดียงสา
  • อัลกอริธึมการจำแนกประเภทนี้ใช้ทฤษฎีบทของเบย์ที่เรียกว่า Naive Bayes Classifier

ทฤษฎีบทของเนฟ เบย์ส

ทฤษฎีบทของเบย์ใช้เพื่อค้นหาความน่าจะเป็นของสมมติฐานที่มีความน่าจะเป็นแบบมีเงื่อนไขซึ่งขึ้นอยู่กับความรู้เดิม ทฤษฎีบทนี้ตั้งชื่อตาม Thomas Bayes ตัวแยกประเภท Naive Bayes ทำงานบนหลักการของความน่าจะเป็นแบบมีเงื่อนไข ตามที่ให้ไว้ในทฤษฎีบทของ Bayes

เพื่อทำความเข้าใจทฤษฎีบทของเบย์ เราจะดูตัวอย่างการแยกประเภทเบย์ที่ไร้เดียงสาของการโยนเหรียญสองเหรียญ เราสามารถหาช่องว่างตัวอย่างเหล่านี้ได้โดยการโยนเหรียญสองเหรียญ: {HH, HT, TH, TT} ดังนั้น ความน่าจะเป็นของเหตุการณ์เหล่านี้จะเป็น:

  • ได้สองหัว = 1/4
  • อย่างน้อยหนึ่งหาง = 3/4
  • เหรียญที่สองเป็นหัวให้เหรียญแรกมีหาง = 1/2
  • ได้สองหัวเมื่อได้เหรียญแรกคือหัว = 1/2

ทฤษฎีบทของเบย์คำนวณความน่าจะเป็นของเหตุการณ์หนึ่งที่เกิดขึ้นโดยพิจารณาจากความน่าจะเป็นของเหตุการณ์อื่นที่ได้เกิดขึ้นแล้ว สูตรสำหรับทฤษฎีบทของเบย์ได้ดังนี้:

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

P(A|B) ความน่าจะเป็นของเลขคู่ A เมื่อเลข B เกิดขึ้นแล้ว ความน่าจะเป็น P(B) ไม่ควรเป็นศูนย์

  • คุณต้องค้นหาความน่าจะเป็นของเหตุการณ์ A ซึ่งจะได้รับเมื่อเหตุการณ์ B (หลักฐาน) เป็นจริง
  • P(A) คือนิรนัย (นิรนัย กล่าวคือ ความน่าจะเป็นของเหตุการณ์ที่สังเกตได้ก่อนการพิสูจน์) ของ A ในที่นี้ เหตุการณ์ B คือค่าของสิ่งที่ไม่ทราบ
  • P(A|B) คือความน่าจะเป็นภายหลังของเหตุการณ์ B กล่าวคือ ความน่าจะเป็นของเหตุการณ์หลังจากพิจารณาหลักฐานแล้ว

ตัวอย่างการทำงานของตัวแยกประเภทNaïve Bayes

ให้เรายกตัวอย่างการซื้อเพื่อทำความเข้าใจการทำงานของ Bayes Naive Classifier ในชุดข้อมูลนี้มีชุดข้อมูลตัวอย่างขนาดเล็กจำนวน 30 แถวสำหรับตัวอย่างนี้

ชุด

ตัวอย่างการทำงานของตัวแยกประเภทNaïve Bayes

ปัญหาคือการคาดเดาว่าบุคคลจะซื้อผลิตภัณฑ์โดยใช้วัน ส่วนลด และการจัดส่งฟรีโดยใช้ทฤษฎีบท Naive Bayes หรือไม่

ตัวอย่างการทำงานของตัวแยกประเภทNaïve Bayes

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

ตัวอย่างการทำงานของตัวแยกประเภทNaïve Bayes

ปล่อยให้เหตุการณ์ 'ซื้อ' แสดงเป็น 'A' และตัวแปรอิสระ ได้แก่ 'ส่วนลด' 'จัดส่งฟรี' และ 'วัน' แสดงเป็น 'B' เราจะใช้เหตุการณ์และตัวแปรเหล่านี้เพื่อใช้ทฤษฎีบทของเบย์

ขั้นตอน 2) ตอนนี้ให้เราคำนวณตารางความน่าจะเป็นทีละรายการ

ตัวอย่างการทำงานของตัวแยกประเภทNaïve Bayes

1 ตัวอย่าง:

จากตารางความน่าจะเป็นนี้ เราจะคำนวณความน่าจะเป็นแบบมีเงื่อนไขดังต่อไปนี้

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

และหา P(A/B) โดยใช้ทฤษฎีบทเบย์

P(A/B)
= P(No Buy / Weekday)
= P(Weekday / No Buy) * P(No Buy) / P(Weekday)
= (2/6 * 6/30) / (11/30)
= 0.1818

ในทำนองเดียวกัน ถ้า A คือซื้อ

= P(Buy / Weekday)
= P(Weekday / Buy) * P(Buy) / P(Weekday)
= (9/24 * 24/30) / (11/30)
= 0.8181

หมายเหตุ เนื่องจาก P(Buy | Weekday) มากกว่า P(No Buy | Weekday) เราจึงสามารถสรุปได้ว่าลูกค้ามีแนวโน้มที่จะซื้อสินค้าในวันธรรมดามากที่สุด

ขั้นตอน 3) ในทำนองเดียวกัน เราสามารถคำนวณความน่าจะเป็นที่เหตุการณ์จะเกิดขึ้นโดยพิจารณาจากตัวแปรทั้งสามตัว ตอนนี้เราจะคำนวณตารางความน่าจะเป็นสำหรับตัวแปรทั้งสามโดยใช้ตารางความถี่ข้างต้น

ตัวอย่างการทำงานของตัวแยกประเภทNaïve Bayes

2 ตัวอย่าง:

ตอนนี้ เมื่อใช้ตารางความเป็นไปได้ทั้งสามตารางนี้ เราจะคำนวณว่าลูกค้ามีแนวโน้มที่จะซื้อสินค้าโดยพิจารณาจากชุดค่าผสมของ 'วัน' 'ส่วนลด' และ 'การจัดส่งฟรี' ที่เฉพาะเจาะจงหรือไม่

ให้เรานำปัจจัยเหล่านี้มารวมกัน:

  • วัน = วันหยุด
  • ส่วนลด = ใช่
  • ส่งฟรี = ใช่

เมื่อ A = ซื้อ

คำนวณความน่าจะเป็นแบบมีเงื่อนไขของการซื้อจากการรวมกันของวัน ส่วนลด และการจัดส่งฟรีต่อไปนี้

โดยที่ B อยู่:

  • วัน = วันหยุด
  • ส่วนลด = ใช่
  • ส่งฟรี = ใช่

และ A = ซื้อ

ดังนั้น

= 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

เมื่อ A = ไม่มีการซื้อ

ในทำนองเดียวกัน ให้คำนวณความน่าจะเป็นแบบมีเงื่อนไขของการซื้อในชุดค่าผสมของวัน ส่วนลด และการจัดส่งฟรีต่อไปนี้

โดยที่ B อยู่:

  • วัน = วันหยุด
  • ส่วนลด = ใช่
  • ส่งฟรี = ใช่

และ A = ไม่มีการซื้อ

ดังนั้น

= 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

ขั้นตอน 4) ดังนั้น

ความน่าจะเป็นในการซื้อ = 0.986

ความน่าจะเป็นของการไม่ซื้อ = 0.027

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

  • ผลรวมของความน่าจะเป็น = 0.986 + 0.027 = 1.013
  • โอกาสในการซื้อ = 0.986 / 1.013 = 97.33 %
  • ความเป็นไปได้ที่จะไม่มีการซื้อ = 0.027 / 1.013 = 2.67 %

โปรดทราบว่าเนื่องจาก 97.33% มากกว่า 2.67% เราสามารถสรุปได้ว่าลูกค้าโดยเฉลี่ยจะซื้อในช่วงวันหยุดพร้อมส่วนลดและการจัดส่งฟรี

ประเภทของโมเดล Naïve Bayes

ตัวแยกประเภท Naive Bayes มีหลายประเภท ที่นี่เราได้กล่าวถึงตัวแยกประเภท Multinomial, Bernoulli และ Gaussian Naive Bayes

1. พหุนาม Naive Bayes

โมเดล Naive Bayes ประเภทนี้ใช้สำหรับปัญหาการจำแนกประเภทเอกสาร ใช้งานได้กับฟีเจอร์ที่แสดงความถี่ของคำในเอกสาร ตัวแยกประเภทจะพิจารณาการเกิดและจำนวนคำเพื่อกำหนดความน่าจะเป็นของเอกสารที่อยู่ในหมวดหมู่เฉพาะ เช่น กีฬา การเมือง หรือเทคโนโลยี

2. แบร์นูลลี นาอิฟ เบเยส

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

3. Gaussian ไร้เดียงสา Bayes

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

เกาส์เซียน ไร้เดียงสา เบย์ส

สูตรสำหรับความน่าจะเป็นแบบมีเงื่อนไขเปลี่ยนเป็น

เกาส์เซียน ไร้เดียงสา เบย์ส

ประโยชน์และข้อจำกัดของตัวแยกประเภท Naive Bayes

มีข้อดีและข้อเสียมากมายของอัลกอริทึม Naive Bayes ในการเรียนรู้ของเครื่อง

ประโยชน์ของตัวแยกประเภท Naive Bayes

  • ความเรียบง่ายและมีประสิทธิภาพ: Naive Bayes นั้นเรียบง่ายและง่ายต่อการฝึกฝนและนำไปใช้ มีประสิทธิภาพเนื่องจากมีต้นทุนการคำนวณต่ำ สามารถจัดการชุดข้อมูลขนาดใหญ่ได้อย่างมีประสิทธิภาพ
  • การฝึกอบรมและการทำนายอย่างรวดเร็ว: Naive Bayes ไม่ต้องการข้อมูลการฝึกอบรมมากนักเนื่องจากความเป็นอิสระระหว่างฟีเจอร์ต่างๆ สามารถคาดการณ์ได้อย่างรวดเร็วเมื่อโมเดลได้รับการฝึกฝนแล้ว
  • scalability: Naive Bayes สามารถจัดการชุดข้อมูลมิติสูงพร้อมคุณสมบัติจำนวนมากได้ มันทำงานได้ดีแม้ว่าจำนวนฟีเจอร์จะมากกว่าจำนวนตัวอย่างการฝึกก็ตาม โดยจะปรับขนาดตามจำนวนจุดข้อมูลและตัวทำนาย จัดการทั้งข้อมูลที่ต่อเนื่องและไม่ต่อเนื่อง
  • ความทนทานต่อคุณสมบัติที่ไม่เกี่ยวข้อง: ไม่ไวต่อคุณสมบัติที่ไม่เกี่ยวข้อง
  • ทำงานได้ดีกับชุดฝึกซ้อมขนาดเล็ก: Naive Bayes สามารถให้ผลลัพธ์ที่สมเหตุสมผลแม้จะมีข้อมูลการฝึกอบรมที่จำกัดก็ตาม สามารถจัดการกับสถานการณ์ที่จำนวนอินสแตนซ์การฝึกอบรมมีน้อย ไม่ต้องการข้อมูลการฝึกอบรมมากนัก

ข้อจำกัดของตัวแยกประเภท Naive Bayes

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

เพื่อเอาชนะปัญหานี้คุณสามารถใช้ ต้นไม้แห่งการตัดสินใจป่าสุ่ม เครื่องจักรเวกเตอร์สนับสนุน (SVM) เครือข่ายประสาทเทียม ฯลฯ อัลกอริทึมเหล่านี้มีความสามารถในการเรียนรู้ความสัมพันธ์ที่ซับซ้อนและการพึ่งพากันระหว่างฟีเจอร์ในข้อมูล ดังนั้นจึงสามารถทำนายผลลัพธ์ที่แม่นยำยิ่งขึ้นได้

การประยุกต์ใช้ตัวแยกประเภท Naive Bayes

เนื่องจากอัลกอริทึมนี้รวดเร็วและมีประสิทธิภาพ คุณจึงสามารถใช้เพื่อคาดการณ์แบบเรียลไทม์ได้

การตรวจจับสแปม

บริการอีเมล (เช่น Gmail) ใช้อัลกอริทึมนี้เพื่อตรวจสอบว่าอีเมลเป็นสแปมหรือไม่ อัลกอริทึมนี้เหมาะอย่างยิ่งสำหรับการกรองสแปม

การวิเคราะห์ความเชื่อมั่น

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

การจัดประเภทเอกสาร

สามารถจัดหมวดหมู่เอกสารเป็นหมวดหมู่ เช่น กีฬา การเมือง เทคโนโลยี หรือการเงิน ตามความถี่หรือการมีอยู่ของคำหรือลักษณะเฉพาะภายในเอกสาร

ระบบผู้แนะนำ

สามารถวิเคราะห์การตั้งค่าของผู้ใช้ ข้อมูลประวัติ และฟีเจอร์รายการ เพื่อคาดการณ์ความสนใจหรือความชอบของผู้ใช้สำหรับการแนะนำผลิตภัณฑ์ ภาพยนตร์ หรือบทความ

อัลกอริธึมตัวแยกประเภทนี้ยังใช้ในการจดจำใบหน้า การพยากรณ์อากาศ การวินิจฉัยทางการแพทย์ การช็อปปิ้ง การจัดประเภทข่าวสาร ฯลฯ คุณสามารถใช้ Naive Bayes ใน Python- มีตัวแยกประเภท Naive Bayes sklearn เช่น sklearn.naive_bayes เป็นโมดูลที่ใช้อัลกอริทึมนี้

สรุป

อัลกอริทึม Naive Bayes ในการเรียนรู้ของเครื่องเป็นตัวจำแนกประเภทที่ใช้ส่วนใหญ่ในการตรวจจับสแปม การจำแนกประเภทข่าว การวิเคราะห์ความรู้สึก การพยากรณ์อากาศ การช้อปปิ้ง ฯลฯ อัลกอริทึม Naive Bayes มีพื้นฐานมาจากทฤษฎีบทของเบย์ส์ ขั้นตอนวิธี เป็นเรื่องง่ายและใช้งานง่าย เนื่องจากมันรวดเร็วเราจึงสามารถนำไปใช้ในแอปพลิเคชันแบบเรียลไทม์ได้ ข้อเสียที่ใหญ่ที่สุดคือถือว่ามีคุณสมบัติที่เป็นอิสระ (เนื่องจากคุณสมบัติที่เป็นอิสระนั้นแทบจะเป็นไปไม่ได้ในชีวิตจริง ดังนั้นจึงเรียกว่าไร้เดียงสา) โดยจะถือว่าแต่ละคุณลักษณะมีความเท่าเทียมกัน เพื่อเอาชนะข้อเสียเปรียบนี้ คุณสามารถใช้ตัวแยกประเภทอื่นๆ เช่น Decision Tree, Random Forest, Support Vector Machine (SVM) เป็นต้น