วิธีการคำนวณ aic ของตัวแบบการถดถอยใน python
เกณฑ์ข้อมูล Akaike (AIC) เป็นหน่วยเมตริกที่ใช้ในการเปรียบเทียบความพอดีของแบบจำลองการถดถอยต่างๆ
มีการคำนวณดังนี้:
AIC = 2K – 2 ลิตร (L)
ทอง:
- K: จำนวนพารามิเตอร์โมเดล ค่าเริ่มต้นของ K คือ 2 ดังนั้นแบบจำลองที่มีตัวแปรทำนายเพียงตัวเดียวจะมีค่า K เป็น 2+1 = 3
- ln (L) : ความน่าจะเป็นของบันทึกของแบบจำลอง สิ่งนี้บอกเราถึงความน่าจะเป็นของแบบจำลองเมื่อพิจารณาจากข้อมูล
AIC ได้รับการออกแบบมาเพื่อค้นหาแบบจำลองที่อธิบายความแปรผันของข้อมูลได้มากที่สุด ขณะเดียวกันก็ลงโทษแบบจำลองที่ใช้พารามิเตอร์จำนวนมากเกินไป
เมื่อคุณติดตั้งแบบจำลองการถดถอยหลายตัวแล้ว คุณสามารถเปรียบเทียบ ค่า AIC ของแต่ละรุ่นได้ รุ่นที่มี AIC ต่ำที่สุดจะให้ขนาดที่พอดีที่สุด
ในการคำนวณ AIC ของโมเดลการถดถอยหลายตัวใน Python เราสามารถใช้ฟังก์ชัน statsmodels.regression.linear_model.OLS() ซึ่งมีคุณสมบัติที่เรียกว่า aic ซึ่งบอกเราถึงค่า AIC สำหรับโมเดลที่กำหนด
ตัวอย่างต่อไปนี้แสดงวิธีใช้ฟังก์ชันนี้เพื่อคำนวณและตีความ AIC สำหรับโมเดลการถดถอยต่างๆ ใน Python
ตัวอย่าง: คำนวณและตีความ AIC ใน Python
สมมติว่าเราต้องการปรับ โมเดลการถดถอยเชิงเส้นหลายตัว ที่แตกต่างกันสองแบบให้พอดีโดยใช้ตัวแปรจากชุดข้อมูล mtcars
ขั้นแรก เราจะโหลดชุดข้อมูลนี้:
from sklearn. linear_model import LinearRegression import statsmodels. api as sm import pandas as pd #define URL where dataset is located url = "https://raw.githubusercontent.com/Statorials/Python-Guides/main/mtcars.csv" #read in data data = pd. read_csv (url) #view head of data data. head () model mpg cyl disp hp drat wt qsec vs am gear carb 0 Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4 1 Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4 2 Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1 3 Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1 4 Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
ต่อไปนี้เป็นตัวแปรทำนายที่เราจะใช้ในแต่ละรุ่น:
- ตัวแปรทำนายในโมเดล 1: disp, hp, wt, qsec
- ตัวแปรทำนายในโมเดล 2: disp, qsec
รหัสต่อไปนี้แสดงวิธีการปรับให้พอดีกับรุ่นแรกและคำนวณ AIC:
#define response variable
y = data['mpg']
#define predictor variables
x = data[['disp', 'hp', 'wt', 'qsec']]
#add constant to predictor variables
x = sm. add_constant (x)
#fit regression model
model = sm. OLS (y,x). fit ()
#view AIC of model
print (model. aic )
157.06960941462438
AIC ของรุ่นนี้กลายเป็น 157.07 .
ต่อไป เราจะใส่โมเดลที่สองให้พอดีและคำนวณ AIC:
#define response variable
y = data['mpg']
#define predictor variables
x = data[['disp', 'qsec']]
#add constant to predictor variables
x = sm. add_constant (x)
#fit regression model
model = sm. OLS (y,x). fit ()
#view AIC of model
print (model. aic )
169.84184864154588
AIC ของรุ่นนี้กลายเป็น 169.84 .
เนื่องจากรุ่นแรกมีค่า AIC ต่ำกว่า จึงเป็นรุ่นที่เหมาะสมที่สุด
เมื่อเราระบุแบบจำลองนี้ดีที่สุดแล้ว เราสามารถดำเนินการปรับแบบจำลองให้เหมาะสมและวิเคราะห์ผลลัพธ์ รวมถึงค่า R-squared และค่าสัมประสิทธิ์เบต้า เพื่อกำหนดความสัมพันธ์ที่แน่นอนระหว่างชุดของตัวแปรทำนายและ ตัวแปรตอบสนอง
แหล่งข้อมูลเพิ่มเติม
คู่มือฉบับสมบูรณ์เกี่ยวกับการถดถอยเชิงเส้นใน Python
วิธีการคำนวณ R-squared ที่ปรับแล้วใน Python