Scikit Learn - การประเมินผลการทำงานแบบคลัสเตอร์
มีฟังก์ชั่นต่างๆที่เราสามารถประเมินประสิทธิภาพของอัลกอริทึมการทำคลัสเตอร์
ต่อไปนี้เป็นฟังก์ชันที่สำคัญและใช้เป็นส่วนใหญ่ที่มอบให้โดย Scikit-learn เพื่อประเมินประสิทธิภาพการทำคลัสเตอร์ -
ดัชนีแรนด์ที่ปรับแล้ว
Rand Index เป็นฟังก์ชันที่คำนวณการวัดความคล้ายคลึงกันระหว่างการทำคลัสเตอร์สองกลุ่ม สำหรับดัชนีแรนด์การคำนวณนี้จะพิจารณาคู่ของตัวอย่างและคู่การนับทั้งหมดที่กำหนดไว้ในคลัสเตอร์ที่เหมือนกันหรือต่างกันในคลัสเตอร์ที่คาดการณ์และจริง หลังจากนั้นคะแนน Raw Rand Index จะถูก 'ปรับสำหรับโอกาส' เป็นคะแนน Adjusted Rand Index โดยใช้สูตรต่อไปนี้ -
$$ Adjusted \: RI = \ left (RI- คาดว่า _ {-} RI \ right) / \ left (max \ left (RI \ right) -Expected _ {-} RI \ right) $$มีสองพารามิเตอร์คือ labels_trueซึ่งเป็นป้ายกำกับระดับความจริงพื้นดินและ labels_predซึ่งเป็นป้ายกำกับคลัสเตอร์ที่จะประเมิน
ตัวอย่าง
from sklearn.metrics.cluster import adjusted_rand_score
labels_true = [0, 0, 1, 1, 1, 1]
labels_pred = [0, 0, 2, 2, 3, 3]
adjusted_rand_score(labels_true, labels_pred)
เอาต์พุต
0.4444444444444445
การติดฉลากที่สมบูรณ์แบบจะได้คะแนน 1 และการติดฉลากที่ไม่ถูกต้องหรือการติดฉลากอิสระจะได้คะแนน 0 หรือลบ
คะแนนจากข้อมูลร่วมกัน
ข้อมูลร่วมกันคือฟังก์ชันที่คำนวณข้อตกลงของการมอบหมายงานทั้งสอง มันละเว้นการเรียงสับเปลี่ยน มีรุ่นดังต่อไปนี้ -
ข้อมูลร่วมกันที่เป็นมาตรฐาน (NMI)
Scikit เรียนรู้ได้ sklearn.metrics.normalized_mutual_info_score โมดูล.
ตัวอย่าง
from sklearn.metrics.cluster import normalized_mutual_info_score
labels_true = [0, 0, 1, 1, 1, 1]
labels_pred = [0, 0, 2, 2, 3, 3]
normalized_mutual_info_score (labels_true, labels_pred)
เอาต์พุต
0.7611702597222881
ปรับข้อมูลร่วมกัน (AMI)
Scikit เรียนรู้ได้ sklearn.metrics.adjusted_mutual_info_score โมดูล.
ตัวอย่าง
from sklearn.metrics.cluster import adjusted_mutual_info_score
labels_true = [0, 0, 1, 1, 1, 1]
labels_pred = [0, 0, 2, 2, 3, 3]
adjusted_mutual_info_score (labels_true, labels_pred)
เอาต์พุต
0.4444444444444448
คะแนน Fowlkes-Mallows
ฟังก์ชัน Fowlkes-Mallows จะวัดความคล้ายคลึงกันของการจัดกลุ่มจุดสองชุด มันอาจถูกกำหนดให้เป็นค่าเฉลี่ยทางเรขาคณิตของความแม่นยำแบบคู่และการเรียกคืน
ในทางคณิตศาสตร์
$$ FMS = \ frac {TP} {\ sqrt {\ left (TP + FP \ right) \ left (TP + FN \ right)}} $$ที่นี่ TP = True Positive - จำนวนคู่ของจุดที่อยู่ในคลัสเตอร์เดียวกันในป้ายกำกับจริงและป้ายที่คาดการณ์ทั้งคู่
FP = False Positive - จำนวนคู่ของจุดที่อยู่ในคลัสเตอร์เดียวกันในป้ายกำกับจริง แต่ไม่อยู่ในป้ายกำกับที่คาดการณ์ไว้
FN = False Negative - จำนวนคู่ของจุดที่อยู่ในคลัสเตอร์เดียวกันในป้ายกำกับที่คาดคะเน แต่ไม่อยู่ในป้ายกำกับจริง
Scikit เรียนรู้มีโมดูล sklearn.metrics.fowlkes_mallows_score -
ตัวอย่าง
from sklearn.metrics.cluster import fowlkes_mallows_score
labels_true = [0, 0, 1, 1, 1, 1]
labels_pred = [0, 0, 2, 2, 3, 3]
fowlkes_mallows__score (labels_true, labels_pred)
เอาต์พุต
0.6546536707079771
ค่าสัมประสิทธิ์ภาพเงา
ฟังก์ชัน Silhouette จะคำนวณค่าเฉลี่ยค่าสัมประสิทธิ์ Silhouette ของตัวอย่างทั้งหมดโดยใช้ค่าเฉลี่ยระยะทางภายในคลัสเตอร์และค่าเฉลี่ยระยะคลัสเตอร์ที่ใกล้ที่สุดสำหรับแต่ละตัวอย่าง
ในทางคณิตศาสตร์
$$ S = \ left (ba \ right) / max \ left (a, b \ right) $$นี่คือระยะทางภายในคลัสเตอร์
และ b คือค่าเฉลี่ยระยะคลัสเตอร์ที่ใกล้ที่สุด
การเรียนรู้ Scikit มี sklearn.metrics.silhouette_score โมดูล -
ตัวอย่าง
from sklearn import metrics.silhouette_score
from sklearn.metrics import pairwise_distances
from sklearn import datasets
import numpy as np
from sklearn.cluster import KMeans
dataset = datasets.load_iris()
X = dataset.data
y = dataset.target
kmeans_model = KMeans(n_clusters = 3, random_state = 1).fit(X)
labels = kmeans_model.labels_
silhouette_score(X, labels, metric = 'euclidean')
เอาต์พุต
0.5528190123564091
เมทริกซ์ฉุกเฉิน
เมทริกซ์นี้จะรายงานความสำคัญของจุดตัดสำหรับทุกคู่ที่เชื่อถือได้ของ (จริงทำนาย) เมทริกซ์ความสับสนสำหรับปัญหาการจำแนกเป็นเมทริกซ์ฉุกเฉินกำลังสอง
การเรียนรู้ Scikit มี sklearn.metrics.contingency_matrix โมดูล.
ตัวอย่าง
from sklearn.metrics.cluster import contingency_matrix
x = ["a", "a", "a", "b", "b", "b"]
y = [1, 1, 2, 0, 1, 2]
contingency_matrix(x, y)
เอาต์พุต
array([
[0, 2, 1],
[1, 1, 1]
])
แถวแรกของเอาต์พุตด้านบนแสดงให้เห็นว่าในสามตัวอย่างที่มีคลัสเตอร์ที่แท้จริงคือ "a" ไม่มีใน 0 สองใน 1 และ 1 อยู่ใน 2 ในทางกลับกันแถวที่สองแสดงว่าในสามตัวอย่าง ซึ่งคลัสเตอร์ที่แท้จริงคือ“ b” 1 อยู่ใน 0 1 อยู่ใน 1 และ 1 อยู่ใน 2