Regression(회귀)

 

앞선 머신러닝종류에 대한 글에서 Regression에 대한 설명이 너무 간략했다. 이번 글에서는 Regression에 대해 자세하게 설명하고자 한다.

Regression은 분포된 데이터를 방정식(Hypothesis)을 통해 결과의 값을 예측하는 것을 뜻한다.

 

 

Linear Regression (선형 회귀)

 

Linear Regression은 H(x) = Wx + b 로 나타낼 수 있다. H(x)는 우리가 도출하고자하는 예측 값이다. x는 우리가 갖고 있는 데이터들을 의미한다. 수많은, 그리고 다양한 특징을 갖는 데이터들을 하나의 수식으로 나타내는 W와 b의 값을 구하는 것이 Linear Regression의 최종 목표라고 할 수 있겠다. 그렇다면 어떻게 W와 b를 구할 수 있을까?

 

 

여기 이미지를 보자. 빨간색 점은 우리가 갖고 있는 데이터이다. 이렇게 다양한 위치에 존재하는 데이터의 전체적인 경향성을 파악하기란 여간 어려운 일이 아니다. 그래서 우리는 이런 다양한 데이터들을 전체적으로 예측할 수 있는 모델을 만들기 위해 갖고 있는 데이터와 예측한 함수에 대한 오차값을 사용한다. 그림에 있는 초록색 선이 예측한 모델과 주어진 데이터간의 오차이다. 우리는 갖고 있는 모든 데이터에 대해 이 오차 값이 제일 적은 모델을 선택해야 원하는 예측값을 얻을 수 있을 것이다.

 

 

Cost Function (비용 함수)

 

Cost Function, 이 그림에서 𝜃0은 b, 𝜃1은 W를 의미한다.

 

오차는 예측값( h(x) )과 정답( y )의 차이이다. 단순한 차는 양수와 음수를 모두 포함하므로 지표적으로 해석하기 쉽게하기 위해서는 제곱하는 것이 편하다. 따라서 우리는 오차값을 제곱하여 합산한다. 분모에 있는 2m의 m은 데이터의 개수이다. (+ 2로 나누는 것은 미분값(Gradient)을 간소하게 만들기 위해 추가한 것) 위와 같은 식을 우리는 Cost Function(비용 함수)이라고 한다. Cost Function의 값이 낮을수록 좋은 선형방정식이라고 할 수 있다.

 

convex(볼록함수)를 통해 최소값을 쉽게 찾을 수 있다.

 

위의 이미지와 같이 쉽다면 인공지능이 얼마나 재미있을까? 하지만 저렇게 쉬운 문제만 있다면 애초에 인공지능까지도 필요 없었을 것이다. 그냥 대충 계산하면 사람도 쉽게 할 수 있으니 말이다. 우리는 대체로 이런 말도 안되는 그래프들을 만나게 될 것이다.

 

벌써부터 가슴이 답답하다.

 

최하점을 찾기 꽤나 까다로운 그래프가 아닐 수 없다. 우리는 현재 빨간색 쪽에 있는 별에 위치해 있다. 우리는 제일 최저점인 짙은 파란색에 있는 값들을 알아내야 한다. 그렇다면 어떻게 해야 우리는 저 최저점에 도달할 수 있을까? 이를 위해 우리는 Gradient Descent(경사 하강법)를 사용한다.

 

 

 


 

 

 

 

Gradient Descent (경사 하강법)

 

Gradient Descent (경사 하강법)은 1차 근삿값 발견용 최적화 알고리즘이다.

기본 개념은 함수의 기울기(경사)를 구하여 기울기가 낮은 쪽으로 계속 이동시켜서 극값에 이를 때까지 반복시키는 것이다. 즉, Gradient Descent란 Cost를 최소로 만드는 예측직선 h(x)에서 최적의 W를 발견하는 과정이라고 할 수 있다.

 

수식 극혐

 

 𝛼 : learning rate, 𝛼 > 0

≔ : 할당 (assignment) 연산자

𝜃0, 𝜃1은 한번에 업데이트 해야 함

 

위의 수식은 Cost Function(비용함수)의 편미분값 * 𝛼값을 기존 𝜃값에서 빼주는 것을 계속 반복하는 방식이다. 이걸 단번에 이해하는 당신은 천재라고 할 수 있겠다. (왜나면 내가 바보이기 싫기 때문) 이해를 돕기 위해 선형 회귀에 대해 잘 설명한 블로그에서 갖고 온 이미지를 보자.

 

비교적 이해하기 쉬운 이미지라고 생각한다.

 

위의 이미지를 보면서 다시 수식에 대해 이야기 해보자. Cost Function(비용함수)의 편미분값은 그 지점의 접선 기울기와 같다. Gradient Descent 방법대로 기울기에 𝛼값을 곱한 값을 기존 𝜃값에 빼주면 그래프는 최적점과 조금 더 가까워지게 된다. 이 방법을 여러번 반복하면서 우리가 원하는 최저점을 찾아가는 것이 Gradient Descent라고 할 수 있겠다. 여기서 𝛼값은 어떻게 조정해야할까?

 

 

Learning Rate (𝛼)

 

𝛼, 즉 Learning Rate의 값이 너무 크거나, 너무 작다면 어떤 현상이 발생할까? 이를 잘 설명해주는 이미지가 있다.

 

내가 이해하는 영어라면 여러분도 이해할 수 있다.

 

𝛼값이 너무 작은 경우는 천천히 수렴하므로 수렴하기까지의 시간이 너무 오래걸린다.

𝛼값이 너무 큰 경우는 제대로 최저점을 찾지 못할 확률이 높으며 수렴하지 못한다.

𝛼값은 𝐽(𝜃)의 변화 값이 일정 수준이상 작아지면 수렴으로 판정되기 때문에 우선 작은 값으로 시작하여 큰 값으로  늘려나가는 것이 바람직하다고 볼 수 있다.

 

우리는 𝛼값을 Hyper Parameter(초매개변수)라고 한다. Hyper Parameter는 사람이 직접 설정해야 하고, Parameter는 훈련데이터와 학습 알고리즘을 통해 모델 내부에서 결정되는 변수를 의미한다. 이에 대한 자세한 설명을 여기를 참고하길 바란다.

 

 

 

 

 

 

최선의 Linear Regression

 

위의 이미지는 여태껏 설명했던 내용을 토대로 만들어진 Linear Regression이다. 이 모델은 모든 데이터에 대해 최선으로 오차가 적은, 즉 오류가 적은 함수로 우리가 원하는 예측값을 얻을 수 있다.

 

 

 

 

 

 


 

 

 

 

 

 

데이터 정규화

  표준화(standardization) 정규화(normalization)
공통점 데이터 rescaling
정의
&
목적
데이터가 평균으로부터 얼마나 떨어져있는지 나타내는 값 전체 구간을 0~1로 설정하여 데이터를 관찰하는 방법
특정 범위를 벗어난 데이터를 outlier로 간주하여 제거 데이터 군 내에서 특정 데이터가 가지는 위치를 볼 때 사용
장점
단점
이상치를 처리하기 좋음 모든 feature들의 스케일이 동일
동일한 척도로 정규화된 데이터 생성 x 이상치를 잘 처리하지 못함
공식 (요소값 - 평균) / 표준편차  (요소값-최소값) / (최대값 - 최소값)

머신러닝에서는 표준화보다 정규화가 더 좋은 결과가 나오기 때문에 정규화 선호

 

 

 

다중공선성

다중공선성에 대해 잘 설명한 블로그 링크를 걸어두었다. 블로그가 워낙 설명을 잘해주었기 때문에 링크를 타고 들어가 설명을 읽으면 되겠다. 다중공선성의 내용을 간단하게 요약하자면 다음과 같다.

 

다중 회귀식

α : 회귀계수

X : 독립변수(설명변수)

Y : 종속변수(반응변수)

ε : 오차항

 

 

위의 다중회귀식을 보자. 우리는 데이터에 해당하는 X1과 X2가 각각 독립이라는 가정하에 다중회귀식을 구현한다. 두 독립변수가 서로 독립적이어야 회귀식을 제대로 표현할 수 있기 때문이다. 하지만 내 마음과 같지 않게 두 독립변수가 독립변수가 아니라 서로에게 영향을 주고 있는 경우가 생긴다. 이런 경우에 다중공선성이 있다고 한다. 이에 대한 자세한 설명은 다음을 눌러 더 자세히 확인하길 바란다. 결론적으로는 다중공선성이 있는 경우 서로 영향을 주는 두 컬럼 중 하나를 삭제하여 회귀식을 구성해야 우리가 원하는 결과를 도출하는 회귀식을 만들 수 있다는 것이다.

 

 

 

'인공지능 > 인공지능 이론' 카테고리의 다른 글

10. ROC Curve  (1) 2019.09.12
9. Classification (분류)  (0) 2019.09.11
7. 머신러닝종류  (0) 2019.09.08
6. Train, Valid, Test Data / CrossValidation (교차 검증)  (0) 2019.08.27
5. 타이타닉(3) / 학습모델설정  (0) 2019.08.26

+ Recent posts