Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม

Bisecting K-Means คืออะไร?


Bisecting K-Means Algorithm

Bisecting K-means algorithm เป็นการขยายง่ายๆ ของ K-means พื้นฐาน ขึ้นอยู่กับแนวคิดง่ายๆ: เพื่อได้ K clusters ให้แบ่งชุดจุดทั้งหมดเป็นสองกลุ่ม เลือกหนึ่งในสองกลุ่มมาแบ่งต่อ ไปเรื่อยๆ จนได้ K clusters

K-means algorithm รับพารามิเตอร์นำเข้า k และแบ่งชุด n objects เป็น k clusters ให้ intracluster similarity สูง แต่ intercluster similarity ต่ำ ความคล้ายคลึงของกลุ่มวัดจากค่าเฉลี่ยของวัตถุในกลุ่ม ซึ่งมองเป็น centroid หรือ center of gravity

ค่าเริ่มต้นสำหรับ means ถูกกำหนดแบบ arbitrary สุ่มหรืออาจใช้ค่าจาก k รายการแรก เกณฑ์การ收敛 (convergence) อาจอิง squared error แต่ไม่จำเป็น ตัวอย่างอัลกอริทึมกำหนดให้ clusters ต่างกัน วิธีหยุดอื่นๆ กำหนดจำนวน iterations คงที่ สูงสุด iterations อาจกำหนดเพื่อให้หยุดแม้ไม่收敛

อัลกอริทึม Bisecting K-Means

  • Initialize list of clusters ให้มี cluster เดียวที่มีทุกจุด
  • repeat
  • Remove a cluster จาก list of clusters
  • {ทำ "trial" bisections หลายครั้งของ cluster ที่เลือก}
  • for i = 1 to number of trials do
  • Bisect the chosen cluster โดยใช้ basic K-means
  • end for
  • เลือกสองกลุ่มจาก bisection ที่มี total SSE น้อยที่สุด
  • Insert สองกลุ่มนี้เข้า list of clusters
  • until list of clusters มี K clusters

มีหลายวิธีเลือก cluster ที่จะแบ่ง: เลือก cluster ใหญ่สุด, เลือกที่มี SSE ใหญ่สุด, หรือใช้เกณฑ์ผสมระหว่างขนาดและ SSE การเลือกต่างกันให้ clusters ต่างกัน

สามารถปรับปรุง clusters ที่ได้โดยใช้ centroids ของพวกเขาเป็น centroid เริ่มต้นสำหรับ basic K-means นี่สำคัญ เพราะแม้ K-means รับประกันหา clustering ที่เป็น local minimum ว่าด้วย SSE แต่ใน bisecting K-means ใช้ K-means "ท้องถิ่น" เพื่อแบ่ง single clusters ชุดกลุ่มสุดท้ายจึงไม่เป็น clustering ที่เป็น local minimum ว่าด้วย total SSE

สุดท้าย โดยบันทึก sequence of clusterings ที่ K-means สร้างขณะแบ่ง clusters สามารถใช้ bisecting K-means สร้าง hierarchical clustering ได้อีกด้วย