회귀(Regression)모델의 가장 큰 구분은 ①독립변수의 개수에 따라 단일회귀/다중회귀 ② "회귀계수"의 종류에 따라 선형회귀/비선형회귀로 구분된다. (비선형 회귀와 다항회귀를 혼동하면 안된다).
선형회귀는 피쳐와 라벨간에 선형적인 관계가 있다고 가정하고 최적의 선형함수를 탐색한다. (실제는 선형적 관계가 아닐수 있음에도)
회귀모델은 오류(=Cost=Loss function ; residual, RSS, MAE, MSE 등으로 측정)를 최소화하는 회귀계수 혹은 회귀선을 찾는것을 목적으로 한다.
최적의 회귀계수를 찾는 대표적인 방법론 : Gradient Descent (경사하강법). Gradient는 Cost를 parameter(회귀계수)에 대해 편미분 한것이고. Cost 가 줄어드는 Negative Gradient 방향으로 Parameter를 지속 업데이트한다. OLS(일반선형회귀)는 최적 회귀선 찾는게 쉬워 굳이 Gradient Descent 를 사용하진 않는다.
Gradient Descent 방식에도 여러가지가 있는데, 주로 Stochastic Gradient Descent (≒ mini batch gradient) 방식 : 전체 데이터셋을 batch 단위로 나누어 실행 (300,000 records of data = 100 batches of 3000 size = 1 epoch)
선형회귀는 특정 독립변수의 회귀계수가 너무 크게되는 것을 방지하기위해 (overfitting 방지 목적으로) Regularization을 적용하는데, 적용방식에 따라 크게 OLS(기본), Lasso(L1), Ridge(L2), ElasticNet(L1+L2)로 구분한다.
다중 회귀모델은, multi-collinearity problem(다중공선성문제) 즉, 종속변수간의 높은 상관관계가 존재할때 생기는 문제 해결이 매우 중요하다. 이를위해 변수간에 ①PCA 등 차원축소 전처리가 진행되며, ②Regularization 도 어느정도 다중 공선성을 해결한다.
다중공선성의 문제점? y = 자동차 사고확률 , x1=혈중 알콜농도, x2=운전자 음주량 이라고 하면 x1/x2 의 상관계수가 1에 가깝기 때문에 메 학습마다 x1,x2의 회귀계수의 합만 일정하게 비율은 항상 크게 다를수 있다. 즉 계수에 대한 표준오차가 크다는것을 의미하고 통계적으로 회귀모델 유의성이 떨어지고 그만큼 해석력이 부족하고 과적합되기 쉽다 (모두 같은 의미)
● 회귀 평가지표
회귀의 평가지표는 여러가지가 있겠지만,, 주로 많이 쓰이는것은 아래와 같다. MAE 는 보다 직관적인 장점이 있고 Root 를 씌우는 이유는 MSE에서 제곱하며 커진 크기를 맞춰주기 위함
● 다항회귀 (Polynomial Regression)
회귀식의 하나이상의 독립변수가 다항식(2차이상)으로 표현되는 모델
다항회귀도 선형회귀(Linear) 이다. (비선형은 회귀계수와 변수의 관계가 비선형인것 : 예를들어 x 가 e의 지수로 들어가거나 sin함수 안에 들어가있거나..)
다항회귀가 선형회귀의 연장인것은 다항 독립변수를 치환할 수 있기 때문이다. (ex. x1*x2 = z1 , x1*2 = z2)
사이킷런은 다항회귀 클래스가 없어서 PolynomialFeature 클래스를 이용해 단항피처를 다항으로 변환해서 사용한다.
댓글