다항식 회귀 분석에 scikit-learn을 사용하려고합니다. 다항식 회귀를 읽는 것에서 선형 회귀의 특별한 경우가 있습니다. scikit의 일반 선형 모델 중 하나가 고차 다항식에 맞게 매개 변수화 될 수 있기를 바랐지만 그렇게 할 수있는 옵션이 없습니다.
폴리 커널과 함께 Support Vector Regressor를 사용했습니다. 그것은 내 데이터의 하위 집합과 잘 작동하지만 더 큰 데이터 세트에 맞추는 데 시간이 오래 걸리므로 더 정밀하게 거래하더라도 더 빠른 것을 찾아야합니다.
여기에 명백한 것이 빠져 있습니까?
답변
data , 열 벡터 및 에 목표 벡터가 있으면 다항식을 추가하여 다항식 회귀를 수행 할 수 있습니다 . 예를 들어y x
xy
x
선형 회귀 분석에서이 벡터 만 사용하면 모델이 내포됩니다.
회귀에 다항식을 추가하는 것을 나타내는 위의 벡터의 거듭 제곱 인 열을 추가 할 수 있습니다. 아래에서 우리는 3의 최대 다항식에 대해 이것을 보여줍니다.
이것은 우리가 sklearn의 선형 회귀에 사용하는 새로운 데이터 매트릭스이며 모델을 나타냅니다.
sklearn이 자동으로 이것을 포함하기 때문에 상수 벡터 추가하지 않았습니다 .
1답변
이론
다항식 회귀는 선형 회귀의 특수한 경우입니다. 기능 선택 방법에 대한 주요 아이디어 변수가 2 개인 다변량 회귀 분석 : x1
및 x2
. 선형 회귀는 다음과 같습니다.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_)
답변
단 변량 회귀가 아닌 다변량 회귀를 사용하는 경우 교차 항을 잊지 마십시오. 예를 들어 및 변수가 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 2
x1x2
y=a1x1+a2x2+a3x12+a4x22+a5x1x2
a5x1x2