Scikit Learn - Mô hình tuyến tính mở rộng
Chương này tập trung vào các tính năng đa thức và các công cụ pipelining trong Sklearn.
Giới thiệu về các tính năng đa thức
Các mô hình tuyến tính được đào tạo về các hàm phi tuyến tính của dữ liệu thường duy trì hiệu suất nhanh chóng của các phương pháp tuyến tính. Nó cũng cho phép chúng phù hợp với nhiều loại dữ liệu hơn. Đó là lý do trong học máy, các mô hình tuyến tính được đào tạo về các hàm phi tuyến được sử dụng.
Một ví dụ như vậy là một hồi quy tuyến tính đơn giản có thể được mở rộng bằng cách xây dựng các đặc trưng đa thức từ các hệ số.
Về mặt toán học, giả sử chúng ta có mô hình hồi quy tuyến tính tiêu chuẩn thì đối với dữ liệu 2-D, nó sẽ giống như sau:
$$ Y = W_ {0} + W_ {1} X_ {1} + W_ {2} X_ {2} $$Bây giờ, chúng ta có thể kết hợp các tính năng trong đa thức bậc hai và mô hình của chúng ta sẽ giống như sau:
$$ Y = W_ {0} + W_ {1} X_ {1} + W_ {2} X_ {2} + W_ {3} X_ {1} X_ {2} + W_ {4} X_1 ^ 2 + W_ { 5} X_2 ^ 2 $$Trên đây vẫn là mô hình tuyến tính. Ở đây, chúng ta thấy rằng hồi quy đa thức thu được nằm trong cùng một lớp mô hình tuyến tính và có thể được giải quyết tương tự.
Để làm như vậy, scikit-learning cung cấp một mô-đun có tên PolynomialFeatures. Mô-đun này biến đổi ma trận dữ liệu đầu vào thành ma trận dữ liệu mới có mức độ nhất định.
Thông số
Bảng theo dõi bao gồm các thông số được sử dụng bởi PolynomialFeatures mô-đun
Sr.No | Mô tả về Thông Số |
---|---|
1 | degree - số nguyên, mặc định = 2 Nó đại diện cho mức độ của các đối tượng đa thức. |
2 | interaction_only - Boolean, default = false Theo mặc định, nó là false nhưng nếu được đặt là true, các đối tượng địa lý là sản phẩm của hầu hết các tính năng đầu vào khác biệt ở mức độ khác nhau, sẽ được tạo ra. Các tính năng như vậy được gọi là tính năng tương tác. |
3 | include_bias - Boolean, default = true Nó bao gồm một cột thiên vị tức là tính năng trong đó tất cả các lũy thừa của đa thức đều bằng không. |
4 | order - str trong {'C', 'F'}, default = 'C' Tham số này đại diện cho thứ tự của mảng đầu ra trong trường hợp dày đặc. Lệnh 'F' có nghĩa là tính toán nhanh hơn nhưng mặt khác, nó có thể làm chậm các trình ước tính tiếp theo. |
Thuộc tính
Bảng theo dõi bao gồm các thuộc tính được sử dụng bởi PolynomialFeatures mô-đun
Sr.No | Thuộc tính & Mô tả |
---|---|
1 | powers_ - mảng, hình dạng (n_output_features, n_input_features) Nó cho thấy powers_ [i, j] là số mũ của đầu vào thứ j trong đầu ra thứ i. |
2 | n_input_features _ - int Như tên cho thấy, nó cung cấp tổng số tính năng đầu vào. |
3 | n_output_features _ - int Như tên cho thấy, nó cung cấp tổng số các tính năng đầu ra đa thức. |
Ví dụ triển khai
Sử dụng script Python sau PolynomialFeatures biến áp để biến đổi mảng 8 thành hình dạng (4,2) -
from sklearn.preprocessing import PolynomialFeatures
import numpy as np
Y = np.arange(8).reshape(4, 2)
poly = PolynomialFeatures(degree=2)
poly.fit_transform(Y)
Đầu ra
array(
[
[ 1., 0., 1., 0., 0., 1.],
[ 1., 2., 3., 4., 6., 9.],
[ 1., 4., 5., 16., 20., 25.],
[ 1., 6., 7., 36., 42., 49.]
]
)
Hợp lý hóa bằng các công cụ Pipeline
Loại tiền xử lý ở trên tức là biến đổi ma trận dữ liệu đầu vào thành ma trận dữ liệu mới ở mức độ nhất định, có thể được sắp xếp hợp lý với Pipeline các công cụ về cơ bản được sử dụng để xâu chuỗi nhiều công cụ ước tính thành một.
Thí dụ
Các tập lệnh python dưới đây sử dụng các công cụ Pipeline của Scikit-learning để hợp lý hóa quá trình tiền xử lý (sẽ phù hợp với dữ liệu đa thức bậc 3).
#First, import the necessary packages.
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
from sklearn.pipeline import Pipeline
import numpy as np
#Next, create an object of Pipeline tool
Stream_model = Pipeline([('poly', PolynomialFeatures(degree=3)), ('linear', LinearRegression(fit_intercept=False))])
#Provide the size of array and order of polynomial data to fit the model.
x = np.arange(5)
y = 3 - 2 * x + x ** 2 - x ** 3
Stream_model = model.fit(x[:, np.newaxis], y)
#Calculate the input polynomial coefficients.
Stream_model.named_steps['linear'].coef_
Đầu ra
array([ 3., -2., 1., -1.])
Kết quả trên cho thấy rằng mô hình tuyến tính được đào tạo về các đặc trưng của đa thức có thể khôi phục các hệ số đa thức đầu vào chính xác.