2017-10-05 25 views
2

제가 알고 있듯이, Scikit에서 벡터 회귀를 지원하는 것은 그 정도를위한 정수를 취합니다. 그러나, 저차 다항식을 고려하지 않은 것처럼 보입니다. 다음 예제의 실행Scikit에서 혼합 다항식을 찾는 것은 벡터 회귀를 지원합니다.

:

import numpy 
from sklearn.svm import SVR 
X = np.sort(5 * np.random.rand(40, 1), axis=0) 
Y=(2*X-.75*X**2).ravel() 
Y[::5] += 3 * (0.5 - np.random.rand(8)) 
svr_poly = SVR(kernel='poly', C=1e3, degree=2) 
y_poly = svr_poly.fit(X, Y).predict(X) 

(복사 약간 http://scikit-learn.org/stable/auto_examples/svm/plot_svm_regression.html 여기에서 수정 된) 데이터 라인 (5)을 생략하여도 임의의 에러가 주어 약간 나쁨 착용감 (범 플로팅

Y 값으로).

낮은 차수의 용어는 고려되지 않은 것처럼 보입니다. degree 매개 변수에 대해 [1, 2] 목록을 전달하려고 시도했지만 그 다음에 predict 명령에 대한 오류가 발생했습니다. 그들을 포함시킬 방법이 있습니까? 나는 명백한 것을 놓쳤는가?

+0

당신은 1000 페널티 C를 설정할 수 있습니다. 1 이하로 설정해보십시오. – chrisckwong821

+0

도움이 되긴하지만 저급 용어가 어느 정도 고려되는지에 대한 일반적인 질문은 해결되지 않습니다. – Eulenfuchswiesel

+0

이 댓글은 https://stats.stackexchange.com/questions/152610/extremly-poor-polynomial-fitting-with-svr-in-sklearn은 매우 유용합니다. 그러나 더 낮은 주문 조건이 포함되어 있는지 여부는 알 수 없습니다. – Eulenfuchswiesel

답변

2

더 낮은 차수의 다항식 항은 맞는 모델에 포함되어 있지만 Cepsilon 매개 변수가 데이터에 적합하지 않기 때문에 플롯에서 볼 수 없습니다. GridSearchCV으로 매개 변수를 미세 조정하여 보통 더 나은 적합성을 얻을 수 있습니다. 이 경우 데이터가 중앙에 있지 않기 때문에 coef0 매개 변수도 중요한 영향을 미칩니다.

다음 매개 변수는 데이터를 더 잘 맞는을 제공한다 :

svr_poly = SVR(kernel='poly', degree=2, C=100, epsilon=0.0001, coef0=5) 
+0

감사! 나는 "단순한"모델에 대해 하이퍼 파라미터가 그다지 중요하지 않다고 생각했다. 나는 대답을 받아 들일 것이고, 그들이 나를 포함한다는 것을보다 명확하게 보여주는 예로 인도 할 것이다. 나는 그것을 응답자로도 제공 할 것이다. – Eulenfuchswiesel

1

scikit-learn.SVR 실행 낮은 차 다항식을. 원래 예제를 수정하여이를 명확하게 보여줍니다. 이 플로팅

X = np.sort(2*np.random.rand(40,1)-1,axis=0) 
Y = np.sin(6*X).ravel() 
svr_poly1 = SVR(kernel='poly', C=1e3, degree=3) 
y_poly1 = svr_poly1.fit(X, Y).predict(X) 
svr_poly2 = SVR(kernel='poly', C=100, epsilon=0.0001, coef0=5, degree=3) 
y_poly2 = svr_poly2.fit(X, Y).predict(X) 
svr_poly3 = SVR(kernel='poly', C=100, epsilon=0.0001, coef0=5, degree=5) 
y_poly3 = svr_poly3.fit(X, Y).predict(X) 

는 기본적으로 효과적인 매개 변수를 처벌,

Result of the different SVR algorithms with two models using order 3 but different hyperparameters and one model using order 5