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