ทำไมเราต้องใส่ลักษณนามเพื่อนบ้านที่ใกล้ที่สุด k-?


11

ดังที่ฉันเข้าใจ k-NN เป็นอัลกอริทึมสำหรับผู้เรียนที่ขี้เกียจและไม่จำเป็นต้องมีขั้นตอนการฝึกอบรม เหตุใดเราจึงต้องใช้.fit()กับ sklearn และจะเกิดอะไรขึ้นเมื่อเราใช้

คำตอบ:


9

ในระดับแนวคิด

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

ในระดับการใช้งาน

การประเมินลักษณนามของ KNN ในจุดข้อมูลใหม่นั้นต้องการการค้นหาเพื่อนบ้านที่ใกล้ที่สุดในชุดฝึกอบรมซึ่งอาจเป็นการทำงานที่มีราคาแพงเมื่อชุดฝึกอบรมมีขนาดใหญ่ ดังที่ RUser ได้กล่าวไว้มีเทคนิคต่าง ๆ เพื่อเพิ่มความเร็วในการค้นหาซึ่งโดยทั่วไปแล้วจะทำงานโดยการสร้างโครงสร้างข้อมูลต่าง ๆ ตามชุดการฝึกอบรม แนวคิดทั่วไปคืองานคอมพิวเตอร์บางอย่างที่จำเป็นในการจำแนกคะแนนใหม่นั้นเป็นเรื่องธรรมดาทั่วทั้งจุด ดังนั้นงานนี้สามารถทำได้ล่วงหน้าและนำไปใช้ใหม่แทนที่จะทำซ้ำสำหรับแต่ละอินสแตนซ์ใหม่ การใช้งาน knn โดยใช้เทคนิคเหล่านี้จะทำงานในระหว่างขั้นตอนการฝึกอบรม ตัวอย่างเช่น scikit-learn สามารถสร้าง kd-trees หรือ ball tree ระหว่างการเรียกไปยังfit()ฟังก์ชัน

การเลือกและการวัดระยะทางk

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


11

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

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

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


5

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

เพื่อให้สอดคล้องกับ API ของพวกเขา

เครื่องมือประมาณการของ sklearn ควรมีfitวิธีการหนึ่งที่ชอบอาร์เรย์หนึ่งหรือสองครั้ง (ขึ้นอยู่กับว่าเป็นตัวประมาณแบบมีผู้ดูแล / ไม่มีการดูแล) และรายละเอียดเฉพาะการนำไปใช้ ( ที่มา )

ดังนั้นแม้ว่าfitวิธีของ knn จะไม่ทำอะไรเลยอย่างแน่นอน แต่ก็น่าจะยังคงมีอยู่เพราะ knn เป็นผู้ประเมินและนักพัฒนาของ sklearn เช่นเดียวกับรหัสที่พวกเขามีส่วนร่วมคาดว่าตัวประมาณจะมีfitวิธีการ

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