นี่คือการใช้ Python ของอัลกอริธึม k-means รวมถึงวิธีข้อศอกและวิธีการเงาสำหรับการเลือก K ที่เหมาะสมที่สุด
K-means เป็นอัลกอริธึมการจัดกลุ่มยอดนิยมที่ใช้สำหรับการแบ่งพาร์ติชันข้อมูลออกเป็น K คลัสเตอร์ ทำงานโดยกำหนดจุดข้อมูลแต่ละจุดซ้ำๆ ให้กับคลัสเตอร์เซนทรอยด์ที่ใกล้ที่สุด จากนั้นคำนวณเซนทรอยด์ของแต่ละคลัสเตอร์ใหม่ตามจุดข้อมูลที่กำหนด กระบวนการนี้ซ้ำแล้วซ้ำอีกจนกระทั่งมาบรรจบกัน
วัตถุประสงค์ของเคมีนคือการลดผลรวมของระยะทางยกกำลังสองระหว่างจุดข้อมูลแต่ละจุดและเซนทรอยด์ของคลัสเตอร์ที่กำหนด ฟังก์ชันวัตถุประสงค์สามารถเขียนได้ดังนี้: i-th
ภายในคลัสเตอร์ j
, μj
คือจุดเซนทรอยด์ของคลัสเตอร์ j
และ N
คือจำนวนจุดข้อมูลทั้งหมด
วิธี Elbow เป็นการวิเคราะห์พฤติกรรมที่ใช้ในการกำหนดจำนวนคลัสเตอร์ที่เหมาะสมที่สุดในการจัดกลุ่ม K-Means วิธีการนี้จะพล็อตผลรวมของระยะทางกำลังสองระหว่างการสังเกตแต่ละครั้งกับเซนทรอยด์ที่กำหนดให้เป็นฟังก์ชันของจำนวนกระจุกดาว จุด "ข้อศอก" บนแผนระบุจำนวนกระจุกที่การเพิ่มกระจุกเพิ่มเติมไม่ส่งผลให้ผลรวมของระยะทางยกกำลังสองลดลงอย่างมีนัยสำคัญ
วิธี Elbow สามารถสรุปได้ตามขั้นตอนต่อไปนี้:
วิธี Silhouette เป็นอีกหนึ่งการศึกษาพฤติกรรมที่ใช้ในการกำหนดจำนวนคลัสเตอร์ที่เหมาะสมที่สุดในการจัดกลุ่ม K-Means วิธีการนี้จะวัดคุณภาพของการกำหนดคลัสเตอร์ของการสังเกตแต่ละครั้งโดยการคำนวณค่าสัมประสิทธิ์ภาพเงาของมัน ค่าสัมประสิทธิ์ภาพเงาอยู่ในช่วงตั้งแต่ -1 ถึง 1 โดยที่ค่า 1 บ่งชี้ว่าการสังเกตมีการรวมกลุ่มกันเป็นอย่างดี และค่า -1 บ่งชี้ว่าการสังเกตมีการจัดประเภทไม่ถูกต้อง สูตรในการคำนวณค่าสัมประสิทธิ์ภาพเงาของจุดข้อมูล i
คือ: a(i)
คือระยะห่างเฉลี่ยระหว่าง i
และจุดข้อมูลอื่นๆ ทั้งหมดในคลัสเตอร์ และ b(i)
คือระยะห่างเฉลี่ยขั้นต่ำระหว่าง i
และคลัสเตอร์อื่นๆ ทั้งหมด (กล่าวคือ คลัสเตอร์ที่มีเซนทรอยด์ถัดไปที่ใกล้ที่สุด) ค่าสัมประสิทธิ์ภาพเงาสำหรับการจัดกลุ่มทั้งหมดคือค่าเฉลี่ยของค่าสัมประสิทธิ์ภาพเงาสำหรับจุดข้อมูลทั้งหมด
วิธีการ Silhouette สามารถสรุปได้ตามขั้นตอนต่อไปนี้: