Hồi quy logistic là một phương pháp thống kê mà chúng tôi sử dụng để phù hợp với mô hình hồi quy khi biến phản hồi là nhị phân.
- Độ nhạy: & nbsp; xác suất mà mô hình dự đoán kết quả tích cực cho một quan sát khi thực sự kết quả là tích cực. Đây cũng được gọi là tỷ lệ tích cực thực sự của người Viking.The probability that the model predicts a positive outcome for an observation when indeed the outcome is positive. This is also called the “true positive rate.”
- Tính đặc hiệu: & nbsp; xác suất mà mô hình dự đoán kết quả tiêu cực cho một quan sát khi thực sự kết quả là tiêu cực. Điều này cũng được gọi là tỷ lệ âm thực sự của người Viking.The probability that the model predicts a negative outcome for an observation when indeed the outcome is negative. This is also called the “true negative rate.”
Một cách để trực quan hóa hai số liệu này là bằng cách tạo ra một đường cong ROC, viết tắt của đường cong đặc trưng của máy thu. Đây là một âm mưu hiển thị độ nhạy và độ đặc hiệu của mô hình hồi quy logistic.ROC curve, which stands for “receiver operating characteristic” curve. This is a plot that displays the sensitivity and specificity of a logistic regression model.
Ví dụ từng bước sau đây cho thấy cách tạo và giải thích một đường cong ROC trong Python.
Bước 1: Nhập các gói cần thiết
Đầu tiên, chúng tôi sẽ nhập các gói cần thiết để thực hiện hồi quy logistic trong Python:
import pandas as pd import numpy as np from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn import metrics import matplotlib.pyplot as plt
Bước 2: Phù hợp với mô hình hồi quy logistic
Tiếp theo, chúng tôi sẽ nhập một bộ dữ liệu và phù hợp với mô hình hồi quy logistic với nó:
#import dataset from CSV file on Github
url = "//raw.githubusercontent.com/Statology/Python-Guides/main/default.csv"
data = pd.read_csv[url]
#define the predictor variables and the response variable
X = data[['student', 'balance', 'income']]
y = data['default']
#split the dataset into training [70%] and testing [30%] sets
X_train,X_test,y_train,y_test = train_test_split[X,y,test_size=0.3,random_state=0]
#instantiate the model
log_regression = LogisticRegression[]
#fit the model using the training data
log_regression.fit[X_train,y_train]
Bước 3: Vẽ đường cong ROC
Tiếp theo, chúng tôi sẽ tính toán tốc độ dương thực sự và tốc độ dương tính giả và tạo đường cong ROC bằng cách sử dụng gói trực quan hóa dữ liệu matplotlib:
#define metrics
y_pred_proba = log_regression.predict_proba[X_test][::,1]
fpr, tpr, _ = metrics.roc_curve[y_test, y_pred_proba]
#create ROC curve
plt.plot[fpr,tpr]
plt.ylabel['True Positive Rate']
plt.xlabel['False Positive Rate']
plt.show[]
Càng nhiều đường cong ôm lấy góc trên cùng bên trái của cốt truyện, mô hình càng tốt trong việc phân loại dữ liệu thành các danh mục.
Như chúng ta có thể thấy từ cốt truyện trên, mô hình hồi quy logistic này thực hiện một công việc khá kém trong việc phân loại dữ liệu thành các danh mục.
Để định lượng điều này, chúng ta có thể tính toán khu vực AUC - dưới đường cong - cho chúng ta biết bao nhiêu lô được đặt dưới đường cong.
AUC càng gần với 1, mô hình càng tốt. Một mô hình có AUC bằng 0,5 không tốt hơn một mô hình tạo ra các phân loại ngẫu nhiên.
Bước 4: Tính AUC
Chúng ta có thể sử dụng mã sau để tính toán AUC của mô hình và hiển thị nó ở góc dưới bên phải của biểu đồ ROC:
#define metrics
y_pred_proba = log_regression.predict_proba[X_test][::,1]
fpr, tpr, _ = metrics.roc_curve[y_test, y_pred_proba]
auc = metrics.roc_auc_score[y_test, y_pred_proba]
#create ROC curve
plt.plot[fpr,tpr,label="AUC="+str[auc]]
plt.ylabel['True Positive Rate']
plt.xlabel['False Positive Rate']
plt.legend[loc=4]
plt.show[]
AUC cho mô hình hồi quy logistic này hóa ra là & nbsp; 0,5602. Vì điều này gần 0,5, điều này xác nhận rằng mô hình thực hiện một công việc kém để phân loại dữ liệu.0.5602. Since this is close to 0.5, this confirms that the model does a poor job of classifying data.
Liên quan: Cách vẽ nhiều đường cong ROC trong Python How to Plot Multiple ROC Curves in Python