-
[Week 2] Normal EquationCourses/Andrew Ng - Machine Learning 2021. 12. 20. 23:50
Normal Equation
이번에는 J의 최솟값을 찾는 다른 방법에 대해 알아봅시다. 정규 방정식(Normal Equation) 은 특정 조건에서 경사 하강법보다 파라미터의 값을 찾는 더 적절한 방법입니다. 정규 방정식은 반복적으로 돌릴 필요없이 한 번의 계산으로 파라미터를 직접 계산합니다.
고등학교 수학을 배웠던 기억을 더듬어 보면 위와 같은 2차 함수를 미분하여 0이 되는 지점이 그 함수의 최솟값이었습니다.
이러한 아이디어를 바탕으로 모든 파라미터에 대해 J를 편미분하면 그 최솟값을 구할 수 있습니다.
행렬 X에 변수들을 배치하고 벡터 y에 결과값을 배치합니다.
x(i) 변수 벡터가 위와 같을 때 디자인 행렬 X는 행마다 변수 벡터를 전치한 것과 같습니다. 이것을 반복하여 M x N+1 행렬을 만듭니다.
마지막으로 행렬 X와 벡터 y를 계산합니다. 이렇게 하면 파라미터 세타값을 구할 수 있습니다.
정규 방정식의 경우 학습률을 고를 필요도 없고 반복할 필요도 없지만 계산 속도가 O(n^3)로 매우 느리기 때문에 데이터가 많은 경우에는 적절하지 않습니다. 예를 들어 변수가 1000개가 넘어간다면 경사 하강법을 사용하는 것이 좋습니다.
Normal Equation Noninvertibility
만약의 X'X의 역행렬이 존재하지 않는다면 어떨까요? 교수님은 X'X의 역행렬이 없는 경우는 거의 없다고 합니다. 만약 없다면 대개 아래 두가지 경우에 해당합니다.
1. 불필요한 변수가 있을 때.
2. 너무 많은 변수가 있을 때.
이런 경우 불필요한 변수를 제거하거나 , 정규화를 진행합니다. 또 선형적으로 서로 종속된 변수들은 제거합니다.
혼자서 강의를 듣고 정리한 것이니 틀린 점이 있다면 언제든지 지적 부탁드립니다 :)
'Courses > Andrew Ng - Machine Learning' 카테고리의 다른 글
[Week 3] Logistic Regression Model (0) 2021.12.30 [Week 3] Classification and Representation (0) 2021.12.29 [Week 2] Multivariate Linear Regression (0) 2021.12.20 [Week 1] Linear Algebra Review (0) 2021.12.19 [Week 1] Parameter Learning (0) 2021.12.16