การตรวจจับค่าผิดปกติ
ในแบบฝึกหัดถัดไป เราจะใช้ อัลกอริทึม K-means เพื่อทำนายการฉ้อโกง แล้วนำผลการทำนายไปเปรียบเทียบกับ label จริงที่บันทึกไว้ เพื่อตรวจสอบความถูกต้องของผลลัพธ์
โดยทั่วไป ธุรกรรมที่เป็นการฉ้อโกงมักถูกระบุว่าเป็นจุดข้อมูลที่ อยู่ห่างจากเซนทรอยด์ของคลัสเตอร์มากที่สุด แบบฝึกหัดนี้จะสอนวิธีทำสิ่งนี้และวิธี กำหนดค่าขอบเขต แบบฝึกหัดถัดไปจะเป็นการตรวจสอบผลลัพธ์
ข้อมูลที่มีให้ได้แก่ค่าสังเกตที่ผ่านการ scale แล้ว X_scaled และ label ที่เก็บไว้ในตัวแปร y
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การตรวจจับการฉ้อโกงด้วย Python
คำแนะนำการฝึกหัด
- แบ่งข้อมูลที่ scale แล้วและ label
yออกเป็นชุด train และ test - กำหนดโมเดล MiniBatch K-means ที่มี 3 คลัสเตอร์ แล้ว fit กับข้อมูล train
- ดึงผลการทำนายคลัสเตอร์จากข้อมูล test และหาค่าเซนทรอยด์ของคลัสเตอร์
- กำหนดเส้นแบ่งระหว่างการฉ้อโกงและไม่ฉ้อโกงที่ระยะห่าง 95% ขึ้นไปของการกระจายตัว
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Split the data into training and test set
X_train, X_test, y_train, y_test = ____(____, ____, test_size=0.3, random_state=0)
# Define K-means model
kmeans = ____(n_clusters=____, random_state=42).fit(____)
# Obtain predictions and calculate distance from cluster centroid
X_test_clusters = ____.____(X_test)
X_test_clusters_centers = ____.____
dist = [np.linalg.norm(x-y) for x, y in zip(X_test, X_test_clusters_centers[X_test_clusters])]
# Create fraud predictions based on outliers on clusters
km_y_pred = np.array(dist)
km_y_pred[dist >= np.percentile(dist, ____)] = 1
km_y_pred[dist < np.percentile(dist, ____)] = 0