Adventure Time - Finn 3
본문 바로가기
AI/ML

Multi-variable Linear Regression : 여러 변수로 예측 정확도 높이기

by hyun9_9 2026. 3. 6.

지난 포스트까지는 변수 하나(공부 시간)로 시험 점수를 예측했습니다.
하지만 현실에서는 점수에 영향을 미치는 요소가 훨씬 많습니다.
이번엔 여러 변수를 사용해 더 정확하게 예측하는 방법을 알아보겠습니다.


왜 여러 변수가 필요할까?

공부 시간 하나만으로 예측하는 것보다, 컨디션, 집중력, 예습 정도 등
다양한 변수를 함께 사용하면 훨씬 더 정확한 예측이 가능합니다.

아래처럼 공부 시간 하나만 있는 데이터를 보면:

 

x (hours)  y (score)
10 90
9 80
3 50
2 60
11 40

공부 시간이 많다고 무조건 점수가 높지 않다는 걸 알 수 있습니다.
다른 변수들이 영향을 미치고 있기 때문입니다.


Multi-variable (Multi-feature)

여러 변수를 함께 사용한 데이터 예시입니다.

  

x1 (quiz 1)  x2 (quiz 2) x3 (midterm 1) y (final)
73 80 75 152
93 88 93 185
89 91 90 180
96 98 100 196
73 66 70 142

변수가 3개(x1, x2, x3)로 늘어났습니다.


가설(Hypothesis)

변수가 1개일 때:

H(x) = Wx + b

변수가 3개로 늘어나면:

H(x1, x2, x3) = w1*x1 + w2*x2 + w3*x3 + b

변수가 늘어난 만큼 가중치(W)도 늘어납니다.


비용 함수(Cost Function)

cost(W, b) = 1/m * ∑(H(x1,x2,x3) - y)²

변수가 여러 개가 되면 가중치 개수도 늘어나지만, cost 함수의 형태 자체는 동일합니다.


문제점 : 변수가 수백 개라면?

변수가 3개일 때는 w1*x1 + w2*x2 + w3*x3 으로 쓸 수 있지만,
변수가 수백 개가 된다면 일일이 써주는 것은 매우 불편합니다.

이때 Matrix(행렬) 를 사용하면 간단하게 해결할 수 있습니다.


Matrix로 표현하기 : Dot Product (점곱)

행렬의 곱셈, Dot Product(점곱) 를 사용하면 변수가 아무리 많아도 간단하게 표현할 수 있습니다.

|1 2 3|   |7  8 |   |58  64|
|4 5 6| * |9  10| = |139 154|
          |11 12|

Hypothesis using Matrix

변수가 3개인 가설을 행렬로 표현하면:

(x1  x2  x3) * |w1|  =  (x1*w1 + x2*w2 + x3*w3)
               |w2|
               |w3|

이를 행렬 X, 행렬 W로 묶어서 표현하면:

H(X) = XW

단 두 글자로 표현이 됩니다!


데이터가 여러 개일 때도 똑같이

행렬을 사용하면 데이터의 개수(인스턴스)와 상관없이 동일하게 표현할 수 있습니다.

(x1   x2   x3 )   |w1|   (x1*w1  + x2*w2  + x3*w3 )
(x11  x12  x13) * |w2| = (x11*w1 + x12*w2 + x13*w3)
(x21  x22  x23)   |w3|   (x21*w1 + x22*w2 + x23*w3)
(x31  x32  x33)           (x31*w1 + x32*w2 + x33*w3)

[4, 3]          [3, 1]   [4, 1]

Dot Product 조건 : 열과 행이 일치해야 한다

Dot Product가 이루어지려면 X 행렬의 열(column) 수와 W 행렬의 행(row) 수가 일치해야 합니다.

데이터 개수는 n개로 무관하기 때문에:

[n, 3]  *  [3, 1]  =  [n, 1]

컬럼이 3개이면 Weight의 행(row) 수도 반드시 3개여야 합니다.


W의 Shape는 어떻게 결정될까?

출력이 2개인 경우를 예로 들면:

[n, 3]  *  [?, ?]  =  [n, 2]

데이터 개수와 상관없이, 입력 컬럼 수와 출력 수에 의해 W의 shape가 결정됩니다.

[n, 3]  *  [3, 2]  =  [n, 2]

정리

개념 설명

Multi-variable 여러 변수를 사용해 예측 정확도를 높이는 방법
Dot Product (점곱) 행렬 곱셈으로 수식을 간결하게 표현
H(X) = XW 행렬을 사용한 가설 표현
W의 shape 입력 컬럼 수와 출력 수에 의해 결정 [입력, 출력]

다음 포스트에서는 이 Multi-variable 선형 회귀를 실제 TensorFlow 코드로 구현해보겠습니다! 🚀