เคยสงสัยบ้างไหมว่าอัลกอริทึม K-NN คืออะไร? ถ้าเป็นเช่นนั้น ให้อ่านต่อเพื่อหาคำตอบ!

ก่อนอื่น เรามาดูอัลกอริธึมการเรียนรู้ของเครื่องสองประเภทในการเรียนรู้ของเครื่องกันก่อน:

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

ภาพรวมพื้นฐานของอัลกอริธึม K-Nearest Neighbours

อัลกอริธึม K-Nearest Neighbors ถือเป็นหนึ่งในอัลกอริธึม Machine Learning ที่ง่ายที่สุดซึ่งอยู่ในหมวดหมู่อัลกอริธึมภายใต้การดูแล

อัลกอริธึม K-Nearest Neighbours ทำงานบนสมมติฐานพื้นฐานที่ว่ามีสิ่งที่คล้ายกันอย่างใกล้ชิดอยู่ใกล้กันมากกว่าสิ่งที่แตกต่างกันมากกว่า ด้วยสมมติฐานเบื้องต้นนี้ อัลกอริธึม K-NN จะวางข้อมูลที่มองไม่เห็นใหม่ลงในหมวดหมู่ที่คล้ายกับหมวดหมู่ที่มีอยู่มากที่สุด

อัลกอริธึม K-NN ถือเป็นอัลกอริธึมประเภท "การเรียนรู้แบบขี้เกียจ" เนื่องจากไม่ได้เรียนรู้จากข้อมูลการฝึกอบรมที่ได้รับมอบหมายในทันที แต่จะเก็บข้อมูลการฝึกอบรมเท่านั้น และในเวลาที่ต้องการจัดประเภทข้อมูลที่ใหม่และข้อมูลที่มองไม่เห็น จะจัดข้อมูลนั้นไว้ในหมวดหมู่ที่คล้ายกับข้อมูลใหม่มากที่สุด

อัลกอริธึม K-NN รู้จักกันในชื่อลักษณนามเฉพาะกิจที่ใช้ในการจำแนกข้อมูลการทดสอบตามการวัดระยะทาง (เช่นยุคลิด, เชบีเชฟ, โคไซน์ ฯลฯ )

อัลกอริธึม K-NN สามารถใช้กับหมวดหมู่การเรียนรู้ของเครื่องภายใต้การดูแลทั้งสองประเภท: การถดถอยและการจัดหมวดหมู่ แม้จะมีความยืดหยุ่นนี้ แต่ส่วนใหญ่จะใช้สำหรับปัญหาการจำแนก ML

ต่อไปนี้เป็นข้อดีและข้อเสียของอัลกอริธึม K-Nearest Neighbours:

ข้อดี:

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

จุดด้อย:

  • ต้องคำนวณค่า K ก่อนทำการคาดการณ์เสมอ สิ่งนี้อาจค่อนข้างน่าเบื่อและซับซ้อนในบางครั้ง
  • เนื่องจากต้องคำนวณระยะห่างระหว่างจุดข้อมูลชุดการฝึกทั้งหมดซึ่งสัมพันธ์กัน ดังนั้น "ต้นทุนการคำนวณ" จึงอาจค่อนข้างสูงในบางครั้ง

โฟลว์พื้นฐานของ KNN

รายการขั้นตอนต่อไปนี้ให้ภาพรวมทั่วไปเกี่ยวกับวิธีการทำงานของอัลกอริทึม KNN:

  1. โหลดและแยกข้อมูลออกเป็นชุดรถไฟและชุดทดสอบ
  2. เลือกค่าสำหรับ K ค้นหาส่วนด้านล่างเพื่อดูคำอธิบายเชิงลึกเพิ่มเติมเกี่ยวกับวิธีการดังกล่าว
  3. ในการสร้างการคาดการณ์ ให้ทำตามขั้นตอนต่อไปนี้สำหรับการวนซ้ำทั้งหมดตั้งแต่ 1 ถึงจำนวนจุดข้อมูลการฝึกทั้งหมด:
  4. ขั้นแรก ให้คำนวณระยะห่างระหว่างข้อมูลการทดสอบและข้อมูลการฝึกแต่ละแถว การวัดระยะทางที่จะใช้อาจเป็นค่าใดค่าหนึ่งต่อไปนี้: Euclidean, Chebyshev, Cosine, Manhattan, Minkowski, Jaccard ฯลฯ
  5. จัดเรียงระยะทางที่คำนวณได้ตามลำดับจากน้อยไปมากตามค่าระยะทาง
  6. รับจำนวนแถวเท่ากับค่า k จากด้านบนของอาร์เรย์ที่เรียงลำดับ ตัวอย่าง: ถ้า k = 4 จะได้ 4 แถวบนสุดจากอาร์เรย์ที่เรียงลำดับแล้ว
  7. รับหมวดหมู่ที่พบบ่อยที่สุดของแถวที่เลือกในขั้นตอนที่ 3
  8. คืนหมวดหมู่ที่พบบ่อยที่สุดเป็นหมวดหมู่ที่คาดการณ์ไว้สำหรับจุดข้อมูลการฝึกอบรมปัจจุบัน

การเลือกค่าสำหรับ K

ค่า K ในอัลกอริทึม K-NN ระบุจำนวนเพื่อนบ้านที่ใกล้ที่สุด

ค่า K ควรเป็นตัวเลขที่ไม่เล็กและไม่ใหญ่เกินไปอย่างเหมาะสม การเลือกค่า K ที่น้อยเกินไปทำให้เกิดขอบเขตการตัดสินใจที่ไม่แน่นอนและปัญหา "การโอเวอร์ฟิต" ขณะเดียวกัน การมีค่า k สูงเกินไปอาจทำให้เกิดปัญหา "underfitting" ได้ สิ่งสำคัญที่ควรทราบคือค่า k ไม่ใช่แบบอิงพารามิเตอร์ หมายความว่าค่านี้ไม่ต้องอาศัยสมมติฐานใดๆ เกี่ยวกับรูปร่างหรือพารามิเตอร์ของชุดข้อมูลที่ใช้ดึงข้อมูลการฝึก

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

หรือคุณสามารถใช้กฎทั่วไปในการเลือกค่า k ที่ดีที่สุดโดยใช้สูตรต่อไปนี้:

k = sqrt(N)/2

โดยที่ N หมายถึงจำนวนแถวในชุดการฝึก
นอกจากนี้ยังอาจช่วยรักษาค่า k ให้เป็นเลขคี่ เพื่อไม่ให้เกิดสถานการณ์ทางตัน/เสมอกันอันเกิดจากการเลือกคลาส/หมวดหมู่

บทสรุป

ขอบคุณที่อ่านโพสต์บล็อกนี้!

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

หากคุณพบว่าบทความนี้มีประโยชน์ โปรดแชร์และอย่าลืมติดตามฉันบน Twitter และ GitHub ติดต่อกับฉันบน LinkedIn และสมัครรับข้อมูล "ช่อง YouTube" ของฉัน