scikit-learn을 사용한 다항식 회귀


29

다항식 회귀 분석에 scikit-learn을 사용하려고합니다. 다항식 회귀를 읽는 것에서 선형 회귀의 특별한 경우가 있습니다. scikit의 일반 선형 모델 중 하나가 고차 다항식에 맞게 매개 변수화 될 수 있기를 바랐지만 그렇게 할 수있는 옵션이 없습니다.

폴리 커널과 함께 Support Vector Regressor를 사용했습니다. 그것은 내 데이터의 하위 집합과 잘 작동하지만 더 큰 데이터 세트에 맞추는 데 시간이 오래 걸리므로 더 정밀하게 거래하더라도 더 빠른 것을 찾아야합니다.

여기에 명백한 것이 빠져 있습니까?

답변:


25

data , 열 벡터 및 에 목표 벡터가 있으면 다항식을 추가하여 다항식 회귀를 수행 할 수 있습니다 . 예를 들어y xxyx

x=[2113]

선형 회귀 분석에서이 벡터 만 사용하면 모델이 내포됩니다.

y=α1x

회귀에 다항식을 추가하는 것을 나타내는 위의 벡터의 거듭 제곱 인 열을 추가 할 수 있습니다. 아래에서 우리는 3의 최대 다항식에 대해 이것을 보여줍니다.

X=[24811113132133]

이것은 우리가 sklearn의 선형 회귀에 사용하는 새로운 데이터 매트릭스이며 모델을 나타냅니다.

y=α1x+α2x2+α3x3

sklearn이 자동으로 이것을 포함하기 때문에 상수 벡터 추가하지 않았습니다 .1


26

이론

다항식 회귀는 선형 회귀의 특수한 경우입니다. 기능 선택 방법에 대한 주요 아이디어 변수가 2 개인 다변량 회귀 분석 : x1x2. 선형 회귀는 다음과 같습니다.y = a1 * x1 + a2 * x2.

이제 다항식 회귀 분석을 원합니다 (2도 다항식을 만들어 봅시다). 우리는 몇 가지 추가 기능을 만드는 것 x1*x2, x1^2하고 x2^2. 그래서 우리는 당신의 '선형 회귀'를 얻을 것입니다 :

y = a1 * x1 + a2 * x2 + a3 * x1*x2 + a4 * x1^2 + a5 * x2^2

이것은 다차원 의 정도가 증가함에 따라 새로운 기능의 수가 선형보다 훨씬 빠르게 증가하기 때문에 차원 의 중요한 개념 저주를 잘 보여줍니다 . 여기서이 개념에 대해 살펴볼 수 있습니다 .

scikit-learn으로 연습

scikit에서이 모든 것을 수행 할 필요는 없습니다. 다항식 회귀 분석 은 이미 0.15 버전 에서 사용할 수 있습니다 . 여기에서 업데이트 방법을 확인 하십시오 .

from sklearn.preprocessing import PolynomialFeatures
from sklearn import linear_model

X = [[0.44, 0.68], [0.99, 0.23]]
vector = [109.85, 155.72]
predict= [[0.49, 0.18]]
#Edit: added second square bracket above to fix the ValueError problem

poly = PolynomialFeatures(degree=2)
X_ = poly.fit_transform(X)
predict_ = poly.fit_transform(predict)

clf = linear_model.LinearRegression()
clf.fit(X_, vector)
print clf.predict(predict_)

1
x1 * x2와 같은 교호 작용 항을 갖지 않으려면 X_를 수동으로 구성해야합니까? PolynomialFeatures () 생성자에는 "interaction_only"매개 변수가 있으며 기본적으로 False입니다. 그러나 True로 설정하면 내가 원하는 것과 반대가됩니다. 상호 작용
항만

YouTube 링크는 동영상이 더 이상 존재하지 않는다고 주장합니다. 다른 링크가 있습니까?
Markon

@Markon이 목록의 모든 비디오는 충분합니다. youtube.com/results?search_query=curse+of+dimensionality
Salvador Dali

차원 축소를위한
@SalvadorDali

적용 전후에 데이터를 중앙에 배치해야하는지 궁금합니다 PolynomialFeatures.
renakre

2

단 변량 회귀가 아닌 다변량 회귀를 사용하는 경우 교차 항을 잊지 마십시오. 예를 들어 및 변수가 2 다항식을 2의 거듭 제곱으로하려면 여기서 마지막 항 ( )은 에 대해 말하다.x 2 y = a 1 x 1 + a 2 x 2 + a 3 x 2 1 + a 4 x 2 2 + a 5 x 1 x 2 a 5 x 1 x 2x1x2y=a1x1+a2x2+a3x12+a4x22+a5x1x2a5x1x2

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.