연립방정식, 역행렬, 행렬식
연립방정식을 행렬 방정식 Ax = b로 쓰고, 가우스 소거법으로 푸는 원리, 해가 하나, 없음, 무수히 많음으로 갈리는 이유, 계수와 역행렬과 행렬식의 관계를 익혀요. 해가 없는 방정식을 가장 그럴듯하게 푸는 최소 제곱법이 곧 선형 회귀라는 것까지 연결해요.
"사과 2개와 배 3개가 8천 원, 사과 1개와 배 1개가 3천 원이면 각각 얼마일까?" 중학교 때 풀던 연립방정식이에요. 이 평범한 문제가 행렬로 바뀌면, 데이터에 가장 잘 맞는 직선을 찾는 머신러닝의 선형 회귀와 같은 문제가 돼요. 이번 강의에서는 지난 강의의 "공간을 움직이는 행렬" 그림을 가지고 연립방정식, 역행렬, 행렬식을 한 줄로 꿰어요.
연립방정식을 행렬로 쓰기
간단히 로 써요. 변수가 1000개, 식이 1000개여도 모양은 똑같아요.
변환으로 읽기
지난 강의의 관점으로 보면 질문이 이렇게 바뀌어요. "변환 A가 어떤 벡터 x를 b로 보냈는가?" 즉 도착점 b를 보고 출발점 x를 거꾸로 찾는 문제예요. 변환을 되돌릴 수 있으면 답이 하나로 정해지고, 되돌릴 수 없으면(공간이 찌그러지면) 답이 없거나 너무 많아요.
가우스 소거법
손으로 풀 때 하던 "한 식에 몇 배 해서 다른 식에서 빼기"를 체계화한 것이 가우스 소거법이에요. 계수와 우변을 한 행렬에 나란히 적고(첨가 행렬), 세 가지 조작만 해요.
- 두 행을 맞바꾸기
- 한 행에 0이 아닌 수를 곱하기
- 한 행에 다른 행의 몇 배를 더하기
이 조작들은 해를 바꾸지 않아요. 목표는 계단 모양(위 삼각 모양)을 만드는 거예요.
둘째 줄에서 이니 , 첫 줄에 넣으면 이라 이에요. 사과 천 원, 배 2천 원이에요. 아래에서부터 거꾸로 대입하는 이 과정을 후진 대입이라고 해요.
변수가 개면 소거법의 계산량은 대략 에 비례해요. 1000개면 약 10억 번이라 컴퓨터에게는 순식간이지만, 100만 개면 사람이 기다릴 수 없는 수준이 돼요. 그래서 거대한 문제에는 근사적으로 반복해서 푸는 방법을 써요(경사 하강법도 그중 하나예요).
해가 갈리는 세 가지 경우
변수 2개짜리 식 하나는 평면 위의 직선이에요. 연립방정식의 해는 두 직선이 만나는 점이에요.
| 경우 | 그림 | 행렬 관점 |
|---|---|---|
| 해가 하나 | 두 직선이 한 점에서 만남 | 변환이 공간을 찌그러뜨리지 않음 |
| 해가 없음 | 두 직선이 평행 | b가 찌그러진 공간 밖에 있음 |
| 해가 무수히 많음 | 두 직선이 겹침 | b가 찌그러진 공간 안에 있고 여러 점이 b로 모임 |
이 식은 해가 없어요. 둘째 식을 2로 나누면 인데, 첫 식은 라고 하니 모순이죠. 행렬 의 두 열 와 가 같은 방향이라서, 이 변환은 평면 전체를 한 직선 위로 찌그러뜨려요. 그 직선 위에 없는 로는 갈 수가 없어요.
계수: 변환 후 남는 차원
변환 후 공간이 몇 차원으로 남는지를 계수(rank)라고 해요.
- 행렬의 계수가 2: 평면이 평면으로. 찌그러지지 않음.
- 계수가 1: 평면이 직선으로 찌그러짐.
- 계수가 0: 모든 점이 원점으로.
계수는 "열 벡터들 중 진짜로 새로운 방향을 가진 것이 몇 개인가"와 같아요. 열 두 개가 같은 방향이면 하나는 다른 하나의 배수일 뿐이라 정보를 더 주지 못해요. 이런 상태를 선형 종속이라고 해요.
데이터에서의 계수
데이터 행렬에서 어떤 특징이 다른 특징들로 계산된다면(예: "총점" 열이 "국어 + 수학" 열과 같다면) 그 열은 선형 종속이에요. 새 정보가 없는 데다, 회귀 분석에서 계산을 불안정하게 만들어요(다중 공선성). 머신러닝 트랙에서 특징을 고를 때 다시 만나요.
역행렬: 변환 되돌리기
변환 를 정확히 되돌리는 변환이 역행렬 이에요.
역행렬이 있으면 방정식이 단번에 풀려요.
행렬의 역행렬은 공식이 있어요.
분모의 가 보이나요? 지난 강의의 행렬식이에요. 행렬식이 0이면 0으로 나눠야 하니 역행렬이 없어요.
모든 것이 하나로 이어진다
정사각 행렬 에 대해 아래는 모두 같은 말이에요.
- 의 역행렬이 있다.
- 이다.
- 의 해가 모든 에 대해 정확히 하나다.
- 의 계수가 꽉 찼다(n×n이면 n).
- 의 열들이 선형 독립이다.
- 변환 가 공간을 찌그러뜨리지 않는다.
선형대수 교과서에서 "가역 행렬 정리"라고 부르는 내용인데, 지금까지의 그림으로 보면 당연한 이야기예요. 공간을 찌그러뜨리지 않으면 되돌릴 수 있고, 되돌릴 수 있으면 답이 하나로 정해져요.
행렬식 더 알아보기
에서 행렬식은 넓이의 배율이었어요. 에서는 부피의 배율이에요. 단위 정육면체가 변환 후 몇 배의 부피가 되는지예요. 성질 몇 가지를 알아 두세요.
첫 성질은 그림으로 보면 당연해요. 넓이를 2배 늘리고 다시 3배 늘리면 6배가 되죠.
넘파이로 풀기
import numpy as np
A = np.array([[2, 3], [1, 1]])
b = np.array([8, 3])
print(np.linalg.solve(A, b)) # [1. 2.]
print(np.linalg.det(A)) # -1.0 (0이 아니니 해가 하나)
print(np.linalg.inv(A)) # 역행렬
print(np.linalg.matrix_rank(np.array([[1, 1], [2, 2]]))) # 1
실무 팁 방정식을 풀 때
inv(A) @ b보다solve(A, b)를 쓰세요. 역행렬을 통째로 구하는 건 계산도 많고 오차도 커요. 수치 계산의 세계에서는 "역행렬은 거의 구하지 않는다"가 상식이에요.
거의 찌그러진 행렬
행렬식이 0은 아니지만 0에 아주 가까우면 문제가 생겨요.
A = np.array([[1, 1], [1, 1.0001]])
print(np.linalg.solve(A, [2, 2.0001])) # [1. 1.]
print(np.linalg.solve(A, [2, 2.0002])) # [0. 2.] b가 조금 변했는데 답이 크게 변함
입력이 아주 조금 바뀌었는데 답이 확 달라져요. 이런 행렬을 "조건이 나쁘다"(ill-conditioned)고 해요. 측정값에는 늘 작은 오차가 있으니, 이런 문제의 답은 믿기 어려워요. np.linalg.cond(A)로 조건수를 재 볼 수 있어요. 값이 클수록 위험해요.
해가 없을 때: 최소 제곱법
현실의 데이터는 오차가 있어서, 식이 변수보다 훨씬 많고 모든 식을 정확히 만족하는 해는 없어요. 예를 들어 집 100채의 데이터로 "가격 = 면적 + "를 맞추려 하면, 식은 100개인데 변수는 , 두 개뿐이고, 모든 점을 지나는 직선은 없어요.
그럴 땐 오차의 제곱합이 가장 작은 해를 찾아요.
그림으로 보면, 가 의 열들이 만드는 공간 밖에 있을 때 그 공간 위의 가장 가까운 점으로 투영하는 거예요. 그 해는 이 방정식(정규 방정식)을 풀면 나와요.
area = np.array([59, 84, 112, 76, 95])
price = np.array([5.1, 7.0, 9.4, 6.3, 8.1]) # 억 원 (예시 값)
A = np.column_stack([area, np.ones_like(area)]) # [면적, 1] 열로 만든 행렬
(a, b), *_ = np.linalg.lstsq(A, price, rcond=None)
print(f"가격 ≈ {a:.4f} × 면적 + {b:.3f}")
이게 바로 선형 회귀예요. 통계 트랙과 머신러닝 트랙에서 다시 만나는데, 그때 이 강의의 "투영" 그림을 떠올리면 공식이 외울 대상이 아니라 당연한 결과로 보일 거예요.
실습
- 아래 연립방정식을 가우스 소거법으로 손으로 풀고,
np.linalg.solve로 확인하세요.
(답: , , )
- 행렬식이 0이 되도록 의 를 정하세요.
- 최소 제곱 예제에 집 데이터를 몇 개 더 넣고, 직선이 어떻게 바뀌는지 보세요.
자주 하는 실수
- 역행렬로 방정식 풀기.
solve나lstsq를 쓰세요. - 행렬식이 0이 아니면 안전하다고 믿기. 0에 가까우면 답을 믿기 어려워요. 조건수를 확인하세요.
- 해가 없으면 포기하기. 데이터 문제에서는 최소 제곱 해가 답이에요.
- 정사각이 아닌 행렬의 역행렬 구하기. 역행렬은 정사각 행렬에만 정의돼요.
점검 문제
- 의 행렬식과 계수는?
- 의 역행렬은?
- 행렬식이 0인 행렬에 대해 의 해는 어떤 경우들이 있나요?
- 최소 제곱법은 그림으로 보면 무엇을 하는 건가요?
정답
- 이고, 둘째 열이 첫째 열의 1/3배라 계수는 1이에요.
- 행렬식이 이니 예요.
- b가 찌그러진 공간 위에 있으면 해가 무수히 많고, 밖에 있으면 해가 없어요. 하나로 정해지는 경우는 없어요.
- b를 A의 열들이 만드는 공간 위의 가장 가까운 점으로 투영해서, 그 점에 도달하는 x를 찾는 거예요.
다음 강의
다음 강의에서는 고유값과 고유벡터를 배워요. 변환을 해도 방향이 바뀌지 않는 특별한 화살표들이 있는데, 이게 변환의 뼈대예요. 구글 검색 순위, 데이터의 주성분, 시스템의 안정성이 모두 이 화살표로 설명돼요.