자주 하는 실수와 요약
자주 하는 실수
| 실수 | 나온 문제 | 바로잡는 법 |
|---|---|---|
| 점들이 대각선으로 서 있으면 가장 가까운 직선이 45°라고 봄 | 1 | 공분산 행렬의 고유벡터를 구한다. 멀리 선 점이 직선을 끌어당긴다 |
| 고윳값이 같은 자료에서 가장 가까운 직선이 없다고 봄 | 2 | 모든 방향이 똑같이 좋아 답이 하나로 정해지지 않는 것이다 |
| 평균을 빼지 않고 직선이나 축을 구함 | 2 | 평균을 지나는 직선이 가장 가깝다. 비키면 비킨 거리의 제곱만큼 오차가 는다 |
| 축 방향으로 같은 거리면 같은 만큼 드문 점이라고 봄 | 3 | 그 방향의 표준편차로 나눠 잰다(화이트닝) |
| 랭크 1 근사는 바뀐 칸만 틀리게 두는 것이라고 봄 | 4 | 에커트–영: 오차는 버린 특잇값의 제곱합. 차이를 여러 칸에 나눠 진다 |
| 그림 수만큼의 작은 행렬로는 그림 공간의 축을 못 얻는다고 봄 | 5 | AᵀAv = λv 이면 Av 가 AAᵀ 의 고유벡터다 |
| 랭크 r 행렬의 숫자를 B, A 칸 수 그대로 셈 | 6, 11 | 바꿔치기 G 만큼 r² 을 뺀다. 자유도 r(m + n − r) |
| 덮는 범위가 넓은 목록일수록 좋다고 봄 | 7 | 목록을 적는 비트와 목록 안의 번호 비트를 함께 센다 |
| 두 부분 코드가 진짜 축을 놓치면 기준이 틀렸다고 봄 | 8 | 점이 적으면 그 축을 믿을 근거가 모자란 것이다. 이득은 n 배, 값은 log n 배로 큰다 |
| 「분산 95%」로 축 수를 정함 | 9 | 노이즈 칸이 늘면 노이즈 축까지 데려온다. 축 하나하나가 제값을 치르는지 본다 |
| 영화 평균이나 사람 평균으로 빈칸을 채움 | 10 | 낮은 랭크를 쓰면 영화와 사람을 함께 본다 |
| 정할 숫자보다 칸이 많으면 언제나 채울 수 있다고 봄 | 11 | 사람마다, 영화마다 적어도 r 칸은 보여야 한다 |
| 보이는 칸의 오차로 랭크를 고름 | 12 | 축이 많으면 노이즈까지 외운다. 떼어 둔 칸이나 코드 길이로 고른다 |
요약
이 장에서 한 일을 정리해 보자. 평균을 지나는 직선에 대해 (평균까지 거리)² = (그림자의 자리)² + (직선까지 거리)²이므로, 그림자의 분산과 직선까지 거리 제곱의 평균은 합이 늘 같다. 그래서 점에 가장 가까운 직선(피어슨, 1901)과 가장 넓게 퍼진 방향(호텔링, 1933)은 같은 직선이고, 그 방향은 공분산 행렬의 고유벡터, 곧 주성분이다. 점 200개의 공분산 (3.4, 1.2; 1.2, 1.6)에서는 고윳값 4와 1, 방향 26.57°가 손으로 나왔다.
축 k개짜리 면도 한꺼번에 구할 수 있다. 점을 열로 늘어놓은 자료 행렬에서 평균을 빼고 특잇값 분해를 하면, 왼쪽 축이 주성분이고 특잇값의 제곱을 점 수로 나눈 값이 고윳값이다. 에커트–영 정리(1936)는 큰 특잇값 k개만 남긴 행렬이 랭크 k 행렬 가운데 가장 가깝고, 남는 오차가 버린 특잇값의 제곱합이라고 말한다. 인물 그림 64장에서 학습 그림의 오차는 축 5개에서 0.467, 63개에서 0이 되었지만, 처음 보는 그림의 오차는 0.49 근처에서 멈췄다. 남길 축의 수는 두 부분 코드로 고를 수 있다. 축 하나를 적는 값 d · ½ log₂ n을 그 축이 좌표에서 줄여 주는 비트가 넘을 때만 남긴다. 진짜로 퍼진 방향이 셋인 자료에서 이 기준은 3을 골랐고, 「분산 95%」 어림은 노이즈 칸을 더할수록 15, 38, 71개를 골랐다. 칸의 대부분이 빈 표에서도 보이는 칸만으로 낮은 랭크를 맞추면 빈칸을 채울 수 있고, 넷플릭스 상(2006–2009)이 그 무대였다.
flowchart LR A["가장 가까운 직선<br/>(피어슨)"] -- "피타고라스<br/>합이 늘 같다" --> B["가장 넓게 퍼진 방향<br/>(호텔링)"] B --> C["공분산의 고유벡터<br/>= 특잇값 분해의 축"] C -- "에커트–영<br/>큰 특잇값 k개" --> D["가장 좋은 랭크 k 근사"] D -- "두 부분 코드<br/>축 하나 = d·½log₂ n 비트" --> E["몇 개를 남기나"] D -- "보이는 칸만으로" --> F["행렬 채우기"]
막힌 곳
평평한 면 하나는 강력했지만, 이 장의 모든 셈은 자료가 면 하나 근처에 있다는 가정 위에 서 있다. 평면에 점 300개가 서로 다른 세 방향의 직선 위에 흩어져 있다고 하자. 별 모양이다. 점 하나하나는 직선 위에 있으니 숫자 하나로 적을 수 있을 것 같지만, 주성분 축은 둘이고 어느 축 하나로도 모든 점을 적을 수 없다. 축 둘을 다 쓰면 줄인 것이 없는데, 점마다 서로 다른 축 하나씩만 골라 쓸 수 있다면 어떨까? 그리고 그 축들은 자료에서 어떻게 배울까?