Andrew Ng[앤드류 응]- Machine Learning(머신러닝) 2주차 강의노트 본문
Andrew Ng[앤드류 응]- Machine Learning(머신러닝) 2주차 강의노트
점핑노루 2021. 7. 2. 11:49Linear Regression with Multiple Variables - Multiple Features
Univariate linear regression과 달리 multiple feature은 특정 y값(종속변수)을 결정짓는 feature(독립변수)가 여러개이다. 간단한 notation을 살펴보면
- n = feature의 개수
- x^(i) = i번째 training example의 모든 입력값
- xj^(i) = i번째 training example의 j번째 feature
임을 확인할 수 있다.
Univariate linear regression의 가설과는 달리 multiple feature(위 슬라이드처럼 feature이 4개)이 있을 때에는 가설을
형태로 설정한다. 그리고 각각의 parameter을 맞춘다.
수식의 편의를 위해 x0를 1로 정의한다. x와 θ를 n+1차원의 vectorized form으로 구성한 다음, θ를 transpose(전치)하면 두 벡터 간의 곱이 이루어진다. 그렇게 하면
의 형태가 동일하게 나온다. 이를 Multivariate linear regression이라고 한다.
Linear Regression with Multiple Variables - Gradient Descent for Multiple Variables
우리는 parameter을 θ1부터 θn까지 열거하는 대신 θ라고 간편화할 것이다. 이 θ는 n+1차원 벡터이다.
Multiple variables가 있을 때 cost function은 위 슬라이드와 같은 형태로 구성될 것이다. 여기서의 h(x^(i))는 위의 hypothesis임을 잊지 말자.
마지막으로 gradient descent를 할 때에는 각 θj값을 편미분하여 특정한 learning rate이랑 곱한 다음, 동시에 θ들을 조정한다.
동시 조정의 과정은 오른쪽에 나타나 있다. X0가 1이라는 사실을 기억하자.
Linear Regression with Multiple Variables - Gradient Descent in Practice 1: Feature Scaling
Feature Scaling은 fetaure들을 비슷한 척도에 놓는 것이다. Feature scaling을 하는 이유는 다음 예를 통해 확인할 수 있다. x1이 집의 크기고 x2가 침실의 개수라고 치자. 이 때 x1 값의 범위(0-2000)와 x2 값의 범위(1-5)는 엄청난 차이가 있을 것이다. 그렇게 되면 gradient descent를 하는 과정에서 알고리즘은 엄청나게 많은 step을 밟아서 global optimum에 도달할 것이다. 이런 과도한 계산 비용을 줄이기 위하여 모든 변수의 범위를 0과 1사이로 설정한다. 오른쪽 같은 경우 xi값을 0과 1사이로 설정하였고, -1과 1 사이로 설정해도 무방하다.
Mean normalization을 사용하여 xi의 평균을 구한 다음, 각각의 xi에서 그 평균을 뺀 다음 범위(range)로 나누어준다. 통계학에 일가견이 있는 사람들이라면 standard deviation(표준편차)로 나누어줘도 좋다.
Linear Regression with Multiple Variables - Gradient Descent in Practice 2: Learning Rate
Learning rate α를 설정할 때 주의할 점들은 아래와 같다.
1. Convergence(수렴) 여부를 판별할 때에는 J(θ)가 한 번 움직일 때 10^-3 이하로 움직이면 수렴한다고 판단하고 알고리즘을 멈춰도 된다.
2. α가 작으면 느리게 converge한다.
3. α가 크면 각 횟수마다 J(θ)가 줄어들지 않고 overshoot할 때도 있다.
즉, 적당한 α값을 찾아야 한다. 값을 찾기 위해서 0.001, 0.01, 0.1 으로 증가시키며 확인하고, α가 증가할 때마다 x3 을 해보기도 하여라.
Linear Regression with Multiple Variables - Features and Polynomial Regression
위의 예시와 같이 집 면적의 가로, 세로 길이가 각각의 feature로 되어 있을 때, feature들을 하나의 feature로 만들어도 된다. 가로랑 세로를 곱하면 면적이기 때문이다.
또한 우리는 여태까지 선형적인 관계만 살펴보았다. 그러나 regression은 항상 선형의 형태로 나타나는 것은 아니다. feature에 제곱, 세제곱, 루트 등이 있을 때 그 모양은 자유자재로 바뀐다. 이 때 feature scaling이 특히 더 중요해지는데, 만약 제곱, 세제곱을 하면 값의 범위가 너무 커질 수도 있기 때문이다.
Linear Regression with Multiple Variables - Normal Equation
Normal equation은 θ를 구하는 다른 방법이다.
m개의 training example이 있고 n개의 feature이 있다고 할 때, 아래와 같이 m*(n+1)행렬을 만들 수 있다. 이 때 1번째 열은 위에서 보았듯이 편의를 위해 모두 1로 설정한다. 그리고 θ를 구할 때 슬라이드 아래에 붉은색으로 표시해놓은 공식을 활용한다. 이 때 y는 m차원의 row vector의 형태로 이루어져 있다.
행렬 X를 만드는 방법은 아래와 같다.
예를 들어 x^(i)에 특정 값들이 row vector들로 이루어져 있을 때, 모든 i에 대하여 row vector들을 전치하여 합친다. 그렇게 하면 오른쪽 상단과 같이 m*(n+1)행렬이 생성된다.
그리고 위의 공식을 대입하면 된다. 이 때 -1은 역행렬을 나타내는 기호이다. 옥타브를 쓸 때에는 pinv함수를 활용하면 된다.
그러나 normal equation에도 장단점이 존재한다.
α값을 따로 설정해주지 않아도 되고, gradient descent처럼 알고리즘을 반복할 필요도 없다.
그러나 역행렬을 계산하는 데에 많은 비용이 소요되어 n이 클 때에는 계산이 매우 느리다.
Linear Regression with Multiple Variables - Normal Equation and Non-Invertibility
Normal Equation에서 역행렬을 진행할 때, 역행렬이 없는 2가지 경우가 있다.
1. 변수가 중복되어 linearly dependent(선형 종속)한 값들이 한 행렬 안에 있을 때
2. feature들이 너무 많아 training example보다 많을 때.
1의 해결법은 중복되는 하나의 feature을 제거하는 것이고,
2의 해결법은 feature들을 제거하거나, regularization(정규화)라는 기법을 사용하는 것이다. Regularization에 대한 것은 추후에 살펴볼 것이다.
슬라이드 출처
https://www.coursera.org/learn/machine-learning?
'AI > Machine Learning- Andrew Ng' 카테고리의 다른 글
Andrew Ng[앤드류 응]- Machine Learning(머신러닝) 4주차 강의노트 (0) | 2021.07.12 |
---|---|
Andrew Ng[앤드류 응]- Machine Learning(머신러닝) 3주차 강의노트 (0) | 2021.07.05 |
Andrew Ng[앤드류 응]- Machine Learning(머신러닝) 1주차 강의노트 (0) | 2021.06.30 |
Andrew Ng- Machine Learning 강의 소개 (0) | 2021.06.30 |