อัลกอริทึม Naive Bayes ในการเรียนรู้ของเครื่อง
อัลกอริทึมลักษณนาม Naive Bayes
ตัวจำแนกประเภทคืออัลกอริทึมการเรียนรู้ของเครื่องที่จัดหมวดหมู่ข้อมูลเป็นหนึ่งหรือหลายรายการจากชุด "คลาส" ตัวจำแนกอีเมลเป็นตัวอย่างหนึ่งของตัวจำแนกที่สแกนอีเมลเพื่อกรองอีเมลตามป้ายคลาส: สแปมหรือไม่ใช่สแปม
Naive Bayes Classifier ในแมชชีนเลิร์นนิงเป็นแมชชีนเลิร์นนิงที่ได้รับการดูแลสำหรับงานจำแนกประเภท
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 แถวสำหรับตัวอย่างนี้
ชุด
ปัญหาคือการคาดเดาว่าบุคคลจะซื้อผลิตภัณฑ์โดยใช้วัน ส่วนลด และการจัดส่งฟรีโดยใช้ทฤษฎีบท Naive Bayes หรือไม่
ขั้นตอน 1) เราจะสร้างตารางความถี่สำหรับแต่ละแอตทริบิวต์โดยใช้ประเภทอินพุตที่กล่าวถึงในชุดข้อมูล เช่น วัน ส่วนลด และการจัดส่งฟรี
ปล่อยให้เหตุการณ์ 'ซื้อ' แสดงเป็น 'A' และตัวแปรอิสระ ได้แก่ 'ส่วนลด' 'จัดส่งฟรี' และ 'วัน' แสดงเป็น 'B' เราจะใช้เหตุการณ์และตัวแปรเหล่านี้เพื่อใช้ทฤษฎีบทของเบย์
ขั้นตอน 2) ตอนนี้ให้เราคำนวณตารางความน่าจะเป็นทีละรายการ
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) ในทำนองเดียวกัน เราสามารถคำนวณความน่าจะเป็นที่เหตุการณ์จะเกิดขึ้นโดยพิจารณาจากตัวแปรทั้งสามตัว ตอนนี้เราจะคำนวณตารางความน่าจะเป็นสำหรับตัวแปรทั้งสามโดยใช้ตารางความถี่ข้างต้น
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) เป็นต้น