다항회귀 개요 (Polynomial Regression)
다항 회귀(Polynomial Regression)란 비선형 데이터를 학습하기 위해 선형 모델을 사용하는 기법이다. 단순 선형 회귀(SLR)를 이용해 모든 데이터의 관계성을 직선으로 표현할 수는 없으므로 다항 회귀 또는 다중 선형 회귀(MLR) 등과 같은 조금 더 복잡한 회귀 모델이 때에 따라 최적의 회귀선을 나타내고는 한다. 각 변수의 거듭제곱을 새로운 변수로 추가하고 이 확장된 변수를 포함한 데이터셋에 선형 모델을 훈련시킨다.
다중 선형 회귀는 여러 독립 변수들이 필요한 반면 다항 회귀는 하나의 독립 변수에 대한 차수를 확장해가며 단항식이 아닌 2차, 3차 등의 회귀 모델을 도출한다. 다만 주의해야 할 점은 선형 회귀와 비선형 회귀를 구분하는 것은 "독립변수"의 선형성이 아니라, "회귀 계수"의 선형성이라는 것이다. 아래는 다항 회귀 모델로 산출되는 수식이다
직선으로 어떤 데이터를 충분히 표현하지 못하는 경우를 편향(bias)이 크다고 한다. 지나치게 한 방향으로 치우쳐져 있기 때문이다.
반대로 다항 회귀에서는 차수가 너무 큰 경우에는 변동성이 커지고, 이를 고분산성을 가진다고 한다.
편향(Bias)과 분산(Variance)은 한쪽의 성능을 좋게 하면, 나머지 하나의 성능이 떨어지는 trade-off 관계에 있다. 쉽게 말해 편향을 줄이면 분산이 늘어나고, 분산을 줄이면 편향이 늘어나게 된다.
데이터 세트에 대해서 피저 X 에 대해 Target Y 값의 관계릅 단순 선형 회귀 직선형으로 표현한 것보다 다항 회귀 곡선형으로 표현한 것이 더 예측 성능이 높습니다.
여기에서 "독립변수"가 단항식(x_0 ... x_n)이 아닌 2차, 3차로 표현되는 것을 다항(Polynomial) 회귀라고 한다.
다항이라는 것은 x_0, x_1, x_0 * x_1, (x_0)^2, (x_1)^2 .... 이라고 생각하면 된다.
"독립변수"라는 것을 강조한 이유는 다항회귀면 비선형회귀여야 하는 것이라는 것에 대한 오해를 풀기 위해서이다.
선형회귀와 비선형회귀를 구분하는 것은 "독립변수"의 선형성이 아니라, "회귀 계수"의 선형성이다.
회귀 계수는 선형 회귀를 구현할 때와 마찬가지로 w_0, .... w_n이기 때문에, 다항 선형 회귀이다.
사이킷 런에서는 직접적으로 다항회귀를 구현해주는 클래스를 가지고 있지 않다. 대신, PolynomialFeatures라는
피처를 다항식 피처로 변환해주는 클래스를 이용하여 구현한다.
1. 피처를 PolynomialFeature 클래스를 이용하여 차수를 정하고 다항식 피처로 변환한다.
2. 이후에 선형회귀 클래스인 LinearRegression()을 이용해서 학습 - 예측을 수행한다.
선형 회귀와 비선형 회귀의 구분
다항 회귀는 선형 회귀입니다. 회귀에서 선형 회귀/비선형 회귀를 나누는 기준은 회귀 계수가 선형/비선형인지에 따른 것이지 독립변수의 선형/비선형 여부와는 무관합니다.
사이킷런에서의 다항 회귀
사이킷런은 다항 회귀들 바로 API로 제공하지 않습니다. 대신 PolynomialFeatures 클래스로 원본 단항 피처들을 다항 피처들로 변환한 데이터 세트에 LinearRegression 객체를 적용하여 다항회귀 기능을 제공합니다.
사이킷런에서는 일반적으로 Pipeline클래스를 이용하여 PolynomialFeatures 변환과 LinearRegression 학습/예측을 결합하여 다항 회귀를 구현합니다.
underfitting vs overfitting
편향-분산 트레이드 오프 (Bias-Variance Trade off)
직선으로 데이터를 표현하는 경우에, 데이터를 충분히 표현하지 못하는 경우가 있다.
이런 경우, 편향이 매우 크다고 이야기한다. 지나치게 특정 방향으로 치우쳐져 있다는 의미이다.
반대로 다항 회귀에서 차수가 너무 큰 경우에는 변동성이 커지고, 이를 고분산성을 가진다고 이야기한다.
위에서 언급한 편향 (Bias)와 분산(Variance)은 한쪽의 성능을 좋게 하면, 나머지 하나의 성능이 떨어지는 트레이트-오프관계에 있다. 쉽게 말해 편향을 줄이면 분산이 늘어나고, 분산을 줄이면 편향이 늘어난다고 보면된다.
따라서 둘의 성능을 적절하게 맞춰 전체 오류가 가장 낮아지는 지점을 '골디락스' 지점이라고 한다. 이 지점을 찾는 것이 매우 중요하다. (단순히 선형회귀 뿐만이 아니라 대부분의 머신러닝 모델이 그렇다!)
'Machine Learning > 머신러닝 완벽가이드 for Python' 카테고리의 다른 글
ch5.5_5.6 Polynomial 회귀와 overfittng, 규제 선형 모델 (실습) (0) | 2022.10.13 |
---|---|
ch.5.6 규제 선형 회귀 (릿지, 라쏘, 엘라스틱넷) (0) | 2022.10.13 |
ch5.3_Gradient_Descent, ch5.4_LinearModel (1) | 2022.10.12 |
ch.5.4 사이킷런 LinearRegression 클래스 (보스턴주택가격예측) (0) | 2022.10.12 |
ch.5.3 경사하강법 - 비용최소화하기 (0) | 2022.10.12 |