머신러닝 분야에서의 회귀분석에 대해 알아본다. 여기서 말하는 회귀분석은 선형회귀분석을 말한다.
1. 회귀분석 (Regression)
통계학과 머신러닝에서의 선형회귀분석은 동일한 용어를 사용하긴 하지만 접근하는 방식이나 관점이 약간 다르다.
회귀분석이란 한 변수를 다른 변수 / 변수들의 함수 관계로 표현하는 것을 말한다. 선형회귀분석(Linear Regression)은 독립변수 X로 종속변수 Y를 설명할 때 이 관계가 선형인 경우를 말한다. 물론 독립변수 X는 여러 개일 수 있다. 선형관계를 가지고 데이터를 분석한다.
통계학에서는 어떤 통계학적인 설정이나 가정이 전제가 되어야 한다. 통계학의 회귀분석에서도 4가지 가정이 전제가 되어야 한다. 선형성이 있느냐? 오차가 정규성이 있느냐? 등분산이냐? 독립이냐? 이 4가지의 특성을 가지고 있다는 가정이 있다. 그러나 머신러닝에 오면 이러한 가정은 모두 사라진다.
머신러닝에서는 기본적으로 통계학적인 가정이 없다. 그래서 오히려 접근하는 방법이 더 쉬울 수 있다. 통계학에서는 기본적인 가정을 얘기하고, 이러한 가정을 만족하지 않을때는 이 문제를 어떻게 해결하는 가는 매우 중요하다. 그런데 머신러닝에서는 그러한 가정이 나오지 않는다. 그러면 여기서는 기본적으로 선형회귀 때문에 중요한 것이 있는데, 데이터를 보고 기울기와 절편을 구할 수 있어야 한다.
2. 선형회귀 계수의 추정
통계학과 머신러닝의 기울기와 절편을 구하는 방식이 조금은 다르다. 예를 들면, 산에 오른다고 할때 우리가 통계학적인 접근 방법과 머신러닝 접근방법이 다르나 목적은 같다. 데이터의 관계를 잘 표현하는 것이다. 머신러닝 파트에서도 기울기와 절편을 구해야 한다. 어떻게 찾을까? 함수 f(x)는 입력되는 X 값에 대응하는 f(x)는 하나이다. f(x) = ax + b에서 x 에 대한 함숫값 f(x)는 하나이다. 그러나 회귀분석에서 f(x)는 하나가 아니다. 즉 x에 대응되는 f(x) 값은 여러 개이고 가장 대표성 있고 특성을 잘 반영하는 직선을 하나 그린다. 그래서 선 위에 있으면 정확히 딱 맞고 그렇지 않고 떨어져 있으면 선과의 거리를 오차라고 한다. 그래서 모든 선형회귀 모델은 오차가 있다.
머신러닝에서는 좋은 성능을 내는 것이다. 어떤 개념이나 알고리즘을 사용하느냐 상관없이 좋은 성능을 내는 것인데, 그것은 오차를 최소화하는 것이다. 오차가 줄어들면 줄어 들수록 성능은 좋아진다. 그러면 오차를 가지고 있네? 오차를 줄이는 방향으로 갑시다. 그래서 오차를 어떻게 구할 것인가?
오차는 실제값(target value)와 내가 만든 선형모델 값(예측값)과의 차이다. 이 오차를 SSE(Sum of Square Error)라고 한다. 각각의 입력값에 target value을 빼고 제곱을 해서 이것을 다 더한 것이 SSE이다. 이것을 다시 표준화시키는 방법으로 전체 개수로 나누는 것이 MSE (Mean square Error)가 된다. MSE를 줄이면 줄일수록 성능이 좋은 것이다. MSE를 줄이는 방향으로 가는 것이 기본 방향이며, 이 함수를 cost function이라고 부른다.
cost function이 작은 값으로 가는 것이 좋은 것인데, 제곱으로 쓰는 이유는 경사하강법(gradient descent) 이라는 개념 때문이다. 통계학에서는 데이터를 넣고 기울기와 절편을 구했다. 그러나 머신러닝에서는 cost function을 최소화시키는 방향으로 접근한다. Cost function의 최솟값을 찾는 것은 제곱식을 미분하는 것으로 가능한다. 즉, 제곱식을 미분하여 0 이 나오는 것이 최솟값이 된다. 제곱식을 쓰게 되면 미분을 쓰기가 매우 편해진다. 편미분을 하게 되면 각각의 값에 대해 추정이 가능하다. 즉, 기울기가 0이 되는 지점이 cost function이 최저점이 되는 지점이다.
경사하강법(gradient descent)을 자세히 기술하면 다음과 같다.
- 전체 데이터 세트에 대해 모든 가능한 value의 손실함수를 계산하는 것을 비효율적
- 임의의 시작점에서 손실 곡선의 기울기를 계산
- 기울기가 감소하는 방향으로 이동 후 다시 손실 곡선의 기울기 계산
- 일정한 보폭, 혹은 점차 감소하는 보폭으로 이동과 기울기 계산을 반복
미분하여 기울기가 우상향이면 왼쪽으로 이동해야 최저점에 도달 할 수 있고, 기울기가 좌상향이면 오른쪽으로 이동해야 이동해야 한다. 보폭은 크게 하면 목표점을 지나치게 되는 오버슈팅이 발생하고, 똑같은 보폭으로 이동하면 무한이 반복하게 되는 문제가 생긴다. 그래서 이 문제를 해결하기 위해서는 정답 근처로 내려갈수록 보폭을 줄여나간다. 그래서 정교하게 모델링할 때에는 기울기가 줄어들면 들 수록 보폭을 줄여나가면 된다. 일반적으로는 보폭을 결정한다. 이 보폭을 결정하는 개념을 학습률 (Learning Rate)라고 한다. 일반적으로 Learning Rate에 따라 성능이 좌우되며, 0.05를 선호한다. 즉 결과 값이 나오면 다음에는 5% 를 반영한다는 의미이다.
경사하강법은 임의의 시작점에서 시작하여 다른 지역의 최저점에 이를 수 있고, 따라서 단일한 전체 최적을 보장하지는 않는다. 실험을 어떻게 돌리냐에 따라 결과가 달라질 수 있다. 현재 우리가 가지고 있는 조건에서 가장 좋은 결과를 찾았다는 의미이다. 경사하강법의 반대 개념이 힐클라이밍이 있다. 산꼭대기로 올라가는 알고리즘을 표현하면 시작점을 놓고 360도를 스캐닝하고 기울기가 높은 지점으로 이동하고 이를 반복하는 것이다. 기울기가 음수가 나오는 지점이 나오면 그 지점이 꼭대기이다 그 지점이 가장 높은 봉우리가 아닐 수 있다. 옆에 더 높은 봉우리가 있을 수 있다. 이 문제를 해결하는 방법은 다양한 위치에서 올라가 보고 그중에서 가장 높은 지점으로 이동하는 것이다. 지역 최대점, 지역 최소점, 전체 최대점, 전체 최소점이 있다. 즉 여러 가지 데이터를 활용하여 여러 방법으로 실험을 여러 번 반복하여 최적의 결과를 찾아내야 한다는 것이다.
3. 다중공선성 (Multicollinearity)
통계에서는 매우 중요한 개념이다. 독립변수들간에 강한 상관관계가 존재상태로 다중공선성이 있을 때에는 독립변수와 종속변수 간의 영향정도를 정확히 산출하지 못하는 현상이 나타난다. 기본적으로 제거시키는 것이 맞다. 하지만 있더라고 성능이 좋더라고 내버려 둘 수도 있다.
다중공선성을 확인하는 방법은 x 변수들 간의 산점도나 상관계수를 보아 상관성이 높은 지를 확인하거나 VIF (Variance Inflation Factor)가 10 이상이면 다중공선성이 있다고 할 수 있다. VIF는 한 설명변수를 Y 변수로 하고, 나머지 설명변수를 X로 하여 회귀분석을 한 후 1/(1-R2)를 구한 값이다.
다중공선성을 해결하는 방법은 다중공선성이 있는 독립변수를 제거하거나 주성분 분석 (PCA: Principal Component Analysis)를 통해 추출된 서로 독립적인 주성분을 사용하여 회귀분석을 한다.
Ridge Regression에서는 계수(w)의 자동조정을 통해 변수의 영향을 제어한다.
4. 회귀모형에서 명목형 변수의 처리 (Dummy Variable)
회귀모델 자체가 원래 독립변수 X, 출력변수 Y가 수치형이어야 한다. 입력 변수 X에 범주형이 들어올 경우 One Hot Encoding 기법을 쓴다. 예를 들면 "자동차 판매량(Y) ~ 마케팅비용(X1) + 자동차 색깔: White, Silver, Black" 일 경우, 자동차 색깔을 없애고 White, Silver, Black을 칼럼으로 추가하고 색깔에 따라 0, 1을 입력한다. 이렇게 할 경우 범주형 데이터의 종류에 따라 칼럼이 매우 커질 수 있다. 그나마 한 개라도 빼자는 것이 Dummy Variable이다. 속성 하나는 지우는 개념이다.
5. 맞춤형 회귀분석 (Personalized Regression)
변수가 많은 경우 효과적으로 최적의 회귀계수를 추정하는 것은 어려우므로 전통적인 변수 선택기법들이 사용되었다. 그러나 변수의 일부를 선택하는 과정이 비연속적인 방법이므로 특히 아주 고차원의 상황에서는 최적의 변수 집합을 찾는 것을 확신할 수 없다. 맞춤형 회귀분석 기법을 통하여 더 안정적이로 연속적이며 계산속도로 효율적인 방법을 구현하였다. Ridge, LASSO, Basic net 등의 기법이 있다.
Ridge Regression은 가중치를 조절하여 과적합을 피하고 일반화 성능을 강화하는 방법 (L2 Norm Regularization)이며, LASSO (Least Absolute Shrinkage Selector Operatio) (L1 Norm Regularization)은 다중 공선성이 있는 독립변수를 삭제하는 방법이다. Elastic Net은 이 두 개의 개념 (Ridge + LASSO)을 혼합해서 쓰는 방법이다.
'데이터사이언스 > 머신러닝' 카테고리의 다른 글
머신러닝 (Machine Learning) 개요 및 유형 (0) | 2023.04.20 |
---|---|
특성공학 (Feature Engineering) 언더피팅 / 오버피팅 (0) | 2023.04.20 |
나이브 베이즈 (Naive Bayes) (1) | 2023.04.19 |
KNN (K-Nearest Neighbors) 알고리즘 (0) | 2023.04.16 |
로지스틱 회귀분석 (Logistic Regression) (0) | 2023.04.16 |
댓글