Mô hình của bạn tốt đến mức nào?

Học có giám sát với scikit-learn

George Boorman

Core Curriculum Manager, DataCamp

Chỉ số phân loại

  • Đo hiệu suất bằng độ chính xác:

    • Tỷ lệ mẫu được phân loại đúng

    • Không phải lúc nào cũng hữu ích

Học có giám sát với scikit-learn

Mất cân bằng lớp

  • Phân loại để dự đoán giao dịch ngân hàng gian lận

    • 99% giao dịch hợp lệ; 1% gian lận
  • Có thể tạo bộ phân loại dự đoán KHÔNG giao dịch nào là gian lận

    • Chính xác 99%!

    • Nhưng dự đoán giao dịch gian lận rất kém

    • Không đạt mục tiêu ban đầu

  • Mất cân bằng lớp: Tần suất lớp không đều

  • Cần cách đánh giá khác

Học có giám sát với scikit-learn

Ma trận nhầm lẫn để đánh giá phân loại

  • Ma trận nhầm lẫn

ma trận nhầm lẫn

Học có giám sát với scikit-learn

Đánh giá hiệu suất phân loại

 

nhãn dự đoán

Học có giám sát với scikit-learn

Đánh giá hiệu suất phân loại

 

nhãn thực tế

Học có giám sát với scikit-learn

Đánh giá hiệu suất phân loại

 

ma trận nhầm lẫn

Học có giám sát với scikit-learn

Đánh giá hiệu suất phân loại

 

dương tính thật

Học có giám sát với scikit-learn

Đánh giá hiệu suất phân loại

 

âm tính thật

Học có giám sát với scikit-learn

Đánh giá hiệu suất phân loại

 

âm tính giả

Học có giám sát với scikit-learn

Đánh giá hiệu suất phân loại

 

dương tính giả

Học có giám sát với scikit-learn

Đánh giá hiệu suất phân loại

ma trận nhầm lẫn

  • Độ chính xác:

ch3_1_v3.030.png

Học có giám sát với scikit-learn

Precision

độ chính xác (precision)

  • Precision

precision_formula.png

  • Precision cao = tỷ lệ dương tính giả thấp
  • Precision cao: Ít giao dịch hợp lệ bị dự đoán là gian lận
Học có giám sát với scikit-learn

Recall

Recall

  • Recall

recall_formula.png

  • Recall cao = tỷ lệ âm tính giả thấp
  • Recall cao: Dự đoán đúng hầu hết giao dịch gian lận
Học có giám sát với scikit-learn

Điểm F1

  • Điểm F1: $2 * \frac{precision \ * \ recall}{precision \ + \ recall}$
Học có giám sát với scikit-learn

Ma trận nhầm lẫn trong scikit-learn

from sklearn.metrics import classification_report, confusion_matrix

knn = KNeighborsClassifier(n_neighbors=7)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, random_state=42)
knn.fit(X_train, y_train)
y_pred = knn.predict(X_test)
Học có giám sát với scikit-learn

Ma trận nhầm lẫn trong scikit-learn

print(confusion_matrix(y_test, y_pred))
[[1106   11]
 [ 183   34]]
Học có giám sát với scikit-learn

Báo cáo phân loại trong scikit-learn

print(classification_report(y_test, y_pred))
              precision    recall  f1-score   support

           0       0.86      0.99      0.92      1117
           1       0.76      0.16      0.26       217

    accuracy                           0.85      1334
   macro avg       0.81      0.57      0.59      1334
weighted avg       0.84      0.85      0.81      1334
Học có giám sát với scikit-learn

Ayo berlatih!

Học có giám sát với scikit-learn

Preparing Video For Download...