Cách hồi quy tuyến tính hoạt động

Hồi quy trung cấp với statsmodels trong Python

Maarten Van den Broeck

Content Developer at DataCamp

Biểu đồ hồi quy tuyến tính đơn chuẩn

Biểu đồ phân tán với đường xu hướng hồi quy tuyến tính.

Hồi quy trung cấp với statsmodels trong Python

Trực quan hóa phần dư

Biểu đồ phân tán với đường xu hướng, kèm các đoạn thẳng từ điểm đến đường, biểu diễn phần dư.

Hồi quy trung cấp với statsmodels trong Python

Thước đo cho đường khớp tốt nhất

Ý tưởng đơn giản nhất (không hiệu quả)

  • Cộng tất cả phần dư.
  • Một số phần dư âm.

Ý tưởng đơn giản tiếp theo (hiệu quả)

  • Bình phương từng phần dư rồi cộng lại.
  • Gọi là “tổng bình phương”.
Hồi quy trung cấp với statsmodels trong Python

Một vòng rẽ sang tối ưu hóa số

Biểu đồ đường của một phương trình bậc hai

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)

Hàm bậc hai y = x ** 2 - x + 10

Hồi quy trung cấp với statsmodels trong Python

Dùng giải tích để giải phương trình

$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$

  • Không phải mọi phương trình đều giải được như vậy.
  • Có thể để Python tính giúp.

Đừng lo nếu phần này chưa rõ; bạn không cần cho bài tập.

Hàm bậc hai trước đó, nay đã tìm được điểm cực tiểu

Hồi quy trung cấp với statsmodels trong 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])
Hồi quy trung cấp với statsmodels trong Python

Một thuật toán hồi quy tuyến tính

Định nghĩa hàm tính chỉ số tổng bình phương.

 

Gọi minimize() để tìm hệ số làm nhỏ nhất hàm này.

def calc_sum_of_squares(coeffs):
  intercept, slope = coeffs
  # More calculation!
minimize(
  fun=calc_sum_of_squares,
  x0=0
)
Hồi quy trung cấp với statsmodels trong Python

Ayo berlatih!

Hồi quy trung cấp với statsmodels trong Python

Preparing Video For Download...