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

⚡ สรุปอย่างชาญฉลาด

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

  • 🔘 ความหมาย: ตัวจำแนกประเภทที่ติดป้ายกำกับระเบียนโดยการเปรียบเทียบความน่าจะเป็นภายหลังของคลาสที่เป็นไปได้ทั้งหมด
  • ☑️ ข้อสันนิษฐานที่ไร้เดียงสา: แต่ละคุณลักษณะถือว่ามีความเป็นอิสระต่อกันแบบมีเงื่อนไข ซึ่งในความเป็นจริงแล้วแทบจะไม่เป็นเช่นนั้น แต่ก็ยังสามารถทำนายได้อย่างแม่นยำ
  • สูตรของเบย์ส: P(A|B) เท่ากับ P(B|A) คูณด้วย P(A) หารด้วย P(B)
  • 🧪 ตัวอย่างการทำงาน: เมื่อรวมวันโปรโมชั่น ส่วนลด และบริการจัดส่งฟรีเข้าด้วยกัน โอกาสในการซื้อสินค้าจะสูงถึง 97.33 เปอร์เซ็นต์
  • 🛠️ มีสามรูปแบบ: การแจกแจงแบบพหุนามสำหรับการนับจำนวนคำ การแจกแจงแบบเบอร์นูลลีสำหรับการปรากฏของคำ และการแจกแจงแบบเกาส์เซียนสำหรับค่าต่อเนื่อง
  • ⚠️ ข้อ จำกัด : คุณลักษณะที่มีความสัมพันธ์กันจะถูกละเลย ดังนั้นต้นไม้ตัดสินใจหรือ SVM จึงเหมาะสมกับข้อมูลที่มีความสัมพันธ์กันมากกว่า

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

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

ตัวจำแนกประเภท (Classifier) ​​คืออัลกอริธึมการเรียนรู้ของเครื่อง (Machine Learning) ที่จัดเรียงข้อมูลออกเป็นหนึ่งหรือมากกว่าหนึ่งชุด "ประเภท" ตัวอย่างที่คุ้นเคยอย่างหนึ่งคือ ตัวจำแนกอีเมล ซึ่งจะสแกนข้อความขาเข้าทุกข้อความและติดป้ายกำกับประเภทเป็น สแปม หรือ ไม่ใช่สแปม

ตัวจำแนกแบบ Naive Bayes ในการเรียนรู้ของเครื่องจักรคือ การเรียนรู้ภายใต้การดูแล อัลกอริทึมที่ใช้สำหรับงานจำแนกประเภท

แผนภาพด้านล่างแสดงให้เห็นถึงกระบวนการไหลดังกล่าว

ตัวจำแนกแบบ Naive Bayes กำหนดป้ายกำกับคลาสให้กับระเบียนข้อมูลขาเข้า

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

เนื่องจากตัวจำแนกแบบ Naive Bayes นั้นอิงตามทฤษฎีบทของ Bayes จึงเรียกอีกอย่างว่าตัวจำแนกตามความน่าจะเป็น โดยจะทำนายผลโดยพิจารณาจากความน่าจะเป็นของแต่ละรายการ

ทำไมถึงเรียกว่า Naive Bayes?

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

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

ทฤษฎีบทเบย์สแบบง่าย

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

เพื่อทำความเข้าใจทฤษฎีบทของเบย์ส เรามาดูตัวอย่างการจำแนกแบบเบย์สอย่างง่ายๆ โดยการโยนเหรียญสองเหรียญกัน เราจะได้ปริภูมิเหตุการณ์เหล่านี้จากการโยนเหรียญสองเหรียญ: {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) คือความน่าจะเป็นภายหลังของเหตุการณ์ A ซึ่งก็คือความน่าจะเป็นของ A หลังจากพิจารณาหลักฐาน B แล้ว

ตัวอย่างการใช้งานตัวจำแนกแบบ Naive Bayes

วิธีที่เร็วที่สุดที่จะเห็นว่าสูตรนี้ทำงานอย่างไร คือลองคำนวณด้วยมือเอง

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

ชุด

ร้านตัวอย่างping ชุดข้อมูล 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 %

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

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

ประเภทของแบบจำลอง Naive Bayes

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

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

1. พหุนาม Naive Bayes

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

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

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

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

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

เส้นโค้งระฆังเกาส์เซียนถูกใช้เพื่อสร้างแบบจำลองคุณลักษณะต่อเนื่องใน Naive Bayes

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

สูตรความน่าจะเป็นแบบมีเงื่อนไขของ Gaussian Naive Bayes โดยใช้ค่าเฉลี่ยและความแปรปรวน

การขอ scikit เรียนรู้ ไลบรารีนี้เพิ่มตัวเลือกเพิ่มเติมอีกสองแบบ ได้แก่ Complement Naive Bayes สำหรับข้อความที่ไม่สมดุล และ Categorical Naive Bayes สำหรับหมวดหมู่ที่ไม่ต่อเนื่อง

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

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

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

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

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

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

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

เพื่อเอาชนะปัญหานี้คุณสามารถใช้ ต้นไม้แห่งการตัดสินใจ, Random Forests, Support Vector Machines (SVM) โครงข่ายประสาทเทียม เป็นต้น อัลกอริทึมเหล่านี้มีความสามารถในการเรียนรู้ความสัมพันธ์และการพึ่งพาที่ซับซ้อนระหว่างคุณลักษณะต่างๆ ในข้อมูล ดังนั้นจึงสามารถทำนายผลลัพธ์ได้แม่นยำยิ่งขึ้น

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

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

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

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

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

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

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

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

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

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

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

คำถามที่พบบ่อย

นำเข้าตัวเลือกที่คุณต้องการจาก sklearn.naive_bayesแบ่งข้อมูลด้วย train_test_split จากนั้นเรียก fit() บนแถวข้อมูลฝึกฝน และ predict() บนแถวข้อมูลทดสอบ GaussianNB เหมาะสำหรับคุณลักษณะต่อเนื่อง ในขณะที่ MultinomialNB และ BernoulliNB จัดการกับการนับข้อความและแฟล็กคำแบบไบนารี

หากหมวดหมู่ใดไม่เคยปรากฏร่วมกับคลาสใดในระหว่างการฝึกอบรม ความน่าจะเป็นแบบมีเงื่อนไขของหมวดหมู่นั้นจะกลายเป็นศูนย์และทำให้ผลลัพธ์ทั้งหมดหายไป การปรับเรียบแบบลาปลาซจะเพิ่มค่าหนึ่งให้กับทุกจำนวนนับ เพื่อไม่ให้ค่าใดๆ ลดลงเหลือศูนย์ ไลบรารี Scikit-learn แสดงค่านี้ในชื่อพารามิเตอร์อัลฟา

ไม่มีวิธีใดชนะขาดลอย แบบจำลอง Naive Bayes ฝึกฝนได้เร็วกว่า ต้องการข้อมูลน้อยกว่า และรับมือกับข้อความที่มีมิติสูงได้ดีกว่า ส่วนแบบจำลอง Logistic Regression จะจำลองคุณลักษณะที่มีความสัมพันธ์กัน และสร้างความน่าจะเป็นที่ปรับเทียบได้ดีกว่า ในชุดข้อมูลข้อความขนาดเล็ก Naive Bayes มักจะทำได้ดีกว่า แต่เมื่อมีข้อมูลมากขึ้น Logistic Regression ก็จะแซงหน้าไปได้

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

แปลงข้อความให้เป็นตัวพิมพ์เล็ก ลบเครื่องหมายวรรคตอน ลบคำที่ไม่สำคัญ และอาจทำการตัดคำรากศัพท์ จากนั้นแปลงแต่ละเอกสารให้เป็นจำนวนนับหรือเวกเตอร์ TF-IDF สำหรับวิธีการของเบอร์นูลลี ต้องการค่าบ่งชี้การปรากฏแบบไบนารีแทนจำนวนนับ ใช้ขั้นตอนเดียวกันทั้งในการฝึกฝนและการทำนาย

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

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

นักบิน GitHub โค้ดพื้นฐานจะถูกร่างอย่างรวดเร็วจากข้อความสั้นๆ เช่น การนำเข้าข้อมูล การแบ่งชุดข้อมูลสำหรับการฝึกและทดสอบ การเรียกใช้ฟังก์ชัน fit และ predict ควรตรวจสอบตัวเลือกที่โค้ดเลือกและโค้ดการประเมินผลเสมอ เพราะสคริปต์ที่ดูสมเหตุสมผลอาจยังฝึกโมเดลที่ไม่ถูกต้องได้

สรุปโพสต์นี้ด้วย: