Hồi quy đa thức OLS Python

Thuật toán học máy đầu tiên mà bạn nhớ đã học là gì? . Thành thật mà nói, hồi quy tuyến tính nâng bậc thang thuật toán học máy của chúng tôi thành thuật toán cơ bản và cốt lõi trong bộ kỹ năng của chúng tôi

Nhưng nếu mô hình hồi quy tuyến tính của bạn không thể mô hình hóa mối quan hệ giữa biến mục tiêu và biến dự đoán thì sao?

Chà - đó là nơi hồi quy đa thức có thể hỗ trợ. Trong bài viết này, chúng ta sẽ tìm hiểu về hồi quy đa thức và triển khai mô hình hồi quy đa thức bằng Python

Nếu bạn không quen thuộc với các khái niệm về Hồi quy tuyến tính, thì tôi thực sự khuyên bạn nên đọc bài viết này trước khi tiếp tục

Hãy đi sâu vào

Hồi quy đa thức là gì?

Hồi quy đa thức là một trường hợp đặc biệt của hồi quy tuyến tính trong đó chúng ta khớp một phương trình đa thức trên dữ liệu với mối quan hệ đường cong giữa biến mục tiêu và các biến độc lập

Trong mối quan hệ đường cong, giá trị của biến mục tiêu thay đổi theo cách không đồng nhất đối với (các) yếu tố dự đoán

Trong Hồi quy tuyến tính, với một yếu tố dự đoán duy nhất, chúng ta có phương trình sau

ở đâu,

Y là mục tiêu,

x là yếu tố dự đoán,

𝜃0 là độ lệch,

và 𝜃1 là trọng số trong phương trình hồi quy

Phương trình tuyến tính này có thể được sử dụng để biểu diễn mối quan hệ tuyến tính. Nhưng, trong hồi quy đa thức, chúng ta có một phương trình đa thức bậc n được biểu diễn dưới dạng

Đây

𝜃0 là độ lệch,

𝜃1, 𝜃2, …, 𝜃n là các trọng số trong phương trình hồi quy đa thức,

và n là bậc của đa thức

Số lượng các thuật ngữ bậc cao tăng lên cùng với giá trị tăng dần của n, và do đó phương trình trở nên phức tạp hơn

Hồi quy đa thức vs. hồi quy tuyến tính

Bây giờ chúng ta đã hiểu cơ bản về Hồi quy đa thức là gì, hãy mở IDE Python của chúng ta và triển khai hồi quy đa thức

Tôi sẽ thực hiện một cách tiếp cận hơi khác ở đây. Chúng tôi sẽ triển khai cả thuật toán hồi quy đa thức cũng như thuật toán hồi quy tuyến tính trên một tập dữ liệu đơn giản nơi chúng tôi có mối quan hệ đường cong giữa mục tiêu và yếu tố dự đoán. Cuối cùng, chúng tôi sẽ so sánh kết quả để hiểu sự khác biệt giữa hai

Đầu tiên, nhập các thư viện cần thiết và vẽ biểu đồ mối quan hệ giữa biến mục tiêu và biến độc lập

Mã Python

Trước tiên hãy bắt đầu với Hồi quy tuyến tính

# Importing Linear Regression from sklearn.linear_model import LinearRegression # Training Model lm=LinearRegression() lm.fit(x.reshape(-1,1),y.reshape(-1,1))

Hãy xem hồi quy tuyến tính hoạt động như thế nào trên bộ dữ liệu này

y_pred=lm.predict(x.reshape(-1,1)) # plotting predictions plt.figure(figsize=(10,5)) plt.scatter(x,y,s=15) plt.plot(x,y_pred,color='r') plt.xlabel('Predictor',fontsize=16) plt.ylabel('Target',fontsize=16) plt.show()print('RMSE for Linear Regression=>',np.sqrt(mean_squared_error(y,y_pred)))

Ở đây, bạn có thể thấy rằng mô hình hồi quy tuyến tính không thể khớp dữ liệu đúng cách và RMSE (Lỗi bình phương trung bình gốc) cũng rất cao

Bây giờ, hãy thử hồi quy đa thức

Việc thực hiện hồi quy đa thức là một quá trình hai bước. Đầu tiên, chúng tôi chuyển đổi dữ liệu của mình thành đa thức bằng cách sử dụng hàm PolynomialFeatures từ sklearn và sau đó sử dụng hồi quy tuyến tính để điều chỉnh các tham số

Chúng tôi có thể tự động hóa quy trình này bằng cách sử dụng đường ống dẫn. Đường ống có thể được tạo bằng Đường ống từ sklearn

Hãy tạo một đường ống để thực hiện hồi quy đa thức

# importing libraries for polynomial transform from sklearn.preprocessing import PolynomialFeatures # for creating pipeline from sklearn.pipeline import Pipeline # creating pipeline and fitting it on data Input=[('polynomial',PolynomialFeatures(degree=2)),('modal',LinearRegression())] pipe=Pipeline(Input) pipe.fit(x.reshape(-1,1),y.reshape(-1,1))

Ở đây, tôi đã lấy đa thức bậc 2. Chúng ta có thể chọn mức độ đa thức dựa trên mối quan hệ giữa mục tiêu và dự đoán. Đa thức bậc 1 là một hồi quy tuyến tính đơn giản;

Với mức độ tăng dần của đa thức, độ phức tạp của mô hình cũng tăng lên. Do đó, giá trị của n phải được chọn chính xác. Nếu giá trị này thấp, thì mô hình sẽ không thể điều chỉnh dữ liệu đúng cách và nếu giá trị này cao, mô hình sẽ dễ dàng điều chỉnh dữ liệu quá mức

Đọc thêm về trang bị thiếu và trang bị thừa trong học máy tại đây

Hãy xem hiệu suất của mô hình của chúng tôi

poly_pred=pipe.predict(x.reshape(-1,1)) #sorting predicted values with respect to predictor sorted_zip = sorted(zip(x,poly_pred)) x_poly, poly_pred = zip(*sorted_zip) #plotting predictions plt.figure(figsize=(10,6)) plt.scatter(x,y,s=15) plt.plot(x,y_pred,color='r',label='Linear Regression') plt.plot(x_poly,poly_pred,color='g',label='Polynomial Regression') plt.xlabel('Predictor',fontsize=16) plt.ylabel('Target',fontsize=16) plt.legend() plt.show()print('RMSE for Polynomial Regression=>',np.sqrt(mean_squared_error(y,poly_pred)))

Chúng ta có thể quan sát rõ ràng rằng Hồi quy đa thức phù hợp với dữ liệu hơn so với hồi quy tuyến tính. Ngoài ra, do phù hợp hơn, RMSE của Hồi quy đa thức thấp hơn nhiều so với Hồi quy tuyến tính

Nhưng nếu chúng ta có nhiều hơn một yếu tố dự đoán thì sao?

Đối với 2 yếu tố dự đoán, phương trình của hồi quy đa thức trở thành

ở đâu,

Y là mục tiêu,

x1, x2 là các dự đoán,

𝜃0 là độ lệch,

và, 𝜃1, 𝜃2, 𝜃3, 𝜃4 và 𝜃5 là các trọng số trong phương trình hồi quy

Đối với n dự đoán, phương trình bao gồm tất cả các kết hợp có thể có của các đa thức bậc khác nhau. Điều này được gọi là Hồi quy đa thức nhiều chiều

Tuy nhiên, có một vấn đề lớn với Hồi quy đa thức nhiều chiều – đa cộng tuyến. Đa cộng tuyến là sự phụ thuộc lẫn nhau giữa các yếu tố dự đoán trong một bài toán hồi quy nhiều chiều. Điều này hạn chế mô hình khớp đúng trên tập dữ liệu

Ghi chú kết thúc

Đây là phần giới thiệu nhanh về hồi quy đa thức. Tôi chưa thấy nhiều người nói về điều này nhưng nó có thể là một thuật toán hữu ích để bạn sử dụng trong học máy

Tôi hy vọng bạn thích bài viết này. Nếu bạn thấy bài viết này có nhiều thông tin, hãy chia sẻ nó với bạn bè của bạn và bình luận bên dưới với các truy vấn và phản hồi của bạn. Tôi cũng đã liệt kê một số khóa học tuyệt vời liên quan đến khoa học dữ liệu bên dưới

Bạn có thể sử dụng OLS cho hồi quy đa thức không?

Tương tự, có thể sử dụng các thuật ngữ đa thức trong hồi quy OLS và mô hình thu được sẽ vẫn là tuyến tính.

Hồi quy OLS trong Python là gì?

Hồi quy tuyến tính và bình phương nhỏ nhất thông thường . the simplest and most common estimator in which the two (beta)s are chosen to minimize the square of the distance between the predicted values and the actual values.

R2 có thể được sử dụng cho hồi quy đa thức không?

Giá trị bình phương R cho hồi quy đa thức là 0. 801 tốt hơn so với đối tác hồi quy tuyến tính. Hồi quy tương tự có thể được thực hiện bằng cách sử dụng lớp polyfit của numpy. Giá trị bình phương R trong trường hợp này là 0. 801 cũng vậy. Sử dụng các tính năng cơ bản của sklearn, có thể thực hiện cả hồi quy tuyến tính và đa thức.

Làm thế nào để sử dụng hồi quy đa thức trong học máy?

Các bước chính liên quan đến Hồi quy đa thức được đưa ra bên dưới. .
Tiền xử lý dữ liệu
Xây dựng mô hình hồi quy tuyến tính và khớp nó với tập dữ liệu
Xây dựng mô hình hồi quy đa thức và khớp nó với tập dữ liệu
Trực quan hóa kết quả cho mô hình hồi quy tuyến tính và hồi quy đa thức
Dự đoán đầu ra

Chủ đề