이번엔 선형회귀에서의 Multiple Features에 대해서 알아보겠다. 이전 포스팅들에서 언급했던 h(x)들은 사실 단일 feature, 즉, 1개의 feature만 있는 경우였다(h(x) = θ0 + θ1x). 하지만 실제 모델들은 당연히 feature가 하나만 있지 않고 무수히 많다. 그래서, Multiple Feautures인 경우에 대해 포스팅하려고 한다. (이번에도 Coursera 강의를 참고하여 포스팅합니다.)
위 표는 x를 통해 y를 예측하는 모델이다. 식을 보면, h(x) = θ0 + θ1x => 단일 feature이기 때문에 x가 하나밖에 없다. 좀 더 쉬운 이해를 위해 강의에서 한 말을 인용하면, 집의 크기(x)를 가지고 집의 가격(y)를 예측하는 모델이다. 즉, 이 모델에서는 집의 크기만이 집의 가격을 결정하는 모델인 것이다. 그럼 이번엔 아래 그림처럼 많은 feature가 있는 경우를 보자.
위 표를 보면 이렇게 여러 feature들이 있다. 보통 어떤 특정 현상은 어떤 하나의 현상에만 영향을 받는 게 아니라 대부분 다양한 현상들에 의해 영향을 받는다. 이 표 역시 집에 대한 예시인데, 예측하고자 하는 값(y)은 집값이고 집 크기(x1), 침실 수(x2), 층 수(x3), 집의 나이(x4)가 집값(y)에 영향을 미치는 feature들이다.
Notation 부분을 보면 n = feature 개수, x^(i) = i번째 training의 입력값(feature)이다. x^(i)에 대해 좀 더 부연설명을 하면, 오른쪽에 x^(2) = [1416, 3, 2, 40]이라고 나와있는데 2번째 training의 입력값(feature)이 [1416, 3, 2, 40]이라는 뜻이다. 이 부분이 위 표에 표시되어 있는 초록색 네모 부분이다. 표의 오른쪽에 m = 47이라고 써있는 부분은 행의 개수, 즉, training을 47번 한다는 뜻이다.
다시 Notation으로 돌아와서 xj^(i) = i번째 training의 j번째 feature값이다. 이 역시 예를 통해 이해해보자. 위 그림의 아래쪽을 보면 x3^(2) = 2를 보면 2번째 training의 3번째 feature(Number of floors)값이므로 2이다.
이제 지금까지 얘기했던 것들을 formal하게 정리해보자. 아까 맨 처음에도 나왔지만 단일 feature인 경우에는
Previously : h(x) = θ0 + θ1x이다. 하지만, feature가 여러 개 있는 경우는 저렇게 쓰지 않는다. 그래서, 빨간색으로 X표시가 되어 있는 것이고 feature가 여러 개 있는 경우는 아래처럼 h(x) = θ0 + θ1*x1 + θ2*x2 + θ3*x3 + θ4*x4 로 표현한다. 그 아래는 E.g(example)로 θ0=80, θ1=0.1, θ2=0.01, θ3=3, θ4=-2를 대입하여 h(x) = 80 + 0.1*x1 + 0.01*x1 + 3*x3 -2*x4로 나타낸 것이다. 다중 feature일 때의 h(x)에 대해 좀 더 자세하게 뜯어보자.
이전 예시에서는 4개의 feature로 예를 들었으나 사실 훨씬 더 많은 feature들이 존재할 수 있다. 그래서, 위 그림처럼 개로 표현했고 h(x) = θ0 + θ1*x1 + θ2*x2 + ... + θn*xn로 정의된다. 위 그림이 조금 어려울 수 있다. 천천히 한번 보자.
먼저 초록색 네모를 먼저 보자. h(x) = θ0*x0 + θ1*x1 + θ2*x2 + ... + θn*xn라고 정의되어 있다. 좀 전의 h(x)와의 차이를 알겠는가? 차이는 θ0에 x0가 곱해져 있는 것이다. 그런데, 분홍색 글씨로도 써져 있듯이 만약 x0=1이라면 θ0*x0 = θ0*1 = θ0가 되므로 결국 똑같은 식이 된다. 그래서 위에 "For convenience of notation, define x0 = 1."의 의미는 편의를 위해 x0를 1로 정의하라는 것이다.
이렇게 하는 이유는 식 h(x) = θ0 + θ1*x1 + θ2*x2 + ... + θn*xn에서 θ0~θn은 n+1개인 반면, x1~xn은 n개이므로 숫자가 맞지 않아 한 번에 같이 묶을 수가 없기 때문이다. x0 = 1로 정의하면 빨간색 네모처럼 X와 θ 모두 (n+1) X 1 행렬(벡터)로 나타낼 수 있다. x값들은 feature이고 x 벡터가 R^n+1에 포함관계(∈)로 정의되어 있는 것으로 보아 x 벡터는 n+1차원의 feature 벡터이고, θ값들은 weight(가중치)이고 θ 벡터가 R^n+1에 포함관계(∈)로 정의되어 있는 것으로 보아 θ 벡터는 n+1차원의 weight(가중치) 벡터이다.
그럼 이제 x 벡터와 θ 벡터로 h(x)를 나타내보자. 그에 대한 내용이 주황색 네모 부분이다. x 벡터와 θ 벡터는 둘 다 (n+1) X 1 벡터이므로 서로 내적을 할 수 없다. 따라서, 하나의 벡터(여기서는 θ 벡터)를 T(전치)라는 처리를 하여 1 X (n+1) 벡터로 바꿔준 다음 내적을 해줘야 한다. 이게 벡터라서 헷갈리면 행렬로 보도록 하자. (사실 행렬이나 벡터나 같은 말이다.)
x 행렬와 θ 행렬은 둘 다 (n+1) X 1 행렬이므로 서로 곱할 수 없다. 왜냐하면, 행렬의 곱셈은 (a X b) * (b X c) = (a X c) 이런 식으로 앞 행렬의 열 차원(b)과 뒷 행렬의 행 차원(b)이 서로 일치해야 곱할 수 있기 때문이다. 따라서, 하나의 행렬을 전치행렬(θ^T => T(전치) 표시 O, 제곱승 개념 X)로 만들어 버리면 주황색 네모처럼 θ 행렬의 차원(크기)이 1 X (n+1)이고 x 행렬의 차원이 (n+1) X 1이므로 곱셈을 하면 차원은 (1 X (n+1)) * ((n+1) X 1) = (1X1)이 나오게 된다.
또한 각 원소들의 곱셈 값들을 확인해보면 θ0*x0 + θ1*x1 + θ2*x2 + ... + θn*xn 즉, h(x)임을 확인할 수 있다. 따라서, h(x) = θ^T * x로 정의할 수 있다. 지금까지 설명한 내용들은 맨 처음에도 언급했지만 모두 선형회귀일 때를 말하는 것이고 맨 아래에 있는 Multivariate linear regression, 즉, 다변량 선형 회귀이다.
'Machine Learning' 카테고리의 다른 글
Gradient Descent for Multiple Variables (다변량에서의 경사하강법) (0) | 2020.08.22 |
---|---|
Gradient Descent (경사하강법) (2) (feat. Learning rate) (0) | 2020.07.31 |
Gradient Descent (경사하강법) (1) (0) | 2020.07.16 |
Cost Function (비용 함수) (2) (0) | 2020.06.14 |
Cost Function (비용 함수) (1) (0) | 2020.06.12 |
댓글