การประเมินประสิทธิภาพโมเดล

Regression ระดับกลางด้วย statsmodels ใน Python

Maarten Van den Broeck

Content Developer at DataCamp

เมตริกประสิทธิภาพของโมเดล

  • สัมประสิทธิ์การตัดสินใจ (R-squared): วัดว่าเส้นถดถอยเชิงเส้นพอดีกับข้อมูลแค่ไหน

    • ค่ายิ่งมากยิ่งดี
  • ค่าความคลาดเคลื่อนมาตรฐานของส่วนเหลือ (RSE): ขนาดทั่วไปของส่วนเหลือ

    • ค่ายิ่งน้อยยิ่งดี
Regression ระดับกลางด้วย statsmodels ใน Python

การหาสัมประสิทธิ์การตัดสินใจ

print(mdl_mass_vs_length.rsquared)
0.8225689502644215
print(mdl_mass_vs_species.rsquared)
0.25814887709499157
print(mdl_mass_vs_both.rsquared)
0.9200433561156649
Regression ระดับกลางด้วย statsmodels ใน Python

สัมประสิทธิ์การตัดสินใจที่ปรับแล้ว

  • ตัวแปรอธิบายที่มากขึ้นทำให้ $R^2$ เพิ่มขึ้น
  • ตัวแปรอธิบายมากเกินไปทำให้เกิด overfitting
  • สัมประสิทธิ์การตัดสินใจที่ปรับแล้ว จะลงโทษเมื่อมีตัวแปรอธิบายมากขึ้น
  • $\bar{R ^ 2} = 1 - (1 - R ^ 2) \frac{n_{obs} - 1}{n_{obs} - n_{var} - 1}$
  • การลงโทษเห็นได้ชัดเมื่อ $R^2$ มีค่าน้อย หรือ $n_{var}$ คิดเป็นสัดส่วนมากของ $n_{obs}$
  • ใน statsmodels ค่านี้อยู่ใน attribute rsquared_adj
Regression ระดับกลางด้วย statsmodels ใน Python

การหาสัมประสิทธิ์การตัดสินใจที่ปรับแล้ว

print("rsq_length: ", mdl_mass_vs_length.rsquared)
print("rsq_adj_length: ", mdl_mass_vs_length.rsquared_adj)
rsq_length:  0.8225689502644215
rsq_adj_length:  0.8211607673300121
print("rsq_species: ", mdl_mass_vs_species.rsquared)
print("rsq_adj_species: ", mdl_mass_vs_species.rsquared_adj)
rsq_species:  0.25814887709499157
rsq_adj_species:  0.24020086605696722
print("rsq_both: ", mdl_mass_vs_both.rsquared
print("rsq_adj_both: ", mdl_mass_vs_both.rsquared_adj)
rsq_both:  0.9200433561156649
rsq_adj_both:  0.9174431400543857
Regression ระดับกลางด้วย statsmodels ใน Python

การหาค่าความคลาดเคลื่อนมาตรฐานของส่วนเหลือ

rse_length = np.sqrt(mdl_mass_vs_length.mse_resid)
print("rse_length: ", rse_length)
rse_length:  152.12092835414788
rse_species = np.sqrt(mdl_mass_vs_species.mse_resid)
print("rse_species: ", rse_species)
rse_species:  313.5501156682592
rse_both = np.sqrt(mdl_mass_vs_both.mse_resid)
print("rse_both: ", rse_both)
rse_both:  103.35563303966488
Regression ระดับกลางด้วย statsmodels ใน Python

มาฝึกกันเถอะ!

Regression ระดับกลางด้วย statsmodels ใน Python

Preparing Video For Download...