2018년 5월 10일 목요일

[ML] Linear Regression

회귀 (regression)

한번 돌아 원래로 돌아오는 것.
회귀는 영구의 유전학자 갤톤이 유전의 법칙을 연구하다 나온 명칭이다. 갤톤은 부모와 자식간의 신장을 조사하였는데, 일반적으로 장신인 부모의 아이는 장신이지만, 그 평균 신장은 부모만큼 크지 않다는 것을 밝혀내었다. 아이의 신장은 항상 일반적인 평균으로 되돌아가는 경향이 있다고 하여, 이것을 평균으로의 회귀 (regression toward to the mean)라 하였다.

회귀의 법칙을 활용한다면 남녀 키의 평균 값을 가지고 알지 못하는 누군가의 키를 그냥 퉁쳐서 예측해볼 수 있을 것이다. 하지만 단순 평균만을 가지고 예측한다면 예측의 정확도는 떨어질 수 밖에 없다. 예측 정확도를 높이기 위해선 키에 영향을 주는 다른 요인을 활용해야만 한다.


회귀 분석

회귀 분석은 독립 변수 X와 종속 변수 y 간의 관계를 정량화 하는 작업이다. 다시 적으면 독립 변수가 종속 변수에 미치는 영향력의 크기를 파악하는 것이다.

회귀 분석을 하면 변수들 사이에서 나타나는 트렌드(trend)를 설명할 수 있다. 단순히 상관 관계의 유무를 넘어 어떤 관계인지 좀 더 자세히 살펴볼 수 있다.

독립 변수와 종속 변수 간에 어떤 관계가 있을지에 대한 여러 가설을 회귀 모델(모형)이라 부르며, 회귀 모델은 크게 트렌드를 나타내는 부분과 통제할 수 없는 오차를 나타내는 부분으로 분리된다. 좋은 회귀 모델을 찾아 변수 간 관계, 경향 등을 파악하는 것이 회귀 분석의 목적으로 이는 결국 오차를 최소화하면서 자료를 설명해줄 수 있는 중심 트렌드를 찾는 것을 의미한다.


회귀 분석의 전제 조건

회귀 분석엔 여러 가정과 전제 조건이 깔린다.
  . 수집된 데이터의 확률 분포는 정규분포를 이루고 있어야 하며 오차항(residuals)은 모든 독립 변수 값에 대하여 동일한 분산을 갖는다.
  . 종속 변수 값들은 서로 독립적이어야 한다.
  . 독립 변수가 여러 개인 경우 독립 변수 간에는 다중공선성이 없어야 한다. (독립 변수간에 서로 영향을 주지 않아야 한다.)
이러한 전제 조건은 사전에 파악하기 어렵기 때문에 우선 데이터를 돌려본 후 사후 검증 과정을 거치는 것이 일반적이다.


선형 회귀

선형 회귀(linear regression)는 종속 변수 y와 한 개 이상의 독립 변수 (설명 변수) X와의 선형 상관 관계를 모델링하는 회귀 분석 기법이다. 쉽게 말하면 주어진 데이터를 잘 설명하는 하나의 대표 직선을 찾는 것이다.

선형 회귀는 종속 변수가 독립 변수에 대해 선형 함수의 관계에 있을 것이라 가정하고 선형 예측 함수(1차 함수)를 사용해 회귀식을 모델링한다. 한 개의 독립 변수에 기반한 경우에는 단순 선형 회귀(Simple linear regression)라 하고, 둘 이상의 독립 변수에 기반하는 경우에는 다중 선형 회귀(Multiple linear regression)라 한다.

선형 회귀에선 최소 제곱법(least square method)을 사용하거나 경사 하강법을 이용해 손실 함수(loss function)을 최소화 하는 방식으로 모델을 세울 수 있다. 이는 모두 오류를 최소화 하는 최적의 회귀 직선을 찾기 위함이다.


최소 제곱법

최소 제곱법은 관측치 y와 예측 결과 값(회귀선) 간 오차의 제곱의 합이 최소가 되는 해를 구하는 방법이다. 분산을 구할 때 편차를 제곱해서 사용하는 것처럼 최소제곱법도 잔차를 제곱해서 사용한다. 양수와 음수가 섞여있으므로 전체적인 오차를 파악하기 힘들기 때문에 부호를 없애는 방법으로 제곱을 선택한다. 절대값을 사용하는 것 대비 부가 효과로 큰 폭의 오차에 대해 보다 더 큰 penalty를 줄 수 있다. 가능한 변동 폭이 적은 회귀선을 도출하기 위함이라 볼 수 있다.


정규화 선형 회귀

정규화(regularized) 선형 회귀 방법은 선형 회귀 계수(weight)에 대한 제약 조건을 추가함으로써 모형이 과도하게 최적화되는 현상, 즉 과최적화를 막는 방법이다. (Normalization이 아니고 Regularization임에 유의하자.)

실제로 데이터를 분석할 때 변수가 굉장히 많은 데이터에 회귀 분석 모델을 적용해야 하는 경우가 자주 발생하는데 변수가 많아질 때 필연적으로 생기는 문제점이 있다.
  1) 모델이 학습 데이터에 오버피팅 되는 경향이 생긴다.
  2) 모델을 해석하기 어려워진다. 만약 어떠한 현상을 설명하는 것이 목적이라면 적은 개수의 변수로 작은 모델을 만드는 것이 권장된다.

정규화 모형은 위 문제를 해소해 준다. 일반적으로 회귀 분석에서의 정규화는 회귀 계수가 커지면 커질수록 모델에 penalty를 주는 방법이다. (모델이 과도하게 최적화되면 모델 계수의 크기도 과도하게 증가하는 경향이 있다.) 따라서 기존 문제에서 오차를 최소화 하는 동시에 penalty에 대한 최소화도 동시에 고려해 주어야 한다.

정규화 선형 회귀의 방법으로 Ridge, Lasso, Elastic Net의 잘 알려진 방법이 있다. Ridge는 각각의 회귀 계수를 제곱한 값의 합에 비례하는 penalty를 주는 모델이다. Ridge 모델은 총 계수의 합을 줄여주는 것에 초점을 맞추고 있으며 가중치 계수를 한꺼번에 축소시키는 특성이 있다. Lasso는 모든 계수를 최대한 0으로 만들어 주는 것에 초점을 맞추고 있으며 일부 가중치 계수가 먼저 0으로 수렴하는 특성이 있다. 마지막으로 Elastic Net은 Ridge와 Lasso를 모두 합친 일종의 하이브리드 모델이라 할 수 있다.

샘플 코드 : http://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html


[용어 정리]

* 코스트 펑션 vs 로스 펑션 vs 오브젝티브 펑션: https://stats.stackexchange.com/questions/179026/objective-function-cost-function-loss-function-are-they-the-same-thing

* 오차(error): 회귀식의 값과 실제 값(모집단의 모수식으로 부터 나온 값)과의 차이. 모든 데이터를 하나의 회귀식으로 100% 설명할 수 없다.

* 잔차(residual): 표본의 회귀식으로 부터 나온 값. 관측 값의 y와 예측 값의 y 간의 차이. 표본에서는 오차(error) 대신 통계량의 개념을 갖는 잔차(residual)라는 용어를 사용한다.

* 표준화 (Standardization)
수식: (요소값 - 평균) / 표준편차
의미: 평균을 기준으로 얼마나 떨어져있는지를 나타내는 값. 2개 이상의 대상에 대해 단위가 다를 때 같은 기준으로 볼 수 있게 한다. 추가적인 효과로 로그보다는 덜하지만 간극이 큰 데이터의 진폭을 줄여주기도 한다.
→ 키와 몸무게에 대한 표준화, 서로 다른 두 주식 종목에 대한 표준화.

* 정규화 (Normalization)
수식: (요소값 - 최소값) / (최대값 - 최소값)
의미: 전체 구간을 동일하게 설정하여 데이터를 관찰하는 방법. 데이터 군 내에서 특정 데이터가 가지는 위치를 볼 때 사용한다.
→ 주식 시세, 과거 대비 현재 시세의 위치를 파악할 수 있음.

댓글 없음:

댓글 쓰기