การหาค่า k ของ Kmeans ด้วยวิธี Elbow Method

จุดอ่อนของการทำ K-Mean Clustering คือ เราไม่รู้ว่าควรใช้ค่า k เท่าไร ถึงจะเหมาะสม ทำให้เป็นการยากที่จะใช้ การแบ่งกลุ่ม แบบนี้ วันนี้ลองมาดูวิธี Elbow ซึ่งในภาษาไทยก็คือ จุดข้อศอก หรือ จุดหักศอก นั่นเอง วิธี Elbow method คือวิธีการวัด Error ของผลรวมของระยะห่างระหว่าง Object กับ Centroid เรียกว่า ”Within-Cluster-Sum-of-Squares (WCSS)” โดยคำนวณจากค่า Inertia ซึ่งเป็นค่าผลรวมของระยะห่างจากทุกจุดไปยังจุดศูนย์กลางนั้น ๆ

รูปที่ 1: ค่า Inertia เมือ k=1,2,3….6

จากรูปที่ 1 แสดงค่า Inertiaในกรณี ต่างๆ เช่น

· k=1 ค่า Inertia ซึ่งเป็นค่าผลรวมของระยะห่างจากทุกจุดไปยังจุดศูนย์กลาง (จุดแดง) มีค่า 14267.98

· k=2 ค่า Inertia ซึ่งเป็นค่าผลรวมของระยะห่างจากทุกจุดไปยังจุดศูนย์กลาง (จุดแดง) ทั้งสองจุด จะมีค่าลดลงเป็น 6350.11

· k=3 ค่า Inertia ซึ่งเป็นค่าผลรวมของระยะห่างจากทุกจุดไปยังจุดศูนย์กลาง (จุดแดง) ทั้ง 3 จุด จะมีค่าลดลงเป็น 2106.08

· k=4 ค่า Inertia ซึ่งเป็นค่าผลรวมของระยะห่างจากทุกจุดไปยังจุดศูนย์กลาง (จุดแดง) ทั้ง 4 จุด จะมีค่าลดลงเป็น 916.10

· k=5 ค่า Inertia ซึ่งเป็นค่าผลรวมของระยะห่างจากทุกจุดไปยังจุดศูนย์กลาง (จุดแดง) ทั้ง 5 จุด จะมีค่าลดลงเป็น 187.61

จะเห็นได้ว่า หาก k เพิ่มขึ้น ค่า inertia จะลดลงอย่างรวดเร็ว

ค่า Within-Cluster-Sum-of-Squares (WCSS)

Within-Cluster-Sum-of-Squares (WCSS) คือ ผลรวมของระยะห่างระหว่าง Object กับ Centroid

ในการจัด Cluster แต่ละรอบ ค่านี้จะมีค่าลดลงเรื่อย ๆ จากจำนวน Cluster ที่เพิ่มขึ้น เพราะว่าสมาชิกในแต่ละ Cluster จะลงลดไปเรื่อย ๆ นั่นเอง ดังนั้นค่า WCSS จะทำให้เกิดความโค้งที่เรียบขึ้นเรื่อย ๆ ตามรูปข้างล่างน่าจะเห็นภาพมากกว่า

จะเห็นว่า Percent change จากจุดก่อนหน้า สูงสุด 48.19% จากนั้นจะเห็นว่า Percent change น้อยลงเรื่อยๆ เราจึงเลือก จุดนี้ นั่นคือ k=3

จากการใช้ elbow method เราจะได้ค่า k=3 หรือ 3 กลุ่มนั่นเอง

จากนี้ทำการเรียก Scikit-learn เพื่อทำ KMeans Clustering ดังภาพ

และ ทำการ plot กราฟ ด้วย scatter point ครับ

จะเห็นว่า วิธี elbow method สามารถช่วยให้เรา หาค่า k นั่นคือ จำนวนกลุ่มที่เหมาะสม กับ Kmeans ที่ดีที่สุดวิธีหนึ่งของ การทำ Kmeans Clustering ครับ

หมายเหตุ

ท่าน สามารถ ดาวน์โหลด source code ได้ที่ https://bit.ly/3mGkGix

--

--

รศ. ดร. เชฏฐเนติ ศรีสอ้าน
รศ. ดร. เชฏฐเนติ ศรีสอ้าน

Written by รศ. ดร. เชฏฐเนติ ศรีสอ้าน

รองอธิการบดีฝ่ายเทคโนโลยี มหาวิทยาลัยรังสิต

No responses yet