Hướng dẫn multivariate polynomial regression python - hồi quy đa thức đa biến python

Trong khoa học dữ liệu, khi cố gắng khám phá các xu hướng và mẫu bên trong dữ liệu, bạn có thể gặp nhiều kịch bản khác nhau.

Ví dụ: bạn có thể gặp phải một tình huống mà dữ liệu không phải là tuyến tính, bạn có nhiều hơn một biến (đa biến) và bạn dường như có các tính năng đa thức.

Bạn vẫn muốn đảm bảo rằng các giá trị dự đoán của bạn là chính xác, nhưng mối quan hệ phi tuyến tính rất khó để mô hình chính xác với mô hình hồi quy tuyến tính.

Hộp công cụ khoa học dữ liệu liên tục mở rộng.

Mặc dù hầu hết được trang bị một mô hình tuyến tính, nhưng họ sử dụng nó trong một kịch bản tuyến tính; Điều gì xảy ra khi dữ liệu có nhiều biến độc lập hiển thị các tính năng phi tuyến tính?

Điều đó khi chúng ta cần bắt đầu tìm kiếm các mô hình khác để sử dụng

Làm thế nào bạn sẽ xử lý vấn đề này?

(Mã Python đầy đủ với dữ liệu ví dụ ở phía dưới)

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

Hồi quy đa thức đa biến được sử dụng để mô hình hóa các mối quan hệ phức tạp với nhiều biến. Những mối quan hệ phức tạp này thường là phi tuyến tính và kích thước cao. Khi một phương trình chính xác (mô hình) được tạo hoặc tìm thấy, phương trình này có thể được sử dụng để dự đoán chính xác trong tương lai.

Hãy nói rằng bạn đang cố gắng xác định mối quan hệ giữa nhiều biến số (trong kịch bản này, chúng ta có thể nghĩ về các biến X, Y và Z).multiple variables (in this scenario, we can think of variables X, Y, and Z).

Bạn quan tâm đến việc xác định mối quan hệ giữa một biến và biến khác.

Trước tiên bạn cần tìm ra nếu có bất kỳ mối quan hệ nào trong dữ liệu và nếu vậy, chúng tôi muốn tìm phương trình hoặc hàm liên quan đến các biến đó lại với nhau.

Bạn dành thời gian để làm EDA và các kỹ thuật khoa học dữ liệu trực quan khác.

Điều đầu tiên bạn nhận thấy là dữ liệu của bạn không phải là tuyến tính.

Mô hình hồi quy đa thức là gì

Hồi quy đa thức là một hồi quy tuyến tính cơ bản với mức độ bậc cao hơn. Mức độ bậc cao này cho phép phương trình của chúng tôi phù hợp với các mối quan hệ nâng cao, như đường cong và nhảy đột ngột. Khi thứ tự tăng trong hồi quy đa thức, chúng tôi tăng cơ hội quá mức và tạo ra các mô hình yếu.

Trong khi hầu hết các kỹ sư học máy hoặc các nhà khoa học dữ liệu đã giành được phương trình phía trước, một phương trình đa thức là đơn giản để phát hiện.

Thứ tự của mô hình hồi quy đa thức không đề cập đến tổng số điều khoản; Nó đề cập đến số mũ lớn nhất trong bất kỳ ai trong số họ.

Dưới đây, chúng tôi thấy rằng đây sẽ là mô hình hồi quy đa thức thứ tự n nn order polynomial regression model

y = bo + b1 x + b2 x^2, .. + bn x^n + e

Như chúng ta có thể thấy từ ví dụ này, điều này trông rất giống với mô hình hồi quy tuyến tính đơn giản của chúng ta, bây giờ với thứ tự n.simple linear regression model, now with order n.

Sự cộng tác trong mô hình hồi quy đa thức

Sự cộng tác là một mối tương quan được tìm thấy giữa các biến dự đoán của bạn và mối tương quan này có thể là tích cực hoặc tiêu cực. Nếu sự cộng tác trong mô hình hồi quy đa thức bậc hai của bạn là một mối quan tâm, hãy phù hợp với mô hình với giá trị x và (mẫu X)^2. Điều này có thể khắc phục bất kỳ đa thức bằng cách tăng thuật ngữ bình phương.

Thủ thuật này sẽ làm việc cho bất kỳ đơn đặt hàng nào; Tiếp tục tăng giá trị bình phương để phù hợp với thứ tự của biến hiện tại đó.

Hồi quy đa thức được sử dụng để làm gì?

Hồi quy đa thức được sử dụng tương tự như hồi quy tuyến tính để dự đoán giá trị tại một số điểm. Tuy nhiên, không giống như hồi quy tuyến tính, hồi quy đa thức có thể ước tính các đường cong và mối quan hệ nâng cao hơn giữa các biến độc lập và phụ thuộc được trình bày trong dữ liệu của chúng tôi.

Thực hiện hồi quy đa thức thường có nghĩa là chúng tôi quan tâm đến các mối quan hệ giữa các biến khác nhau trong bộ dữ liệu của chúng tôi và các mối quan hệ mà các biến này tạo ra trên đầu ra của chúng tôi.

Có thể sử dụng hồi quy đa thức cho nhiều biến không?

Hồi quy đa thức có thể được sử dụng cho nhiều biến độc lập, được gọi là hồi quy đa thức đa biến. Các phương trình này thường rất phức tạp nhưng cho chúng ta linh hoạt hơn và độ chính xác cao hơn do sử dụng nhiều biến trong cùng một phương trình.

Nhiều người đã chuyển sang các mô hình phức tạp hơn trong việc học máy để hiểu các mối quan hệ này.

Tuy nhiên, hầu hết các thuật toán này là hộp đen, có nghĩa là một khi các mối quan hệ được tìm thấy, chúng ta sẽ không còn hiểu được mối quan hệ nữa. [1,2]

Phương trình này có thể được trích xuất và hiểu nếu các phương trình phức tạp này được tìm thấy sử dụng nhiều hồi quy tuyến tính hoặc hồi quy đa thức. & NBSP;

Hồi quy đa thức vẫn là một hồi quy tuyến tính?

Hồi quy tuyến tính là một tập hợp con của hồi quy đa thức, vì hồi quy tuyến tính chỉ là hồi quy đa thức theo thứ tự đầu tiên. Điều này có nghĩa là hồi quy tuyến tính vẫn là hồi quy đa thức. Khi bạn ra khỏi thứ tự đầu tiên (như bậc hai), các phương trình này không còn là tuyến tính.

Sự khác biệt giữa hồi quy tuyến tính và hồi quy đa thức là gì?

Sự khác biệt chính giữa hồi quy tuyến tính và hồi quy đa thức là hồi quy đa thức có thể mô hình hóa các mối quan hệ phức tạp, trong khi hồi quy tuyến tính chỉ có thể mô hình hóa các mối quan hệ tuyến tính. Tuy nhiên, hồi quy tuyến tính là một tập hợp con của hồi quy đa thức chỉ với thứ tự một.

Mô hình hồi quy đa thức so với mô hình hồi quy tuyến tính

Trước khi nhảy vào mã, chúng ta cần hiểu khi nào chúng ta sẽ sử dụng từng mô hình.

Để hiểu, hãy xem những dòng khác nhau dưới đây.

Hướng dẫn multivariate polynomial regression python - hồi quy đa thức đa biến python

Trong khi cả hai đều nằm dưới chiếc ô mô hình hồi quy đa thức, chỉ có một là một mối quan hệ tuyến tính.

Như chúng ta có thể thấy từ đường màu xanh, phương trình của chúng ta là 2x.

Đối với mỗi giá trị mà x tăng, y sẽ tăng thêm hai.

Mối quan hệ tuyến tính này sẽ giữ cho bất kỳ giá trị của x.

Đối với dòng màu cam của chúng tôi, chúng tôi nhanh chóng nhìn thấy khi các giá trị X của chúng tôi phát triển ở phía dưới, khoảng cách giữa giá trị X và Y của chúng tôi tăng lên.

Phương trình cho dòng này là 2^x.

Mặc dù các dòng này bằng nhau ở [0,1,2], khi x tăng, độ lệch giữa các dòng này tăng lên.

Điều này là do chức năng đạo hàm này (độ dốc) là 2x.

Mã hồi quy đa thức đa biến đầy đủ mã Python


# make sure to import all of our modules
# sklearn package
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
# dataframes
import pandas as pd
# computation
import numpy as np
# visualization
import matplotlib.pyplot as plt

# dataset
# https://www.kaggle.com/datasets/ciphernine/brooklyn-real-estate-listings
# place it in the same folder as this workbook
df = pd.read_csv('brooklyn_listings.csv')

# for this example, we're going to estimate the price with sqft, bathroom, and bedrooms
df = df[['price','bathrooms','sqft']].dropna()

# show some random lines from our data
print(df.sample(n=15))

Hướng dẫn multivariate polynomial regression python - hồi quy đa thức đa biến python


# seperate out our x and y values
x_values = df[['bathrooms','sqft']].values
y_values = df['price'].values

# visual
print(x_values[0], y_values[0])

Hướng dẫn multivariate polynomial regression python - hồi quy đa thức đa biến python



#define our polynomial model, with whatever degree we want
degree=2

# PolynomialFeatures will create a new matrix consisting of all polynomial combinations 
# of the features with a degree less than or equal to the degree we just gave the model (2)
poly_model = PolynomialFeatures(degree=degree)

# transform out polynomial features
poly_x_values = poly_model.fit_transform(x_values)

# should be in the form [1, a, b, a^2, ab, b^2]
print(f'initial values {x_values[0]}\nMapped to {poly_x_values[0]}')

# [1, a=5, b=2940, a^2=25, 5*2940=14700, b^2=8643600]

Hướng dẫn multivariate polynomial regression python - hồi quy đa thức đa biến python



# let's fit the model
poly_model.fit(poly_x_values, y_values)

# we use linear regression as a base!!! ** sometimes misunderstood **
regression_model = LinearRegression()

regression_model.fit(poly_x_values, y_values)

y_pred = regression_model.predict(poly_x_values)

regression_model.coef_

mean_squared_error(y_values, y_pred, squared=False)


# check our accuracy for each degree, the lower the error the better!
number_degrees = [1,2,3,4,5,6,7]
plt_mean_squared_error = []
for degree in number_degrees:

   poly_model = PolynomialFeatures(degree=degree)
  
   poly_x_values = poly_model.fit_transform(x_values)
   poly_model.fit(poly_x_values, y_values)
  
   regression_model = LinearRegression()
   regression_model.fit(poly_x_values, y_values)
   y_pred = regression_model.predict(poly_x_values)
  
   plt_mean_squared_error.append(mean_squared_error(y_values, y_pred, squared=False))
  
plt.scatter(number_degrees,plt_mean_squared_error, color="green")
plt.plot(number_degrees,plt_mean_squared_error, color="red") 
 

Hướng dẫn multivariate polynomial regression python - hồi quy đa thức đa biến python

Từ trên cao, chúng tôi thấy mô hình của chúng tôi đã làm tốt nhất khi độ của chúng tôi = 3, có nghĩa là một hàm khối đã giúp chúng tôi dự đoán giá nhà ở chính xác nhất.

Hướng dẫn học Python học máy có liên quan

Chúng tôi có rất nhiều hướng dẫn Python học máy bổ sung được xây dựng như thế này.

Điều này sẽ giúp bạn hiểu rõ hơn về học máy và các cách khác nhau mà bạn có thể thực hiện các thuật toán này trong Python.

Liên kết đến các bài viết dưới đây:

  • Ghi nhãn tự động các mô hình chủ đề trong Python: Triển khai Python của thuật toán NLP nổi tiếng, mô hình chủ đề.
  • Chi-vuông trong Python: & nbsp; Một triển khai Python của bài kiểm tra chi bình phương, được sử dụng để độc lập.
  • K chế độ phân cụm trong Python: Một triển khai Python của phân cụm chế độ K, một người bạn thân của K có nghĩa là.
  • K có nghĩa là phân cụm trong Python: Việc triển khai Python của K có nghĩa là phân cụm, một thuật toán học tập không giám sát tuyệt vời.

Các câu hỏi thường gặp

Chúng tôi hiểu rằng hồi quy đa thức đa biến trong Python rất phức tạp.complicated.

Chúng tôi hy vọng các câu trả lời được liệt kê dưới đây sẽ giúp làm rõ mọi khó khăn bạn đang gặp phải.

Như mọi khi, hãy chắc chắn gửi cho chúng tôi một email nếu bạn vẫn còn bất kỳ câu hỏi nào.

Bạn có thể thực hiện hồi quy đa thức với nhiều biến không?

Hồi quy đa thức có thể được sử dụng cho nhiều biến; Điều này được gọi là hồi quy đa thức đa biến. Các phương trình này thường rất phức tạp nhưng cho chúng ta linh hoạt hơn và độ chính xác cao hơn do sử dụng nhiều biến trong cùng một phương trình.

Một đa thức có thể có 3 biến?

Một đa thức có thể có số lượng biến vô hạn. Tiền tố poly có nghĩa là nhiều người khác và phần hậu tố có nghĩa là biến. Điều này ngụ ý một đa thức có thể có 3 biến hoặc nhiều hơn nữa. Nếu có một biến, đây vẫn là một đa thức.

Bạn có thể chạy hồi quy với nhiều biến không?

Hồi quy có thể được chạy với bất kỳ số lượng biến nào, được gọi là hồi quy tuyến tính nhiều và hồi quy đa thức đa biến. Tuy nhiên, để tránh lời nguyền của chiều, số lượng biến không bao giờ nên cao hơn các hàng dữ liệu trong tập huấn luyện.

Điều gì sẽ xảy ra khi bạn phù hợp với đa thức độ 2 trong hồi quy tuyến tính?

Nếu bạn phù hợp với đa thức độ 2 trong hồi quy tuyến tính, bạn sẽ có một mô hình cực kỳ không chính xác. Điều này là do mối quan hệ tuyến tính không thể được mô hình hóa chính xác bằng phương trình bậc hai (đa thức độ 2). Một hồi quy tuyến tính giả định độ 1 trong quá trình lắp.

  • Tác giả
  • Bài viết gần đây

Hướng dẫn multivariate polynomial regression python - hồi quy đa thức đa biến python

Dylan Kaplan có nhiều năm kinh nghiệm với tư cách là một nhà khoa học dữ liệu cao cấp. Ông thích mã hóa và giảng dạy và đã tạo ra trang web này để làm cho mọi người có thể học máy.

Hướng dẫn multivariate polynomial regression python - hồi quy đa thức đa biến python