DBSCAN
ในแบบฝึกหัดนี้ เราจะลองใช้วิธีการจัดกลุ่มแบบอิงความหนาแน่น (density based clustering) ที่เรียกว่า DBSCAN เพื่อตรวจจับการฉ้อโกง ข้อดีของ DBSCAN คือไม่จำเป็นต้องกำหนดจำนวนคลัสเตอร์ล่วงหน้า และยังรับมือกับข้อมูลที่มีรูปร่างซับซ้อน (เช่น ข้อมูลที่ไม่ใช่ convex) ได้ดีกว่า K-means มาก คราวนี้เราจะไม่ใช้ outlier ของคลัสเตอร์เพื่อระบุการฉ้อโกง แต่จะหาคลัสเตอร์ที่เล็กที่สุดในข้อมูลแล้วกำหนดให้เป็นการฉ้อโกงแทน ชุดข้อมูลที่ผ่านการ scale แล้วคือ X_scaled ถูกเตรียมไว้ให้แล้ว ลองทำดูกันเลย!
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การตรวจจับการฉ้อโกงด้วย Python
คำแนะนำการฝึกหัด
- Import
DBSCAN - กำหนดโมเดล DBSCAN โดยตั้งค่าระยะห่างสูงสุดระหว่างสองตัวอย่างเป็น 0.9 และจำนวนการสังเกตขั้นต่ำในคลัสเตอร์เป็น 10 จากนั้น fit โมเดลกับข้อมูลที่ผ่านการ scale แล้ว
- ดึง label ที่โมเดลทำนายไว้ ซึ่งก็คือหมายเลขคลัสเตอร์ที่ถูกกำหนดให้กับแต่ละการสังเกต
- Print จำนวนคลัสเตอร์และ performance metrics ที่เหลือ
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Import DBSCAN
from sklearn.cluster import ____
# Initialize and fit the DBSCAN model
db = DBSCAN(eps=____, min_samples=____, n_jobs=-1).fit(____)
# Obtain the predicted labels and calculate number of clusters
pred_labels = ____.____
n_clusters = len(set(pred_labels)) - (1 if -1 in labels else 0)
# Print performance metrics for DBSCAN
print('Estimated number of clusters: %d' % ____)
print("Homogeneity: %0.3f" % homogeneity_score(labels, pred_labels))
print("Silhouette Coefficient: %0.3f" % silhouette_score(X_scaled, pred_labels))