본문 바로가기
학교 수업/기계학습

2. Linear Regression with multiple variable (1)

by Godgil 2021. 10. 17.

 

1. Multiple features

지난 번 포스팅에서는 x라는 feature 하나에 대해서만 Linear Regression을 적용해 보았다.

하지만, feature 하나로 예측하기란 사실상 어려운 경우가 많다.

때문에, 이번 포스팅에서는 여러 개의 feature를 사용하는 Linear Regression을 살펴보려고 한다.

 

저번부터 다루었던 집값 예측 문제를 살펴보도록 하자.

저번에는 단순히 집의 크기(size)만 가지고 예측을 했었다.

하지만, 집값에는 화장실 개수, 건축년도, 위치 등등 다양한 요소가 반영이 될 수 있다.

여기서 용어를 좀 확실히 정리하고 가도록 하자.

 

가장 오른쪽에 보이는 m은 Training data의 개수이다. 47이라는 소리는 data가 47개 있다는 뜻이다.

x1, x2, x3, x4는 집 값을 결정하는데 필요한 요소 즉 feature이다. 

이 feature의 개수를 n이라고 표현한다.

위 첨자로 보이는 (i)는 i번째 Training data의 의미이고,

아래 첨자로 보이는 (j)는 i번째 Training data에서 j번째 feature의 value이다.

 

x의 아래 첨자로 1, 위 첨자로 4가 들어갔다.

즉, 이 말은 4번째 Training data의 1번째 feature value라는 뜻이다.

따라서 (3)이 정답이 된다.

 

2. Hypothesis

 

다음은 가설함수를 살펴보자. 

이전 포스팅에서는 feature가 하나밖에 없어서 아래처럼 표기했다.

하지만, 이제는 feature가 여러개가 되었고 가설함수 또한 다르게 표현이 되어야 한다.

간단하다.

theta도 늘어남과 동시에 feature에 맞는 theta를 곱해서 더해주면 된다.

그러면 생각해보자. 위의 형태는 행렬의 곱으로 나타낼 수 있다.

아래와 같이 feature에 대한 x 행렬과, theta 행렬의 곱으로 표현이 가능하다.

행렬의 곱을 하려면 앞 행렬의 column 크기 == 뒷 행렬의 row의 크기여야 한다.

따라서, X0를 x 행렬에 추가해주도록 한다. (차원을 맞추기 위해)

또, 둘 다 n+1 * 1의 행렬이므로, 한 쪽을 Transpose 시켜줘야 계산이 된다.

이는 Theta를 Transpose 시켜 줄 것이고, 가설함수는 다음과 같이 나타낼 수 있다.

 

 

3. Gradient descent for multiple variable

 

Gradient descent의 개념은 별 차이가 없다.

다만, 한번 더 상기하고 넘어가도록 하자.

1. Hypothesis(가설 함수): 가설함수는 위에서 설명했듯이 theta 행렬에 x행렬을 곱한것이다.

2. Parameters : theta의 행렬이다. 0번~ n번까지 총 n+1개의 크기를 갖는다

3. Cost function : 비용함수이다. J(θ)라고 표현하기로 했으며, 오차의 제곱을 전부 더해서 2m으로 나눈것이다.

4. Gradient descsent : 비용함수가 최소가 되는 θ를 찾아가야한다. 따라서 θ를 계속해서 업데이트 시켜주어야 하는데, 각각의 θ에 대해서 J(θ)를 미분한 값*(alpha)를 빼주는것을 반복한다.

 

n개의 feature가 있고, cost function이 다음과 같이 정의되어 있을때, Linear regression에서 Cost function에 대한 올바른 것을 찾으라는 문제이다.

하나씩 보면서 찾아보도록하자, 왜 틀렸는지가 중요하다.

 

(1) 이상이 없어 보인다. 

(2) 이상이 없어 보인다. ( θT* x(i)로 벡터라이징 되어있는 값을 풀었다고 생각하면 이해가 될 것이다. 그래도 이해가 되지 않는다면, 아래 사진을 보고 확인하길 바란다. 숫자에 주의하자. feature와 parameter Theta의 곱이므로, 0부터 시작해서 feature의 개수인 n까지 총 n+1개이다.)

(3) (2)와 다른점은 j가 1부터 시작한다는 점이다. 위에서 설명했지만, 0부터 시작한다.

(4) 그냥 말이 되지 않는다. y는 Training 데이터에서 결과값이고, 1~m개까지 m개가 존재한다.

이해가 되지 않는다면 아래 표를 다시 유심히 살펴보도록 하자.

 

Gradient descent에서 업데이트 해 주는 값을 정리해보도록 하자.

식은 엇비슷하니 그냥 외우는걸 추천한다.

 

댓글