Hướng dẫn polynomial regression with categorical variables python - hồi quy đa thức với các biến phân loại python

Giả sử tôi có một bộ p=n_features, ở đây được đặt thành 3 biến độc lập, mỗi biến có n=n_samples, không có bất kỳ giá trị bị thiếu nào, xác định ma trận thiết kế của tôi $ x $ như sau:$X$ as follows:

$ X = \ Begin {Bmatrix} x_ {11} & \ Dots & X_ {1p} \\ \ Vdots & Đối với bộ dữ liệu của tôi với các tính năng

idx blue green red
0   1    0     0
1   0    1     0
2   0    1     0
3   0    0     1
0:
For my dataset with
idx blue green red
0   1    0     0
1   0    1     0
2   0    1     0
3   0    0     1
0 features:

$ X = \ left [\ vec {x_1}, \ \ vec {x_2}, \ \ vec {x_3} \ right] $

Các biến của các loại sau:

  • $ y $, biến phụ thuộc: Biến số liên tục, the dependent variable: continuous numeric variable
  • $ x_1 $ và $ x_2 $: Các biến số liên tục, với các phạm vi giá trị khác nhau yêu cầu tiêu chuẩn hóa/tỷ lệ do chính quy hóa L1/L2 and $x_2$: continuous numeric variables, with different value ranges requiring standardization/scaling due to l1/l2 regularization
  • $ x_3 $: Biến số phân loại với 3 cấp $ \ trái [0,1,2 \ right] $, yêu cầu mã hóa giả/một mã hóa nóng thành $ k-1 = 2 $ các biến giả nhị phân: categorical numeric variable with the 3 levels $\left[0,1,2\right]$, requiring dummy coding/one hot encoding into $k-1=2$ binary dummy variables

Tôi muốn đưa bộ dữ liệu này vào hồi quy đa thức ở mức độ thứ hai với các điều khoản tương tác [cũng được áp dụng chính quy], có nghĩa là mô hình tuyến tính của tôi phù hợp với dạng sau:polynomial regression of second degree with interaction terms [also regularization is applied], meaning my linear model to fit is of the following form:

$ y = C + C_1X_1 + C_2X_2 + C_3X_3 + C_4X_1X_2 + C_5X_1X_3 + C_6X_2X_3 + C_7X_1^2 + C_8X_2^2

Với chặn $ C $, các hệ số $ C_1 \ DOTS C_9 $ và lỗi $ \ vec {\ epsilon} $. Một phép biến đổi đa thức của ma trận thiết kế mang lại ma trận thiết kế đã biến đổi $ x^*$: $ x^*= \ left [\ vec {x_1^*}, \ \ vec {x_2^*}, \ \ \ vec {x_3^** }, \ \ vec {x_4^*}, \ \ vec {x_5^*}, \ \ vec {x_6^*}, \ \ vec {x_7^*}, \ \ vec {x_9^*} \ Right] $ với $ \ vec {x_1^*} = \ vec {x_1}, \ tứ giác .$c$, the coefficients $c_1\dots c_9$ and the error $\vec{\epsilon}$.
A polynomial transformation of the design matrix yields the transformed design matrix $X^*$:
$X^*=\left[\vec{x_1^*},\ \vec{x_2^*},\ \vec{x_3^*},\ \vec{x_4^*},\ \vec{x_5^*},\ \vec{x_6^*},\ \vec{x_7^*},\ \vec{x_8^*},\ \vec{x_9^*}\right]$
with $\vec{x_1^*}=\vec{x_1},\quad \dots,\quad \vec{x_4^*}=\vec{x_1}\vec{x_2},\quad \vec{x_5^*}=\vec{x_1}\vec{x_3},\quad \dots \vec{x_9^*}=\vec{x_3^2}$

Mô tả vấn đề

Bây giờ chúng tôi có các thuật ngữ tương tác giữa các biến liên tục và phân loại, cụ thể là $ C_5X_1X_3 $ và $ C_6X_2X_3 $. Mã hóa của biến phân loại vẫn chưa được thực hiện! [Các thuật ngữ đa thức hơn nếu được thực hiện trước khi chuyển đổi.] Tiêu chuẩn hóa cont. độc lập. Các biến vẫn cần phải được thực hiện! Có một mô hình chỉ bao gồm các biến liên tục, tôi sẽ chuẩn hóa sau poly. Chuyển đổi trong hầu hết các trường hợp. Trong trường hợp này, với các loại hỗn hợp độc lập. Các biến, tôi sẽ chuẩn hóa các biến liên tục và mã giả các biến phân loại trước khi chuyển đổi đa thức.interaction terms between continuous and categorical variables, namely $c_5x_1x_3$ and $c_6x_2x_3$.
Dummy coding of the categoric variable has not yet been performed! [More polynomial terms if done before transformation.]
Standardization of the cont. indep. variables still needs to be done!
Having a model only consisting of continuous variables, I'd standardize after poly. transformation in most cases. In this case, with mixed types of indep. variables, I'd standardize the continuous variables and dummy code the categorical variables before polynomial transformation.

Câu hỏi

  1. Tôi có nên chuẩn hóa và mã giả sau khi chuyển đổi đa thức không?
  2. Nếu có, làm thế nào để đối phó với các điều khoản tương tác của các biến phân loại và liên tục?
  3. Nếu có, các nhược điểm nghiêm trọng như thế nào được giới thiệu với mã hóa tiêu chuẩn hóa/giả trước poly. Chuyển.?
  4. Nói chung: Cách tránh các dấu hiệu xen kẽ [tạo ra các giá trị âm "ngẫu nhiên"] bằng cách trừ trung bình và nhân cho các thuật ngữ tương tác [F.I. $ x_1x_2 $ trong đó cả $ x_1 $ và $ x_2 $ là dương trước khi tiêu chuẩn hóa, nhưng sau đó $ x_1 $ là phủ định]? Chỉ cần chia tỷ lệ theo độ lệch chuẩn $ \ sigma $ [và có thể là quy mô tối thiểu sau đó]?$x_1x_2$ where both $x_1$ and $x_2$ were positive before standardization, but afterwards $x_1$ is negative]? Just scale by the standard deviation $\sigma$ [and possibly min-max-scale afterwards]?

Có, bạn sẽ phải chuyển đổi mọi thứ thành số. Điều đó đòi hỏi suy nghĩ về những gì các thuộc tính này đại diện.

Thường có ba khả năng:

  1. Mã hóa một lần cho dữ liệu phân loại
  2. Số tùy ý cho dữ liệu thứ tự
  3. Sử dụng một cái gì đó giống như nhóm có nghĩa là cho dữ liệu phân loại [e. G. Giá trung bình cho các quận thành phố].

Bạn phải cẩn thận để không truyền thông tin bạn không có trong trường hợp ứng dụng.

Một mã hóa nóng

Nếu bạn có dữ liệu phân loại, bạn có thể tạo các biến giả với các giá trị 0/1 cho mỗi giá trị có thể.

Ví dụ.

idx color
0   blue
1   green
2   green
3   red

đến

idx blue green red
0   1    0     0
1   0    1     0
2   0    1     0
3   0    0     1

Điều này có thể dễ dàng được thực hiện với gấu trúc:

import pandas as pd

data = pd.DataFrame[{'color': ['blue', 'green', 'green', 'red']}]
print[pd.get_dummies[data]]

sẽ cho kết quả:

   color_blue  color_green  color_red
0           1            0          0
1           0            1          0
2           0            1          0
3           0            0          1

Số cho dữ liệu thứ tự

Tạo một ánh xạ của các danh mục có thể sắp xếp của bạn, e. g. cũ

Bài Viết Liên Quan

Chủ Đề