2.5.2
k-means++
สรุป
- k-means++ เลือกเซนทรอยด์เริ่มต้นให้กระจายตัวมากขึ้น ทำให้ k-means ไม่ติดจุดเฉพาะที่ง่าย
- เซนทรอยด์ใหม่ถูกสุ่มโดยให้น้ำหนักตามระยะกำลังสองจากเซนทรอยด์ที่มีอยู่ จุดที่ไกลกว่าจะถูกเลือกมากกว่า
- ใน
scikit-learnเพียงตั้งinit="k-means++"ก็ได้ผลลัพธ์ทันที สามารถเปรียบเทียบกับการเริ่มแบบสุ่มได้ง่าย - สำหรับข้อมูลชุดใหญ่ การประมวลผลแบบ online เช่น mini-batch k-means ก็ใช้แนวคิด k-means++ เป็นฐาน
สัญชาตญาณ #
การเข้าใจวิธีนี้ควรดูสมมติฐานของโมเดล ลักษณะข้อมูล และผลของการตั้งค่าพารามิเตอร์ต่อการทั่วไปของโมเดล