การทำงานของ linear regression

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

Maarten Van den Broeck

Content Developer at DataCamp

กราฟ simple linear regression มาตรฐาน

กราฟ scatter plot พร้อมเส้นแนวโน้ม linear regression

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

การแสดง residual

กราฟ scatter plot พร้อมเส้นแนวโน้ม linear regression และเส้นแสดง residual จากแต่ละจุดไปยังเส้นแนวโน้ม

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

เมตริกสำหรับเส้นที่พอดีที่สุด

แนวคิดที่ง่ายที่สุด (แต่ใช้ไม่ได้)

  • นำ residual ทั้งหมดมาบวกรวมกัน
  • บาง residual มีค่าติดลบ

แนวคิดถัดมา (ที่ใช้ได้จริง)

  • ยกกำลังสอง residual แต่ละค่า แล้วนำมาบวกกัน
  • วิธีนี้เรียกว่า sum of squares
Regression ระดับกลางด้วย statsmodels ใน Python

เส้นทางสู่ numerical optimization

กราฟเส้นของสมการกำลังสอง

x = np.arange(-4, 5, 0.1)
y = x ** 2 - x + 10

xy_data = pd.DataFrame({"x": x,
                        "y": y})

sns.lineplot(x="x",
             y="y",
             data=xy_data)

ฟังก์ชันกำลังสอง y = x ** 2 - x + 10

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

ใช้แคลคูลัสในการแก้สมการ

$y = x ^ 2 - x + 10$

$\frac{\partial y}{\partial x} = 2 x - 1$

$0 = 2 x - 1$

$x = 0.5$

$y = 0.5 ^ 2 - 0.5 + 10 = 9.75$

  • ไม่ใช่ทุกสมการที่แก้ได้ด้วยวิธีนี้
  • ให้ Python คำนวณหาคำตอบได้เลย

ไม่ต้องกังวลหากยังไม่เข้าใจส่วนนี้ ไม่จำเป็นต้องใช้ในแบบฝึกหัด

กราฟฟังก์ชันกำลังสองก่อนหน้า แสดงจุดต่ำสุดที่หาได้

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

`minimize()`

from scipy.optimize import minimize
def calc_quadratic(x):
  y = x ** 2 - x + 10
  return y
minimize(fun=calc_quadratic,
         x0=3)
      fun: 9.75
 hess_inv: array([[0.5]])
      jac: array([0.])
  message: 'Optimization terminated successfully.'
     nfev: 6
      nit: 2
     njev: 3
   status: 0
  success: True
        x: array([0.49999998])
Regression ระดับกลางด้วย statsmodels ใน Python

อัลกอริทึม linear regression

กำหนดฟังก์ชันสำหรับคำนวณเมตริก sum of squares

 

เรียกใช้ minimize() เพื่อหาค่าสัมประสิทธิ์ที่ทำให้ฟังก์ชันนี้มีค่าต่ำที่สุด

def calc_sum_of_squares(coeffs):
  intercept, slope = coeffs
  # More calculation!
minimize(
  fun=calc_sum_of_squares,
  x0=0
)
Regression ระดับกลางด้วย statsmodels ใน Python

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

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

Preparing Video For Download...