วิธีใช้วิธี elbow ใน r เพื่อค้นหาคลัสเตอร์ที่เหมาะสมที่สุด
หนึ่งในอัลกอริธึมการจัดกลุ่มที่ใช้กันมากที่สุดใน การเรียนรู้ของเครื่อง เรียกว่า การจัดกลุ่มแบบเคมีน
การจัดกลุ่มแบบเคมีนเป็นเทคนิคที่เราวางแต่ละการสังเกตจากชุดข้อมูลลงในคลัสเตอร์ K กลุ่มใดกลุ่มหนึ่ง
เป้าหมายสุดท้ายคือการมีกระจุกดาว K ซึ่งการสังเกตภายในแต่ละกระจุกจะค่อนข้างคล้ายกัน ในขณะที่การสังเกตในกลุ่มต่าง ๆ จะค่อนข้างแตกต่างกัน
เมื่อทำการจัดกลุ่มแบบเคมีน ขั้นตอนแรกคือการเลือกค่าสำหรับ K ซึ่งเป็นจำนวนคลัสเตอร์ที่เราต้องการใส่การสังเกตลงไป
วิธีหนึ่งที่พบบ่อยที่สุดในการเลือกค่าสำหรับ K เรียกว่า วิธีข้อศอก ซึ่งเกี่ยวข้องกับการสร้างพล็อตด้วยจำนวนกลุ่มบนแกน x และผลรวมเป็นผลรวมของกำลังสองบนแกน y จากนั้นระบุ โดยที่ “เข่า” หรือการเลี้ยวปรากฏในโครงเรื่อง
จุดบนแกน x ที่ “หัวเข่า” เกิดขึ้นบอกเราถึงจำนวนคลัสเตอร์ที่เหมาะสมที่สุดที่จะใช้ในอัลกอริทึมการจัดกลุ่มแบบเคมีน
ตัวอย่างต่อไปนี้แสดงวิธีการใช้วิธีข้อศอกใน R
ตัวอย่าง: การใช้วิธี Elbow ใน R
สำหรับตัวอย่างนี้ เราจะใช้ชุดข้อมูล USArrests ที่สร้างไว้ใน R ซึ่งมีจำนวนการจับกุมต่อผู้คน 100,000 คนในแต่ละรัฐของสหรัฐอเมริกาในปี 1973 ในข้อหาฆาตกรรม การทำร้ายร่างกาย และการข่มขืน รวมถึงเปอร์เซ็นต์ของประชากรแต่ละรัฐที่อาศัยอยู่ในเมือง พื้นที่ ,เออร์เบินป็อป.
รหัสต่อไปนี้แสดงวิธีการโหลดชุดข้อมูล ลบแถวที่มีค่าที่ขาดหายไป และปรับขนาดตัวแปรแต่ละตัวในชุดข้อมูลให้มีค่าเฉลี่ยเป็น 0 และค่าเบี่ยงเบนมาตรฐานเป็น 1:
#load data df <-USArrests #remove rows with missing values df <- na. omitted (df) #scale each variable to have a mean of 0 and sd of 1 df <- scale(df) #view first six rows of dataset head(df) Murder Assault UrbanPop Rape Alabama 1.24256408 0.7828393 -0.5209066 -0.003416473 Alaska 0.50786248 1.1068225 -1.2117642 2.484202941 Arizona 0.07163341 1.4788032 0.9989801 1.042878388 Arkansas 0.23234938 0.2308680 -1.0735927 -0.184916602 California 0.27826823 1.2628144 1.7589234 2.067820292 Colorado 0.02571456 0.3988593 0.8608085 1.864967207
ในการค้นหาจำนวนคลัสเตอร์ที่เหมาะสมที่สุดที่จะใช้ในอัลกอริธึมเคมีน เราจะใช้ฟังก์ชัน fviz_nbclust() จากแพ็คเกจ factoextra เพื่อสร้างพล็อตของจำนวนคลัสเตอร์เทียบกับผลรวมในผลรวมของกำลังสอง:
library (cluster) library (factoextra) #create plot of number of clusters vs total within sum of squares fviz_nbclust(df, kmeans, method = “ wss ”)
ในกราฟนี้ปรากฏว่ามี “เข่า” หรือหงิกงอที่ k = 4 กลุ่ม นี่คือจุดที่ผลรวมของผลรวมของกำลังสองเริ่มคงที่
สิ่งนี้บอกเราว่าจำนวนคลัสเตอร์ที่เหมาะสมที่สุดที่จะใช้ในอัลกอริทึมเคมีนคือ 4
หมายเหตุ : แม้ว่าเราอาจได้รับผลรวมของกำลังสองที่น้อยลงจากการใช้คลัสเตอร์มากขึ้น แต่เรา มีแนวโน้มว่าข้อมูลการฝึกจะพอดีเกินไป และด้วยเหตุนี้อัลกอริทึมเคมีนจึงไม่สามารถทำงานได้ดีกับข้อมูลทดสอบ
เราสามารถใช้ฟังก์ชัน kmeans() จากแพ็คเกจ คลัสเตอร์ เพื่อดำเนินการจัดกลุ่มแบบเคมีนบนชุดข้อมูลโดยใช้ค่าที่เหมาะสมที่สุดสำหรับ k จาก 4:
#make this example reproducible set. seeds (1) #perform k-means clustering with k = 4 clusters km <- kmeans(df, centers = 4, nstart = 25) #view results km K-means clustering with 4 clusters of sizes 16, 13, 13, 8 Cluster means: Murder Assault UrbanPop Rape 1 -0.4894375 -0.3826001 0.5758298 -0.26165379 2 -0.9615407 -1.1066010 -0.9301069 -0.96676331 3 0.6950701 1.0394414 0.7226370 1.27693964 4 1.4118898 0.8743346 -0.8145211 0.01927104 Vector clustering: Alabama Alaska Arizona Arkansas California Colorado 4 3 3 4 3 3 Connecticut Delaware Florida Georgia Hawaii Idaho 1 1 3 4 1 2 Illinois Indiana Iowa Kansas Kentucky Louisiana 3 1 2 1 2 4 Maine Maryland Massachusetts Michigan Minnesota Mississippi 2 3 1 3 2 4 Missouri Montana Nebraska Nevada New Hampshire New Jersey 3 2 2 3 2 1 New Mexico New York North Carolina North Dakota Ohio Oklahoma 3 3 4 2 1 1 Oregon Pennsylvania Rhode Island South Carolina South Dakota Tennessee 1 1 1 4 2 4 Texas Utah Vermont Virginia Washington West Virginia 3 1 2 1 1 2 Wisconsin Wyoming 2 1 Within cluster sum of squares by cluster: [1] 16.212213 11.952463 19.922437 8.316061 (between_SS / total_SS = 71.2%) Available components: [1] "cluster" "centers" "totss" "withinss" "tot.withinss" "betweenss" [7] "size" "iter" "ifault"
จากผลลัพธ์เราจะเห็นได้ว่า:
- 16 รัฐถูกกำหนดให้กับคลัสเตอร์แรก
- 13 สถานะได้รับการกำหนดให้กับคลัสเตอร์ที่สอง
- 13 รัฐถูกกำหนดให้กับคลัสเตอร์ที่สาม
- 8 สถานะถูกกำหนดให้กับคลัสเตอร์ที่สี่
นอกจากนี้เรายังสามารถเพิ่มการกำหนดคลัสเตอร์ของแต่ละสถานะให้กับชุดข้อมูลดั้งเดิมได้:
#add cluster assignment to original data
final_data <- cbind(USArrests, cluster = km$cluster)
#view final data
head(final_data)
Murder Assault UrbanPop Rape cluster
Alabama 13.2 236 58 21.2 4
Alaska 10.0 263 48 44.5 2
Arizona 8.1 294 80 31.0 2
Arkansas 8.8 190 50 19.5 4
California 9.0 276 91 40.6 2
Colorado 7.9 204 78 38.7 2
การสังเกตแต่ละครั้งจากฐานข้อมูลดั้งเดิมถูกจัดเป็นหนึ่งในสี่กลุ่ม
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้ให้ตัวอย่างทีละขั้นตอนเกี่ยวกับวิธีการเรียกใช้อัลกอริธึมการทำคลัสเตอร์ต่างๆ ใน R:
การจัดกลุ่ม K-Means ใน R: ตัวอย่างทีละขั้นตอน
การจัดกลุ่ม K-Medoids ใน R: ตัวอย่างทีละขั้นตอน
การจัดกลุ่มตามลำดับชั้นใน R: ตัวอย่างทีละขั้นตอน