การจัดการกับความสัมพันธ์น้ำหนักและการลงคะแนนเสียงใน kNN


14

ฉันกำลังเขียนโปรแกรมอัลกอริทึม kNN และต้องการทราบต่อไปนี้:

ผูกแบ่ง:

  1. จะเกิดอะไรขึ้นหากไม่มีผู้ชนะอย่างชัดเจนในการลงคะแนนเสียงข้างมาก เช่นเพื่อนบ้านที่ใกล้ที่สุดทั้งหมดมาจากคลาสที่ต่างกันหรือสำหรับ k = 4 มี 2 เพื่อนบ้านจากคลาส A และ 2 เพื่อนบ้านจากคลาส B ใช่หรือไม่
  2. จะเกิดอะไรขึ้นหากไม่สามารถระบุเพื่อนบ้านที่ใกล้ที่สุดได้อย่างแน่นอนเพราะมีเพื่อนบ้านที่มีระยะทางเท่ากัน? เช่นสำหรับรายการของระยะทาง(x1;2), (x2;3.5), (x3;4.8), (x4;4.8), (x5;4.8), (x6;9.2)มันเป็นไปไม่ได้ที่จะกำหนด k = 3 หรือ k = 4 เพื่อนบ้านที่ใกล้ที่สุดเพราะเพื่อนบ้านที่ 3 ถึงที่ 5 มีระยะห่างเท่ากัน

น้ำหนัก:

  1. ฉันอ่านว่าเป็นการดีที่จะยกน้ำหนักเพื่อนบ้านที่ใกล้ที่สุด k- ก่อนที่จะเลือกชั้นเรียนที่ชนะ มันทำงานอย่างไร คือน้ำหนักของเพื่อนบ้านเป็นอย่างไรและชั้นเรียนจะถูกกำหนดอย่างไร?

ทางเลือกโหวตเสียงข้างมาก:

  1. มีกฎ / กลยุทธ์อื่น ๆ ในการพิจารณาระดับที่ชนะนอกเหนือจากการลงคะแนนเสียงข้างมากหรือไม่?

คำตอบ:


7

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


11
ทำไมการมัดเป็นไปไม่ได้เมื่อ k = 1 จะเกิดอะไรขึ้นถ้ามีสองเพื่อนบ้านอยู่ในชั้นเรียนที่แตกต่างกันด้วยระยะทางเดียวกันคุณจะกำหนดเพื่อนบ้านที่ใกล้ที่สุดด้วย k = 1 ได้อย่างไร
j5shi

6

เมื่อทำ kNN คุณจำเป็นต้องคำนึงถึงสิ่งหนึ่งนั่นคือมันไม่ใช่อัลกอริธึมที่ได้รับมาอย่างเคร่งครัด แต่เป็นตัวจําแนก / รีจีสเตอร์แบบง่ายโดยใช้สัญชาตญาณเดียว - ฟังก์ชันพื้นฐานไม่เปลี่ยนแปลงมากนักเมื่ออาร์กิวเมนต์ไม่เปลี่ยนแปลง มาก. หรือในคำอื่น ๆ ฟังก์ชั่นพื้นฐานคือในท้องถิ่นใกล้คง ด้วยสมมติฐานนี้คุณสามารถประเมินค่าของฟังก์ชันพื้นฐานในจุดใด ๆ ที่กำหนดโดยค่าเฉลี่ย (อาจถ่วงน้ำหนัก) ของค่าของคะแนน k ที่ใกล้ที่สุด

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

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

1||xy||2

นอกจากนี้ยังมีบทความดี ๆ จาก Samory Kpotufe และ Abdeslam Boularias ในปีนี้เมื่อ NIPS ได้สัมผัสถึงปัญหาในการหาน้ำหนักที่เหมาะสม สัญชาตญาณทั่วไปของพวกเขาคือว่าฟังก์ชั่นพื้นฐานแตกต่างกันไปในทิศทางที่แตกต่างกัน (เช่นอนุพันธ์บางส่วนที่แตกต่างกันมีขนาดแตกต่างกัน) ดังนั้นจึงควรที่จะเปลี่ยนการวัด / น้ำหนักตามสัญชาตญาณ พวกเขาอ้างว่าเคล็ดลับนี้ช่วยปรับปรุงประสิทธิภาพของ kNN และการถดถอยของเคอร์เนลและฉันคิดว่าพวกเขามีผลลัพธ์ทางทฤษฎีบางอย่างในการสำรองข้อมูลการอ้างสิทธิ์นี้ (แม้ว่าฉันไม่แน่ใจว่าผลลัพธ์ทางทฤษฎีเหล่านั้นอ้างจริง ๆ แล้วฉันไม่มีเวลาไป ผ่านกระดาษทั้งหมด) สามารถดาวน์โหลดกระดาษได้ฟรีจากเว็บไซต์ของพวกเขาหรือหลังจาก "น้ำหนักการไล่ระดับสีของ Google ช่วยแก้ปัญหา Nonparametric Regressors" ของ Google

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

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

ดูรายละเอียดได้จากบทความ "การเพิ่มประสิทธิภาพเบย์เซียนเชิงปฏิบัติของอัลกอริธึมการเรียนรู้ด้วยเครื่อง" โดย Jasper Snoek, Hugo Larochelle และ Ryan P Adams (สามารถพบได้ทั้งในเว็บไซต์หรือผ่านทาง Google)


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

หมายเหตุอย่างย่อหนึ่งว่า "an k k" ไม่จำเป็นต้องแก้ปัญหาเสมอ ... เช่น k = 3 เมื่อจำแนกสามกลุ่ม นอกจากนั้นฉันเห็นด้วย คำอธิบายที่ดี
Pyll

1

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

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


0

วิธีหนึ่งที่เป็นไปได้คือให้อัลกอริทึมเพิ่มหรือลดค่า k โดยอัตโนมัติจนกว่าคุณจะได้ผู้ชนะที่ชัดเจน

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