Hồi quy logistic và đường cong ROC

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

George Boorman

Core Curriculum Manager, DataCamp

Hồi quy logistic cho phân loại nhị phân

  • Hồi quy logistic dùng cho bài toán phân loại

  • Hồi quy logistic xuất ra xác suất

  • Nếu xác suất $ \ p>0.5$:

    • Gán nhãn dữ liệu 1
  • Nếu xác suất $ \ p<0.5$:

    • Gán nhãn dữ liệu 0
Học có giám sát với scikit-learn

Biên quyết định tuyến tính

biểu đồ phân tán feature1 so với feature2, với đường biên quyết định thẳng dự đoán rời bỏ chạy ngang

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

Hồi quy logistic trong scikit-learn

from sklearn.linear_model import LogisticRegression

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

Dự đoán xác suất

y_pred_probs = logreg.predict_proba(X_test)[:, 1]

print(y_pred_probs[0])
[0.08961376]
Học có giám sát với scikit-learn

Ngưỡng xác suất

  • Mặc định, ngưỡng hồi quy logistic = 0.5

  • Không chỉ áp dụng cho hồi quy logistic

    • Bộ phân loại KNN cũng có ngưỡng
  • Điều gì xảy ra nếu ta thay đổi ngưỡng?

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

Đường cong ROC

tỷ lệ dương tính thật so với dương tính giả với đường chấm từ góc trái dưới đến góc phải trên

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

Đường cong ROC

ngưỡng 0 được tô sáng ở góc phải trên

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

Đường cong ROC

ngưỡng 1 cũng được tô sáng ở góc trái dưới

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

Đường cong ROC

cả hai ngưỡng được tô sáng

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

Đường cong ROC

Các điểm cong lên và sang phải phía trên đường chấm, biểu diễn các ngưỡng khác nhau

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

Đường cong ROC

đường cong lên và sang phải phía trên đường chấm, biểu diễn các ngưỡng khác nhau

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

Vẽ đường cong ROC

from sklearn.metrics import roc_curve

fpr, tpr, thresholds = roc_curve(y_test, y_pred_probs)
plt.plot([0, 1], [0, 1], 'k--') plt.plot(fpr, tpr) plt.xlabel('False Positive Rate') plt.ylabel('True Positive Rate') plt.title('Logistic Regression ROC Curve') plt.show()
Học có giám sát với scikit-learn

Vẽ đường cong ROC

biểu đồ đường cong ROC cho bộ dữ liệu rời bỏ, đường đi từ góc trái dưới lên phải

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

ROC AUC

biểu đồ đường cong ROC cho bộ dữ liệu rời bỏ, đường đi từ góc trái dưới lên phải, có chú thích p=0.67

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

ROC AUC trong scikit-learn

from sklearn.metrics import roc_auc_score

print(roc_auc_score(y_test, y_pred_probs))
0.6700964152663693
Học có giám sát với scikit-learn

Vamos praticar!

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

Preparing Video For Download...