Cara menghitung auc (area di bawah kurva) dengan python
Regresi logistik adalah metode statistik yang kami gunakan untuk menyesuaikan model regresi jika variabel responsnya biner.
Untuk mengevaluasi seberapa cocok model regresi logistik dengan kumpulan data, kita dapat melihat dua metrik berikut:
- Sensitivitas: probabilitas model memprediksi hasil positif untuk suatu observasi padahal hasilnya benar-benar positif. Ini juga disebut “tingkat positif sebenarnya”.
- Kekhususan: probabilitas model memprediksi hasil negatif untuk suatu observasi padahal hasilnya sebenarnya negatif. Ini juga disebut “tingkat negatif sebenarnya”.
Salah satu cara untuk memvisualisasikan kedua pengukuran ini adalah dengan membuat kurva ROC , yang merupakan singkatan dari kurva “karakteristik pengoperasian penerima”.
Ini adalah grafik yang menampilkan sensitivitas sepanjang sumbu y dan (1 – spesifisitas) sepanjang sumbu x.
Salah satu cara untuk mengukur efektivitas model regresi logistik dalam mengklasifikasikan data adalah dengan menghitung AUC , yang merupakan singkatan dari “area di bawah kurva”.
Semakin dekat AUC ke 1, maka semakin baik model tersebut.
Contoh langkah demi langkah berikut menunjukkan cara menghitung AUC untuk model regresi logistik dengan Python.
Langkah 1: Impor paket
Pertama, kita akan mengimpor paket yang diperlukan untuk melakukan regresi logistik dengan 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
Langkah 2: Sesuaikan model regresi logistik
Selanjutnya, kita akan mengimpor kumpulan data dan menyesuaikan model regresi logistik ke dalamnya:
#import dataset from CSV file on Github
url = "https://raw.githubusercontent.com/Statorials/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)
Langkah 3: Hitung AUC
Kita dapat menggunakan fungsi metrics.roc_auc_score() untuk menghitung AUC model:
#use model to predict probability that given y value is 1
y_pred_proba = log_regression. predict_proba (X_test)[::, 1 ]
#calculate AUC of model
auc = metrics. roc_auc_score (y_test, y_pred_proba)
#print AUC score
print (auc)
0.5602104030579559
AUC (area di bawah kurva) untuk model khusus ini adalah 0,5602 .
Ingatlah bahwa model dengan skor AUC 0,5 tidak lebih baik daripada model yang membuat tebakan acak.
Jadi, dalam banyak kasus, model dengan skor AUC 0,5602 akan dianggap buruk dalam mengklasifikasikan observasi ke dalam kelas yang benar.
Sumber daya tambahan
Tutorial berikut memberikan informasi tambahan tentang kurva ROC dan skor AUC:
Cara Menafsirkan Kurva ROC (dengan Contoh)
Apa yang dianggap sebagai skor AUC yang baik?