# ML : Normal Equation

1. Normal Equation



  • Gradient Descent와의 차이점
    • Gradient Descent : Feature의 갯수만큼 계산을 반복하여 θ 결과를 도출
    • Normal Equation : 단 한번의 계산으로 θ 결과를 도출
  • Normal Equation은 J(θ)의 도함수(미분)를 0으로 두고 계산한다.
  • 도함수에 대해서 잘 모르겠다면, 다음의 링크를 참조하자.
  • 우선 Andrew 교수님께서는 미분에 대해 익숙하지 않더라도 상관없다고 하셨으니, 계산 과정에 어려움이 있더라도 넘어가보자.. (고등학교 이과를 나왔어도 시간이 오래 지나면 모두 잊어버리기 마련인듯.. 수학공부도 다시 해야하나..)

2. How to use Normal Equation

  • 위의 그림은 4개의 후보 군의 갯수를 갖는 변수가 4개 있는 경우를 보여준다.
    • 1개의 변수 : 2104, 5, 1, 45 - 각 후보 군은 '2104', '5', '1', '45' 
  • 중요한 것은 x0을 새로 만들어서 여기에 1을 모두 집어넣은 것을 기억해야 한다. 나중에 행렬 계산에서 이 값은 매우 중요하게 사용되기 때문이다.

  • 결국 Normal Equation을 사용하기 위하여 다음의 역행렬을 이용한다.
  • pinv는 Octave라는 프로그래밍 언어에서 주어진 행렬 X의 역행렬을 구하기 위한 함수로 사용된다.
  • 추가적으로 X행렬의 옆에 붙은 T는 Transpose의 약자로서, 역행렬(-1)을 의미한다.
  • 만약 계산과정에 궁금함이 있다면 다음의 위키를 참조하자.

3. Comparison with Gradient Descent

  • 그렇다면 우리는 왜 처음부터 이렇게 간단한 방법을 배우면되지 왜 귀찮고 어려운 Gradient Descent를 배운 것일까? 이유 없이 귀찮게 배우는 것은 없다.
  • 위의 표는 각 방법의 장단점을 보여주고 있다. Normal Equation이 적은 계산과정으로 인한 편리함은 있지만, feature의 갯수가 상당히 많아지면 계산 과정에 필요한 오버헤드가 기하급수적으로 커지게 된다.
  • Andrew 교수님의 설명으로는, n(feature의 갯수)이 10의 6승(100000) 이상이 되면 무조건 Gradient Descent를 이용하는 것이 현명하다고 하셨다. 10의 5승(10000)이면 Gradient Descent와 Normal Equation 중 하나를 선택하는 것을 고민할 필요가 있고, 그 이하가 되면 Normal Equation을 쓰는 것이 현명하다고 하셨다.
  • 실제로 Normal Equation은 주어진 행렬의 역행렬을 구해야 하기 때문에, feature의 갯수가 많아질수록 역행렬을 구하기 위한 계산이 꽤 많이 요구된다고 한다. 





댓글