Đường cong đa thức phù hợp với Python

Hồi quy đa thức là một mô hình học máy được sử dụng để mô hình hóa các mối quan hệ phi tuyến tính giữa các biến phụ thuộc và biến độc lập

Bắt đầu với hồi quy đa thức trong Python

Ví dụ về các trường hợp có thể sử dụng hồi quy đa thức bao gồm mô hình hóa tăng trưởng dân số, sự lây lan của bệnh tật và dịch bệnh

Mục lục

  • Bắt đầu với hồi quy đa thức trong Python
  • Mục lục
  • điều kiện tiên quyết
  • Giới thiệu về hồi quy đa thức
  • Khớp đường cong đa thức
    • Lấy $\textbf w$
  • Thực hiện mô hình hồi quy đa thức
  • Bước 1. Nhập thư viện
  • Bước 2. Nhập tập dữ liệu
  • Bước 3. Đào tạo mô hình hồi quy tuyến tính trên toàn bộ tập dữ liệu
  • Bước 4. Đào tạo mô hình hồi quy đa thức trên toàn bộ tập dữ liệu
  • Bước 5. Trực quan hóa kết quả hồi quy tuyến tính
  • Bước 6. Hiển thị kết quả hồi quy đa thức
  • Bước 7. Hiển thị kết quả hồi quy đa thức [để có độ phân giải cao hơn và đường cong mượt mà hơn]
  • Bước 8. Dự đoán kết quả mới với Hồi quy tuyến tính
  • Bước 9. Dự đoán kết quả mới với Hồi quy đa thức
  • Sự kết luận

điều kiện tiên quyết

Hiểu biết chung về Python và Mô hình hồi quy tuyến tính sẽ giúp ích cho người đọc trong quá trình theo dõi

Giới thiệu về hồi quy đa thức

Giả sử chúng ta muốn dự đoán giá trị của biến mục tiêu có giá trị thực $y$ bằng cách sử dụng đầu vào có giá trị thực của biến quan sát $x$. Giả sử tập huấn luyện của chúng ta bao gồm N ví dụ huấn luyện, với $\textbf x$ là biến đặc trưng được viết $\textbf{x} ≡ [x_1 ,. . . , x_N ]^T$ và một biến mục tiêu tương ứng $y$ được cho dưới dạng, $\textbf{ y} ≡ [y_1 ,. . . , y_N ]^T$ với N = 10

Bây giờ, giả sử chúng ta khớp một đường cong đa thức trên dữ liệu này

Đường cong thu được sẽ trông giống như trong hình bên dưới

Thông thường, khi khớp một đường cong, mục tiêu là khai thác tập huấn luyện và tìm hiểu các quy tắc cơ bản của dữ liệu để dự đoán các giá trị biến mục tiêu trên các giá trị mới của biến đầu vào $x$. Nhiệm vụ chung ở đây là khám phá chức năng cơ bản mà từ đó dữ liệu huấn luyện được tạo ra

Để tìm hàm này, chúng ta cần tổng quát hóa dữ liệu hữu hạn của tập huấn luyện một cách tối ưu. Tuy nhiên, tập huấn luyện thường bị hỏng với nhiễu ngẫu nhiên. Tình hình này đặt ra một thách thức

Để có sự tổng quát hóa hợp lệ của dữ liệu, chúng ta cần giảm thiểu nhiễu này. Tiếng ồn ở đây không là gì ngoài sự không chắc chắn liên quan đến giá trị thực của $y$ mà chúng tôi đang cố gắng dự đoán bằng cách sử dụng giá trị đầu vào $x$

Khớp đường cong đa thức

Hàm đa thức chúng ta sử dụng để điều chỉnh dữ liệu có dạng

$y[x,\textbf{w}]=w_0 + w_1x + w_2x^2 + ,. . . ,+ w_Mx^M=\sum_{j=0}^{M} w_jx^j$

Ở đâu;

  • $M$ là bậc của đa thức
  • $x^j$ là biến đầu vào $x$ được nâng lên lũy thừa $j$
  • $\textbf{w}=w_0 ,. \. \. , w_M$ biểu thị một vectơ trọng số

Từ giả thuyết đa thức ở trên, chúng ta lưu ý rằng hàm $y[x, \textbf w]$ này là một hàm phi tuyến tính của $x$. Tuy nhiên, hàm này là một hàm tuyến tính của trọng số $\textbf w$. Các hàm phi tuyến tính trong biến đầu vào nhưng tuyến tính trong tập tham số chưa biết là hàm tuyến tính và thuộc lớp mô hình tuyến tính. Do đó, hồi quy đa thức là một mô hình tuyến tính

Bây giờ nhiệm vụ là xác định giá trị của $\textbf w$ và $M$

Lấy $\textbf w$

Để xác định giá trị của các hệ số, trước tiên chúng ta khớp một đa thức vào tập dữ liệu huấn luyện. Sau đó, chúng tôi tìm thấy chức năng lỗi, tôi. e. , $E[\textbf w]$, đo lường sự không phù hợp giữa đường cong phù hợp $y[x, \textbf w]$ và các điểm dữ liệu của tập huấn luyện

Một trong những hàm báo lỗi được sử dụng nhiều nhất trong học máy là tổng bình phương các lỗi giữa các dự đoán $y[x_n, \textbf w]$ và các giá trị mục tiêu tương ứng cho mỗi điểm $x_n$ $y_n$ trong dữ liệu

Hàm lỗi này có dạng

$E[\textbf w]=\frac{1}{2}\sum [ {y[x_n , w] − y_n } ]^2$

Ở đâu

  • Hệ số 1/2 được giới thiệu để thuận tiện sau này
  • $y[x_n, w]$ là giá trị dự đoán từ mô hình
  • $y_n$ là giá trị thực của biến đầu vào

Điểm hay của hàm lỗi này là nó không âm và nó chỉ có thể bằng 0 và chỉ khi hàm $y[x, \textbf w]$ đi chính xác qua từng điểm của tập huấn luyện

Để giải quyết vấn đề khớp đường cong, chúng ta chọn giá trị của $\textbf w$ sao cho $E[\textbf w]$ được giảm thiểu càng nhỏ càng tốt. Vì hàm lỗi là bậc hai, nên chúng ta có thể giải quyết nó bằng các kỹ thuật như Bình phương nhỏ nhất hoặc trình tối ưu hóa giảm dần độ dốc

Do đó, chúng tôi thu được tập tham số tối ưu $\textbf w$ mà $E[\textbf w]$ được giảm thiểu càng nhỏ càng tốt. Tập hợp các giải pháp duy nhất cho $\textbf w$ mà chúng tôi thu được thông qua việc giảm thiểu hàm lỗi được ký hiệu là $\textbf w^\star$. Từ đó, chúng tôi biểu diễn hàm đa thức của chúng tôi là. $$y[x,\textbf w^\star]$$

Cuộc thảo luận duy nhất còn lại của chúng tôi bây giờ là cách chúng tôi chọn giá trị của $M$ cho hàm đa thức của chúng tôi. Việc chọn giá trị $M$ là một vấn đề dẫn đến việc so sánh mô hình hoặc lựa chọn mô hình. Hóa ra việc đặt giá trị $M$ quá nhỏ có thể không phù hợp với mô hình của chúng tôi và đặt giá trị quá lớn có thể dẫn đến vấn đề quá khớp

Do đó, việc khái quát hóa dữ liệu kém trong cả hai trường hợp. Vì vậy, với mục tiêu là đạt được sự tổng quát hóa tốt, chúng ta cần chọn giá trị $M$ giúp tổng quát hóa mô hình tốt hơn. Bây giờ chúng ta đã biết Hồi quy đa thức là gì, hãy sử dụng kiến ​​thức này và phát triển một mô hình dự đoán

Thực hiện mô hình hồi quy đa thức

Tập dữ liệu chúng tôi sẽ sử dụng trong hướng dẫn này có thể được lấy từ đây. Nhiệm vụ của chúng ta trong phần triển khai này là dự đoán mức lương của một thành viên trong nhóm tùy theo cấp bậc của họ trong công ty

Để làm cho phần này thú vị hơn, chúng ta sẽ làm việc cùng với cả hồi quy tuyến tính và hồi quy đa thức để biết khi nào nên chọn mô hình hồi quy đa thức thay vì mô hình hồi quy tuyến tính

Để bắt đầu, chúng tôi nhập các thư viện cần thiết cho phiên này và tải tập dữ liệu

Bước 1. Nhập thư viện

Chúng tôi nhập các thư viện sau

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

Bước 2. Nhập tập dữ liệu

Trong bước này, chúng tôi nhập tập dữ liệu và tạo một khung dữ liệu

dataset = pd.read_csv['/content/drive/MyDrive/Position_Salaries.csv'] # read the dataset
dataset

Mã này in tập dữ liệu sau

Bộ dữ liệu này chứa thông tin về cách nhân viên của một công ty cụ thể được trả lương

Bộ dữ liệu chứa các thông tin sau

  • vị trí cấp bậc. Trình độ của các thành viên trong nhóm trong công ty đó. Có mười cấp vị trí nói chung
  • Lương. Lương của một thành viên trong nhóm. Đối với các cấp độ khác nhau, có sự khác biệt đáng kể về mức lương. Vì vậy, chúng ta cần tìm cách khái quát hóa dữ liệu
  • Tách dữ liệu thành các tính năng và nhãn

X = dataset.iloc[:, 1:-1].values # extracts features from the dataset
y = dataset.iloc[:, -1].values # extracts the labels from the dataset

Bước 3. Đào tạo mô hình hồi quy tuyến tính trên toàn bộ tập dữ liệu

Ở bước này, chúng ta sẽ huấn luyện mô hình hồi quy tuyến tính trên toàn bộ tập dữ liệu. Mã dưới đây giải thích làm thế nào điều này được thực hiện

from sklearn.linear_model import LinearRegression # import the Linear Regression model
lin_reg = LinearRegression[] # creat model object
lin_reg.fit[X, y] # fits the model to the training data

đầu ra

LinearRegression[copy_X=True, fit_intercept=True, n_jobs=None, normalize=False]

Đầu ra cho biết mô hình hồi quy tuyến tính đã được đào tạo trên toàn bộ tập dữ liệu

Bước 4. Đào tạo mô hình hồi quy đa thức trên toàn bộ tập dữ liệu

Ở bước này, chúng ta sẽ huấn luyện mô hình hồi quy đa thức trên toàn bộ tập dữ liệu. Mã dưới đây giải thích làm thế nào điều này được thực hiện

from sklearn.preprocessing import PolynomialFeatures # importing a class for Polynomial Regression
poly_regr = PolynomialFeatures[degree = 4] # our polynomial model is of order
X_poly = poly_regr.fit_transform[X] # transforms the features to the polynomial form
lin_reg_2 = LinearRegression[] # creates a linear regression object
lin_reg_2.fit[X_poly, y] # fits the linear regression object to the polynomial features

đầu ra

LinearRegression[copy_X=True, fit_intercept=True, n_jobs=None, normalize=False]

Đầu ra cho biết mô hình hồi quy đa thức đã được đào tạo trên toàn bộ tập dữ liệu

Bước 5. Trực quan hóa kết quả hồi quy tuyến tính

Trong bước này, chúng ta sẽ vẽ kết quả hồi quy tuyến tính. Để trực quan hóa kết quả của mô hình này, hãy thực thi đoạn mã sau

plt.scatter[X, y, color = 'red'] # plotting the training set
plt.plot[X, lin_reg.predict[X], color = 'blue'] # plotting the linear regression line
plt.title['Truth or Bluff [Linear Regression]'] # adding a tittle to our plot
plt.xlabel['Position Level'] # adds a label to the x-axis
plt.ylabel['Salary'] # adds a label to the y-axis
plt.show[] # prints our plot

Đoạn mã trên vẽ sơ đồ dữ liệu và khớp với mô hình hồi quy tuyến tính trên đó, như hình bên dưới

Như đã thấy từ biểu đồ trên, mô hình hồi quy tuyến tính không phù hợp với dữ liệu

Bước 6. Hiển thị kết quả hồi quy đa thức

Để trực quan hóa kết quả hồi quy đa thức, hãy thực thi mã bên dưới

________số 8

Đoạn mã trên vẽ sơ đồ dữ liệu và khớp với mô hình hồi quy đa thức trên đó, như hình bên dưới

Bước 7. Trực quan hóa kết quả hồi quy đa thức [cho độ phân giải cao hơn và đường cong mượt mà hơn]

Trong bước này, chúng tôi vẽ biểu đồ kết quả hồi quy đa thức ở độ phân giải cao hơn [100 điểm trên mỗi trục] để có được đường cong mượt mà hơn. Để trực quan hóa kết quả của mô hình này, hãy thực thi đoạn mã sau

X_grid = np.arange[min[X], max[X], 0.1] # choice of 0.1 instead of 0.01 to make the graph smoother
X_grid = X_grid.reshape[[len[X_grid], 1]] # reshapes the array to be a matrix
plt.scatter[X, y, color = 'red'] # plots the training set
plt.plot[X_grid, lin_reg_2.predict[poly_reg.fit_transform[X_grid]], color = 'blue'] # plots a polynomial regression line
plt.title['Truth or Bluff [Polynomial Regression]'] # adds tittle to the plot
plt.xlabel['Position level'] # adds label to the x-axis
plt.ylabel['Salary'] # adds label to the y-axis
plt.show[] # prints our plot

Đoạn mã trên mang lại âm mưu bên dưới

Bước 8. Một dự đoán kết quả mới với hồi quy tuyến tính

Ở đây, chúng tôi dự đoán một đầu ra mới với mô hình hồi quy tuyến tính. Hãy thực thi mã bên dưới và xem đầu ra

dataset = pd.read_csv['/content/drive/MyDrive/Position_Salaries.csv'] # read the dataset
dataset
0

Khi thực thi đoạn mã trên, đầu ra sẽ là

dataset = pd.read_csv['/content/drive/MyDrive/Position_Salaries.csv'] # read the dataset
dataset
1

Biến $X=6. 5$ là chính xác giữa $X=6$ và $X=7$. Do đó, chúng tôi hy vọng mô hình dự đoán giá trị tiền lương trong khoảng từ 150000 đến 200000. Với hồi quy tuyến tính, đây không phải là trường hợp

Nó vượt quá mức lương mong đợi thực tế gần hai lần. Điều này chỉ ra rằng hồi quy tuyến tính không phù hợp cho vấn đề này

Bước 9. Một dự đoán kết quả mới với hồi quy đa thức

Ở đây, chúng tôi dự đoán một đầu ra mới với mô hình hồi quy đa thức. Hãy thực thi mã bên dưới và xem đầu ra

dataset = pd.read_csv['/content/drive/MyDrive/Position_Salaries.csv'] # read the dataset
dataset
2

dataset = pd.read_csv['/content/drive/MyDrive/Position_Salaries.csv'] # read the dataset
dataset
3

Thực thi đoạn mã trên trả về mức lương dự đoán là 158862. 45265155. Giá trị này nằm trong phạm vi kỳ vọng của chúng tôi và do đó chúng tôi có thể kết luận hồi quy đa thức là phù hợp cho vấn đề này

Sự kết luận

Trong buổi học này, chúng ta đã học được những kiến ​​thức về hồi quy đa thức. Cụ thể, chúng ta đã học cách lấy một tập tham số tối ưu từ hàm sai số và tránh trang bị thiếu và trang bị thừa trong hồi quy đa thức

Sau đó, chúng tôi đã triển khai mô hình này trên một tập dữ liệu thực và chúng tôi có thể trực quan hóa biểu đồ của nó và sử dụng nó để đưa ra dự đoán. Tôi hy vọng phiên này hữu ích và giờ đây chúng ta có thể áp dụng kiến ​​thức này một cách thoải mái cho các bộ dữ liệu khác

Làm thế nào đa thức được sử dụng trong khớp đường cong?

Điều chỉnh đường cong đa thức là khi chúng ta khớp dữ liệu của mình với đồ thị của hàm đa thức . Phương pháp bình phương nhỏ nhất tương tự có thể được sử dụng để tìm đa thức, ở một bậc nhất định, có tổng sai số nhỏ nhất.

NP Polyfit trong Python là gì?

Trong python, Numpy polyfit[] là một phương thức phù hợp với dữ liệu trong một hàm đa thức . Nghĩa là, nó bình phương nhỏ nhất hàm phù hợp với đa thức. Ví dụ, một đa thức p[X] độ deg phù hợp với các điểm tọa độ [X, Y].

Polyfit trả về Python là gì?

polyfit sẽ chỉ trả về một phương trình đi qua tất cả các điểm [giả sử bạn có N] nếu bậc của đa thức ít nhất là N-1. Otherwise, it will return a best fit that minimises the squared error.

Chủ Đề