[ML / Andrew Ng] Linear Regression - Computing Parameters Analytically (Normal Equation)
이번 강의에선 theta값을 수학적으로 바로 찾는 방법인 Normal Equation에 대해 알아보겠습니다. 이 방법은 Gradient Descent와 다르게 계산식 한 번으로 적절한 theta값을 찾을 수 있습니다. 위 그림 아래쪽에 있는 식입니다. 이를 통해 반복이나 learning rate를 정할 필요도 없이 바로 theta를 구하게 됩니다.
강의에서는 이 식의 증명을 따로 하진 않았지만 궁금해서 제가 찾아보았습니다. 증명과정은 위 그림과 같고 결과만 알아도 되기에 참고만 하시면 좋을 것 같습니다. 참고한 사이트입니다.
https://eli.thegreenplace.net/2014/derivation-of-the-normal-equation-for-linear-regression/
Derivation of the Normal Equation for linear regression - Eli Bendersky's website
December 22, 2014 at 20:50 Tags Math , Machine Learning I was going through the Coursera "Machine Learning" course, and in the section on multivariate linear regression something caught my eye. Andrew Ng presented the Normal Equation as an analytical solut
eli.thegreenplace.net
위의 설명만 본다면 Normal Equation은 learning rate 지정, 반복 불필요 등 귀찮은 중간 과정을 다 스킵할 수 있고 수학적인 정답만 주기에 훨씬 효율적인 방법같아 보입니다. 하지만 이 방법의 단점 때문에 실무에선 보통 Normal Equation 보다 Gradient Descent가 더 선호된다고 합니다.
그 이유는 theta를 구하는 과정에서 X'X 행렬의 역행렬을 구하기 때문인데요. n이 100, 1000처럼 작을 경우 컴퓨터가 계산을 하기에 시간이 거의 소요되지 않지만 n이 10000을 넘어가면 조금 걸리게 되고 100000을 넘어가는 순간 눈에 띄게 차이가 난다고 합니다. 그래서 n이 10000을 넘어가면 보통 Gradient Descent를 사용하게 됩니다. 생각해보면 실생활에서 ML을 적용하게 되면 n이 당연히 클 것이고 그 수는 100000은 우스울 정도로 크게 될 수도 있습니다. 그렇다면 어쩔 수 없이 시간관계상 Gradient Descent를 사용할 수밖에 없습니다.
선형대수학을 배워본 사람이라면 의문이 들 수 있습니다. Normal equationd을 적용해 theta를 구할때 X'X 의 역행렬을 구한다고 하였습니다. 하지만 역행렬이 존재하지 않는 singular matrix라면 이를 구할 수 없지 않나? 라고 의문이 들 수 있습니다.
이를 강의에서는 컴퓨터가 이를 계산할때 pinv(pseudo inverse of matrix)라는 함수를 사용하게 되는데 이를 통해 계산을 할 수 있습니다. 이 이유는 pinv가 역행렬과 유사한 역할을 할 수 있는 행렬을 계산해기 때문인데 너무 선형대수학으로 넘어가는 내용이라 따로 정리하지 않겠습니다. 참고하실 분은 아래 사이트를 보시면 좋을 것 같습니다.
https://kr.mathworks.com/help/matlab/ref/pinv.html#mw_ffa95973-29a2-48a1-adb0-5a4214e0d9cf