วิธีการคำนวณ auc (พื้นที่ใต้เส้นโค้ง) ใน python
การถดถอยแบบลอจิสติก เป็นวิธีการทางสถิติที่เราใช้เพื่อปรับให้เหมาะสมกับแบบจำลองการถดถอยเมื่อตัวแปรตอบสนองเป็นไบนารี
เพื่อประเมินว่าแบบจำลองการถดถอยโลจิสติกเหมาะสมกับชุดข้อมูลได้ดีเพียงใด เราสามารถดูตัวชี้วัดสองตัวต่อไปนี้:
- ความไว: ความน่าจะเป็นที่แบบจำลองคาดการณ์ผลลัพธ์ที่เป็นบวกสำหรับการสังเกต เมื่อผลลัพธ์เป็นบวกจริงๆ สิ่งนี้เรียกอีกอย่างว่า “อัตราบวกที่แท้จริง”
- ความจำเพาะ: ความน่าจะเป็นที่แบบจำลองทำนายผลลัพธ์ที่เป็นลบสำหรับการสังเกต เมื่อผลลัพธ์เป็นลบจริงๆ สิ่งนี้เรียกอีกอย่างว่า “อัตราติดลบที่แท้จริง”
วิธีหนึ่งในการแสดงภาพการวัดทั้งสองนี้คือการสร้าง เส้นโค้ง ROC ซึ่งย่อมาจากเส้นโค้ง “ลักษณะการทำงานของตัวรับ”
นี่คือกราฟที่แสดงความไวตามแกน y และ (1 – ความจำเพาะ) ตามแกน x
วิธีหนึ่งในการหาปริมาณประสิทธิผลของแบบจำลองการถดถอยโลจิสติกในการจำแนกข้อมูลคือการคำนวณ AUC ซึ่งย่อมาจาก “พื้นที่ใต้เส้นโค้ง”
ยิ่ง AUC ใกล้ 1 มากเท่าใด โมเดลก็ยิ่งดีเท่านั้น
ตัวอย่างทีละขั้นตอนต่อไปนี้แสดงวิธีคำนวณ AUC สำหรับแบบจำลองการถดถอยโลจิสติกใน Python
ขั้นตอนที่ 1: นำเข้าแพ็คเกจ
ขั้นแรก เราจะนำเข้าแพ็คเกจที่จำเป็นเพื่อทำการถดถอยโลจิสติกใน 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
ขั้นตอนที่ 2: ติดตั้งแบบจำลองการถดถอยโลจิสติก
ต่อไป เราจะนำเข้าชุดข้อมูลและปรับแบบจำลองการถดถอยโลจิสติกให้เหมาะสม:
#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)
ขั้นตอนที่ 3: คำนวณ AUC
เราสามารถใช้ฟังก์ชัน metrics.roc_auc_score() เพื่อคำนวณ AUC ของแบบจำลอง:
#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 (พื้นที่ใต้เส้นโค้ง) สำหรับรุ่นนี้คือ 0.5602
โปรดจำไว้ว่าแบบจำลองที่มีคะแนน AUC 0.5 ไม่ได้ดีไปกว่าแบบจำลองที่คาดเดาแบบสุ่ม
ดังนั้น ในกรณีส่วนใหญ่ แบบจำลองที่มีคะแนน AUC 0.5602 จะถือว่าไม่ดีในการจำแนกการสังเกตออกเป็นประเภทที่ถูกต้อง
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้ให้ข้อมูลเพิ่มเติมเกี่ยวกับเส้นโค้ง ROC และคะแนน AUC:
วิธีการตีความ ROC Curve (พร้อมตัวอย่าง)
คะแนน AUC ที่ดีคืออะไร?