지난 포스트까지는 변수 하나(공부 시간)로 시험 점수를 예측했습니다.
하지만 현실에서는 점수에 영향을 미치는 요소가 훨씬 많습니다.
이번엔 여러 변수를 사용해 더 정확하게 예측하는 방법을 알아보겠습니다.
왜 여러 변수가 필요할까?
공부 시간 하나만으로 예측하는 것보다, 컨디션, 집중력, 예습 정도 등
다양한 변수를 함께 사용하면 훨씬 더 정확한 예측이 가능합니다.
아래처럼 공부 시간 하나만 있는 데이터를 보면:
| 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 코드로 구현해보겠습니다! 🚀
'AI > ML' 카테고리의 다른 글
| Logistic Regression : 0과 1로 분류하기 (0) | 2026.03.08 |
|---|---|
| Multi-variable Linear Regression 코드로 구현해보기 (TensorFlow) (0) | 2026.03.07 |
| 경사 하강법(Gradient Descent) 코드로 구현해보기 (TensorFlow) (0) | 2026.03.05 |
| 경사 하강법(Gradient Descent) 으로 최적의 W 찾기 (0) | 2026.03.04 |
| 선형 회귀 코드로 구현해보기 (TensorFlow) (0) | 2026.03.03 |