시작하며
행렬(Matrix) 이 가지는 가장 큰 의미는 아무리 많은 데이터라도 행렬을 이용하면 계산과 표현이 간단해진다는 것입니다.
이번 포스팅에서는 우리가 그동안 배운 선형 회귀(one-variable Logistic Regression) 가 특징(feature)이 하나가 아닌 두개 이상일때(Multiple Features) 어떻게 나타나는지 알아보겠습니다.
다변수 선형 회귀(Multivariable Logistic Regression)
여기 공부한 시간(hours)에 따른 시험 점수(exam score) 를 예측하는 상황을 생각해보겠습니다.
여기서 주목해야할 것은 시험점수라는 결과값 y를 예측하기 위해 공부한 시간 x라는 하나의 feature만 쓰였다는 점입니다. 그래서 위 이미지에서 one-variable / one-feature 라는 말이 기입되어 있는 것이고 이 둘은 같은 의미입니다.
변수가 하나일 때의 선형 회귀(one-variable logistic regression) 는 위 이미지와 같이 우리가 지금까지 배운 가설함수(Hypothesis), 비용함수(Cost Function), 경사 하강 알고리즘(Gradient Descent Algorithm)을 그대로 이용하면 됩니다.
이제는 우리가 시험 점수를 예측할 때 공부 시간뿐 아니라 수면 시간 등 2개 이상의 feature(Multiple Feature) 을 이용하는 경우를 생각해보겠습니다.
위 예시의 경우 시험 점수(y)를 예측하기 위해 (x1, x2, x3) 세 가지 feature를 이용합니다.
가설함수(Hypothesis)
위 식은 feature가 세 개 일 때 가설함수인데 크게 달라진건 없습니다.
- 'b'는 상수 이기 때문에 변수의 개수에 영향을 받지 않고 언제나 하나입니다.
- 그러나 w(=θ)와 x의 개수는 변수의 개수와 동일합니다. 즉 하나의 wx가 하나의 특징을 담당한다고 생각하면 됩니다.
이제 feature가 n개일 때 로 가설함수를 일반화 시켜보겠습니다. 보다시피 기존에 우리가 알던 'Linear Regression'에서 'Multi-variable Linear Regression'으로 확장해도 식을 세우는 건 어렵지 않습니다.
하지만 우리가 주목해야할 것은 feature가 매우 많은 이러한 상황에서 식을 세운 후 '어떻게 계산할 것인가' 입니다.
예를 들어 어떤 데이터에 대해 우리에게 주어진 feature가 100만개이고 각 feature당 데이터가 10000개라고 가정했을 때 (100만 * 1000), 일반적인 대입을 통한 반복 연산을 이용하면 100억번의 연산을 해야하고 이것은 당연히 말도 안됩니다.
하지만 많은 데이터를 다루는데 용이한 행렬 을 이용하면 이를 해결할 수 있습니다.
행렬(Matrix)를 이용한 표현
Feature가 세 개이고 각 Feature에 대한 주어진 데이터가 하나인 경우, 1 x 3 차원의 x에 대한 행렬 X 와 3 x 1 차원의 w에 대한 행렬 W, 이 둘을 행렬곱 해주면 간단한 계산과 함께 가설함수를 간단히 표현할 수 있습니다.
하지만 방금 경우와 달리 똑같이 feature는 세 개지만 각 feature당 주어진 데이터가 5개(3 x 5)라면 어떨까요?
이것도 위와같이 식을 전개한다면 어렵지 않습니다. (참고로 조심하셔야 하는 x51이라고 하면 이것은 1번째 feaure의 5번째 데이터를 의미하는 것이니 순서를 혼동하셔서 헷갈리지 않으셨으면 합니다.) 그리고 행렬곱을 할때 앞행렬의 행 크기와 뒷 행렬의 열 크기가 같아야 한다는 점을 유의해야 합니다.
마지막으로 3개의 feature에 대해 각각 5개의 데이터가 주어지고 이번엔 그에 대한 3개의 w에 각각 2개의 가중치가 주어지는 경우입니다.
결론적으로 우리는 앞으로 머신러닝을 공부하면서 다룰 데이터의 Feature는 수 십개에서 수 천개, 수 만개가 될 수도 있기 때문에, 우리가 기억해야할 가설함수 h는 'H(X) = XW'가 되어야 합니다.
비용함수(Cost Function)
가설함수에 이어 feature가 세 개 일 때 비용함수 입니다. 이 경우 우리가 위에서 봤던 가설함수를 그대로 대입 해주기만 하면 됩니다.
즉 기존에 'H(x) - y' 였던 것이 'H(x1,x2,x3) - y(=w1x1 + w2x2 + w3x3 + b - y )' 로 바뀌는 것입니다.
경사 하강 알고리즘(Gradient Descent Algorithm for multiple features)
우리가 지금까지 Multi-variable 일 때 배웠던 것들이 경사 하강 알고리즘 에 적용되면 어떻게 되는지 알아보겠습니다.
왼쪽은 one-variable일때의 우리가 알던 기존의 경사하강 알고리즘 이고 오른쪽은 변수가 1개 이상일때 일반화할 수 있는 경사 하강 알고리즘(Gradient Descent Algorithm for multiple features) 입니다.
그저 우리가 위에서 배운것들을 그대로 대입 해주면 됩니다. 이렇듯 행렬을 이용하면 우리는 가설함수부터 경사 하강 알고리즘까지 심플한 식 으로 표현이 가능합니다.
요약
1) feature가 두개 이상일 때는 행렬을 이용하여 우리가 배웠던 식들을 표현한다.
2) H(X) = XW, 이것만 알면 Multi-Variable일 때 비용함수와 경사 하강 알고리즘은 그냥 대입만 해주면 된다.
'AI > Coursera ( Machine Learning )' 카테고리의 다른 글
[머신러닝] Normal Equation vs Gradient Descent Algorithm(경사 하강 알고리즘) in 선형 회귀(linear regression) (0) | 2020.04.30 |
---|---|
[머신러닝] 데이터 전처리(Feature Scaling)을 이용한 경사 하강 알고리즘(Gradient Descent Algorithm) (0) | 2020.04.30 |
[머신러닝] 머신러닝 공부 전 꼭 알아야 할 행렬(Matrix)과 벡터(Vector) (0) | 2020.04.30 |
[머신러닝] 경사 하강 알고리즘(Gradient Descent Algorithm)이란 (5) | 2020.04.30 |
[머신러닝] 비용함수(Cost Function)란 (10) | 2020.04.30 |