พื้นฐานของการถดถอยเชิงเส้น

Supervised Learning ด้วย scikit-learn

George Boorman

Core Curriculum Manager, DataCamp

กลไกของการถดถอย

  • $y = ax + b$

    • การถดถอยเชิงเส้นอย่างง่ายใช้ฟีเจอร์เดียว

      • $y$ = ตัวแปรเป้าหมาย

      • $x$ = ฟีเจอร์เดียว

      • $a$, $b$ = พารามิเตอร์/สัมประสิทธิ์ของโมเดล - ความชัน, จุดตัดแกน

  • เลือกค่า $a$ และ $b$ อย่างไร?

    • กำหนดฟังก์ชันความผิดพลาดสำหรับเส้นใดก็ได้

    • เลือกเส้นที่ทำให้ฟังก์ชันความผิดพลาดต่ำที่สุด

  • ฟังก์ชันความผิดพลาด = ฟังก์ชัน loss = ฟังก์ชัน cost

Supervised Learning ด้วย scikit-learn

ฟังก์ชัน loss

แผนภูมิกระจาย

Supervised Learning ด้วย scikit-learn

ฟังก์ชัน loss

เส้นถดถอยลากจากล่างซ้ายไปบนขวา ผ่านกลางของข้อมูล

Supervised Learning ด้วย scikit-learn

ฟังก์ชัน loss

เส้นสีแดงจากเส้นถดถอยไปยังแต่ละจุดข้อมูล

Supervised Learning ด้วย scikit-learn

ฟังก์ชัน loss

เส้นสีแดงแสดงค่าตกค้าง

Supervised Learning ด้วย scikit-learn

ฟังก์ชัน loss

ลูกศรชี้ไปที่ค่าตกค้างบวก เนื่องจากจุดข้อมูลอยู่เหนือเส้นถดถอย

Supervised Learning ด้วย scikit-learn

Ordinary Least Squares

ลูกศรที่สองชี้ไปที่ค่าตกค้างใต้เส้นถดถอย แสดงค่าตกค้างเป็นลบ

$RSS = $ $\displaystyle\sum_{i=1}^{n}(y_i-\hat{y_i})^2$

Ordinary Least Squares (OLS): ลดค่า RSS ให้น้อยที่สุด

Supervised Learning ด้วย scikit-learn

การถดถอยเชิงเส้นในมิติสูง

$$ y = a_{1}x_{1} + a_{2}x_{2} + b$$

  • การ fit โมเดลการถดถอยเชิงเส้นในกรณีนี้:
    • ต้องระบุ 3 ตัวแปร: $ a_1,\ a_2,\ b $
  • ในมิติที่สูงขึ้น:
    • เรียกว่า multiple regression
    • ต้องระบุสัมประสิทธิ์สำหรับแต่ละฟีเจอร์และตัวแปร $b$

$$ y = a_{1}x_{1} + a_{2}x_{2} + a_{3}x_{3} +... + a_{n}x_{n}+ b$$

  • scikit-learn ทำงานในลักษณะเดียวกัน:
    • ส่งอาร์เรย์สองชุด: ฟีเจอร์และตัวแปรเป้าหมาย
Supervised Learning ด้วย scikit-learn

การถดถอยเชิงเส้นโดยใช้ทุกฟีเจอร์

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
reg_all = LinearRegression()
reg_all.fit(X_train, y_train)
y_pred = reg_all.predict(X_test)
Supervised Learning ด้วย scikit-learn

R-squared

  • $R^2$: วัดความแปรปรวนของค่าเป้าหมายที่ฟีเจอร์อธิบายได้

    • ค่าอยู่ในช่วง 0 ถึง 1
  • $R^2$ สูง:

เส้นถดถอยทำมุม 45 องศา ลากจากล่างซ้ายไปบนขวา และอยู่ใกล้กับทุกจุดข้อมูล

 

 

  • $R^2$ ต่ำ:

เส้นถดถอยลากในแนวนอน โดยจุดข้อมูลกระจายห่างจากเส้น

Supervised Learning ด้วย scikit-learn

R-squared ใน scikit-learn

reg_all.score(X_test, y_test)
0.356302876407827
Supervised Learning ด้วย scikit-learn

Mean Squared Error และ Root Mean Squared Error

$MSE = $ $\displaystyle\frac{1}{n}\sum_{i=1}^{n}(y_i-\hat{y_i})^2$

  • $MSE$ มีหน่วยเป็นหน่วยของตัวแปรเป้าหมายยกกำลังสอง

 

$RMSE = $ $\sqrt{MSE}$

  • $RMSE$ มีหน่วยเดียวกับตัวแปรเป้าหมาย
Supervised Learning ด้วย scikit-learn

RMSE ใน scikit-learn

from sklearn.metrics import root_mean_squared_error

root_mean_squared_error(y_test, y_pred)
24.028109426907236
Supervised Learning ด้วย scikit-learn

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

Supervised Learning ด้วย scikit-learn

Preparing Video For Download...