컴공과컴맹효묘의블로그

수알못의 머신러닝 : 선형회귀 - normal equation 정규방정식 본문

컴퓨터/머신러닝

수알못의 머신러닝 : 선형회귀 - normal equation 정규방정식

효묘 2019. 8. 23. 16:29
반응형
Normal Equation 정규방정식

 

 

지금까지 선형회귀의 모델을 최적화 시키는데에 있어서 경사하강법을 사용했습니다.

 

이번 포스팅에서는 특정 선형 회귀문제에서 θ를 구하는데 효과적인 방법을 설명하겠습니다.

기존에는 경사하강법을 사용해서 θ의 최적값을 구했습니다. 경사하강법은 최적의 θ를 구하기위해서 특정 알고리즘을 어떤 값에 수렴 할때까지 계속 반복해야합니다.

 

하지만 Normal Equation(정규 방정식)을 사용하면 반복할 필요없이 한번에 최적의 θ를 구할 수 있습니다.

 

θ가 벡터가 아니라 스칼랄고 가정합시다. 위와같은 cost function(비용함수)이 있을 때 최솟값 θ를 구하는건 간단합니다. 미적분을 배운사람이면, 저 방정식을 미분해서 0이되는 값을 찾기만하면 된다는 것을 직관적으로 알 수 있습니다. 정규방정식은 이 아이디어를 적용하나 것입니다.

 

θ는 n+1차원의 벡터라고 가정합시다. 그리고 비용함수도 위 사진의 아래와 같다고 가정합시다. 이렇게 되면 비용함수는 모든 θ_j에 대해서 편미분을 하고 0이되는 값을 찾으면 그 값이 최적의 θ값이 될겁니다.

 

m features, n training example

여기 m 가지 featrues(특징)과 n 가지 training example(훈련집합의 갯수)가 있습니다. 그리고 X와 y를 각각 위와같이 정의하면 θ는 다음과 같은 식으로 얻을 수 있습니다. θ=pinv(X'*X)*X'*y

 

참고로 pinv는 pseudo-inverse의 약자로 Octave 프로그래밍 언어의 함수입니다. X'는 X의 전치행렬 (transpose)입니다.

 

경사하강법의 장단점

  • α의 값을 선택해야 합니다.
  • 반복이 많습니다.
  • n의 값이 커도 작동이 잘됩니다.

정규방정식의 장단점

  • α값을 설정할 필요가 없습니다.
  • 반복할 필요가 없습니다.
  • pinv(X'*X)를 계산해야합니다.
  • n값이 너무 크면 계산속도가 느려집니다.

정규방정식의 시간복잡도는 O(n³)입니다.

 

 

마지막으로 pinv(X'*X)의 값이 없을 경우입니다. 결론적으로 이 내용은 무시해도 됩니다. 이유는 마지막에 설명하겠습니다. 우선, 역행렬이 없는 행렬은 분명히 존재합니다. 하지만, 이 알고리즘의 경우 역행렬이 없는 경우는 거의 없습니다. 하지만 만약 역행렬이 없는경우에는 다음을 확인하면 됩니다.

 

1. 의존적인, 종속적인 feature가 있는가? 만약 x_1이 size in feet²고, x_2가 size in m²이면 서로는 같은 의미를 띄고 있습니다. m=a*feet이기 때문에 둘중 하나는 불필요한 정보입니다. 즉, x_1이나ㅏ x_2를 없애주는것이 좋습니다.

 

2. feature가 너무 많은경우(m≤n). 이 경우에는 feature를 조금 줄여주면 됩니다. 혹은 regularition을 사용하면 됩니다.

 

3. pinv함수를 사용하십시오. 역행렬을 구하는데에는, inv와 pinv가 있습니다. pinv함수는 역행렬이 존재하지 않아도 계산을 수행할 수 있습니다.

 

 

 

사진출처:Andrew Ng

반응형
Comments