วิธีการคำนวณ 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 ที่ดีคืออะไร?

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *