วิธี K-Means Elbow และการวิเคราะห์ Silhouette ด้วย Yellowbrick และ Scikit-Learn PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

วิธี K-Means Elbow และการวิเคราะห์ Silhouette ด้วย Yellowbrick และ Scikit-Learn

บทนำ

K-Means เป็นหนึ่งในอัลกอริธึมการจัดกลุ่มที่ได้รับความนิยมมากที่สุด การมีจุดศูนย์กลางไปยังคลัสเตอร์ จะจัดกลุ่มจุดอื่นๆ ตามระยะห่างของจุดศูนย์กลางนั้น

ข้อเสียของ K-Means คือต้องเลือกจำนวนคลัสเตอร์ Kก่อนรันอัลกอริทึมที่จัดกลุ่มชี้

หากคุณต้องการอ่านคำแนะนำเชิงลึกเกี่ยวกับ K-Means Clustering โปรดดูที่ “การจัดกลุ่ม K-Means กับ Scikit-Learn”.

การวิเคราะห์วิธีข้อศอกและเงา

เทคนิคที่ใช้บ่อยที่สุดในการเลือกจำนวน Ks คือ วิธีข้อศอก และ การวิเคราะห์เงา.

เพื่ออำนวยความสะดวกในการเลือก Ks, the อิฐเหลือง ไลบรารีปิดโค้ดด้วย for loops และพล็อตที่เรามักจะเขียนเป็นโค้ด 4 บรรทัด

ในการติดตั้ง Yellowbrick โดยตรงจากโน้ตบุ๊ก Jupyter ให้เรียกใช้:

! pip install yellowbrick

มาดูกันว่ามันทำงานอย่างไรสำหรับชุดข้อมูลที่คุ้นเคยซึ่งเป็นส่วนหนึ่งของ Scikit-learn แล้ว the ม่านตา ชุดข้อมูล

ขั้นตอนแรกคือการนำเข้าชุดข้อมูล KMeans และ yellowbrick ห้องสมุดและโหลดข้อมูล:

from sklearn.datasets import load_iris
from sklearn.cluster import KMeans
from yellowbrick.cluster import KElbowVisualizer, SilhouetteVisualizer

iris = load_iris()

แจ้งให้ทราบที่นี่เรานำเข้า KElbowVisualizer และ SilhouetteVisualizer ราคาเริ่มต้นที่ yellowbrick.clusterนี่คือโมดูลที่เราจะใช้เพื่อแสดงผลลัพธ์ของ Elbow และ Silhouette!

หลังจากโหลดชุดข้อมูลแล้ว ใน data คีย์ของพวง (ชนิดข้อมูลที่เป็นส่วนขยายของพจนานุกรม) คือค่าของจุดที่เราต้องการจัดกลุ่ม อยากรู้ว่าตัวเลขแทนอะไร ดูที่ iris['feature_names'].

เป็นที่ทราบกันดีอยู่แล้วว่าชุดข้อมูล Iris ประกอบด้วยม่านตาสามประเภท: 'versicolor', 'virginica' และ 'setosa' นอกจากนี้คุณยังสามารถตรวจสอบชั้นเรียนใน iris['target_names'] เพื่อยืนยัน

ดังนั้นเราจึงมีคุณลักษณะ 4 ประการสำหรับคลัสเตอร์และควรแยกออกเป็น 3 คลัสเตอร์ที่แตกต่างกันตามที่เราทราบอยู่แล้ว ลองดูว่าผลลัพธ์ของเราด้วยวิธี Elbow Method และ Silhouette Analysis จะยืนยันได้หรือไม่

ขั้นแรก เราจะเลือกค่าคุณสมบัติ:

print(iris['feature_names']) 
print(iris['target_names']) 

X = iris['data']

จากนั้น เราก็สร้าง KMeans แบบจำลอง KElbowVisualizer() ซึ่งจะได้รับโมเดลนั้นพร้อมกับจำนวน ks ที่จะคำนวณเมทริก ในกรณีนี้จาก เพื่อ 2 11 เค.

หลังจากนั้นเราปรับ visualizer กับข้อมูลโดยใช้ fit() และแสดงพล็อตด้วย show(). หากไม่ได้ระบุเมตริก Visualizer จะใช้ การบิดเบือน metric ซึ่งคำนวณผลรวมของระยะทางกำลังสองจากแต่ละจุดไปยังจุดศูนย์กลางที่กำหนด:

model = KMeans(random_state=42)

elb_visualizer = KElbowVisualizer(model, k=(2,11))
elb_visualizer.fit(X)    
elb_visualizer.show()  

ตอนนี้เรามี .แล้ว ศอกคะแนนบิดเบี้ยวสำหรับ KMeans Clustering พล็อตที่มีเครื่องหมายเส้นแนวตั้งซึ่งจะเป็นจำนวน ks ที่ดีที่สุด ในกรณีนี้ 4.

ดูเหมือนว่า Elbow Method ที่มีตัววัดการบิดเบือนจะไม่ใช่ตัวเลือกที่ดีที่สุดหากเราไม่ทราบจำนวนจริงของคลัสเตอร์ Silhouette จะระบุด้วยว่ามี 4 กลุ่มหรือไม่? ในการตอบคำถามนั้น เราแค่ต้องทำซ้ำโค้ดสุดท้ายกับโมเดลที่มี 4 คลัสเตอร์และอ็อบเจกต์ visualizer อื่น:

model_4clust = KMeans(n_clusters = 4, random_state=42)

sil_visualizer = SilhouetteVisualizer(model_4clust)
sil_visualizer.fit(X)    
sil_visualizer.show()

คะแนนเงาสำหรับ k หมายถึงคลัสเตอร์โดยใช้วิธีข้อศอก

รหัสแสดง a พล็อต Silhouette ของการจัดกลุ่ม KMeans สำหรับ 150 ตัวอย่างใน 4 ศูนย์. ในการวิเคราะห์คลัสเตอร์นี้ เราต้องดูที่ค่าสัมประสิทธิ์ภาพเงา (หรือคะแนน) ค่าที่ดีที่สุดคือใกล้กับ 1 ค่าเฉลี่ยที่เรามีคือ 0.5ทำเครื่องหมายด้วยเส้นแนวตั้งและไม่ค่อยดีนัก

เราต้องดูการกระจายตัวระหว่างคลัสเตอร์ด้วย - พล็อตที่ดีมีขนาดใกล้เคียงกันของพื้นที่คลัสเตอร์หรือจุดที่มีการกระจายอย่างดี ในกราฟนี้มีกลุ่มที่เล็กกว่า 3 กลุ่ม (หมายเลข 3, 2, 1) และกลุ่มที่ใหญ่กว่าหนึ่งกลุ่ม (หมายเลข 0) ซึ่งไม่ใช่ผลลัพธ์ที่เราคาดหวัง

ดูคู่มือเชิงปฏิบัติสำหรับการเรียนรู้ Git ที่มีแนวทางปฏิบัติที่ดีที่สุด มาตรฐานที่ยอมรับในอุตสาหกรรม และเอกสารสรุปรวม หยุดคำสั่ง Googling Git และจริงๆ แล้ว เรียน มัน!

ลองทำพล็อตเดียวกันซ้ำสำหรับ 3 กลุ่มเพื่อดูว่าเกิดอะไรขึ้น:

model_3clust = KMeans(n_clusters = 3, random_state=42)

sil_visualizer = SilhouetteVisualizer(model_3clust)
sil_visualizer.fit(X)    
sil_visualizer.show()

ภาพเงาสำหรับกลุ่ม kmeans

โดยการเปลี่ยนจำนวนกลุ่ม ได้คะแนนเงา 0.05 สูงขึ้นและคลัสเตอร์มีความสมดุลมากขึ้น ถ้าเราไม่รู้จำนวนจริงของคลัสเตอร์ โดยการทดลองและรวมเทคนิคทั้งสอง เราจะเลือก 3 แทน 2 เป็นจำนวน Ks.

นี่เป็นตัวอย่างว่าการรวมและเปรียบเทียบเมตริกต่างๆ การแสดงข้อมูล และการทดลองกับค่าต่างๆ ของกลุ่มมีความสำคัญอย่างไรในการนำผลลัพธ์ไปในทิศทางที่ถูกต้อง และการมีห้องสมุดที่อำนวยความสะดวกในการวิเคราะห์นั้นสามารถช่วยในกระบวนการนั้นได้อย่างไร!

ประทับเวลา:

เพิ่มเติมจาก สแต็ค