133강 문제 3에서 합의 분산을 계산하다 항이 하나 더 붙는 것을 봤습니다.
그때는 이름만 붙이고 넘어갔습니다. 137강 문제 4에서 상관비와 비교하며 다시 언급했고, 이제 정식으로 다룹니다.
133강 문제 2의 대응표에서 이미 정체가 나왔습니다. 확률변수를 벡터로 보면
| 확률 | 내적공간 |
|---|---|
| 공분산 | 내적 |
| 분산 | 노름의 제곱 |
| 상관계수 | 각도의 코사인 |
세 줄이 이 강의의 뼈대이며, 특히 셋째 줄에서 이 63강의 코시슈바르츠 부등식임이 드러납니다.
그리고 반드시 짚어야 할 한계가 있습니다.
124강 심화 6에서 "무상관이어도 독립이 아니다"라고 예고했고, 137강에서 상관비 가 상관계수 제곱 보다 크거나 같다고 했습니다. 문제 3과 문제 4에서 그 간극을 정면으로 봅니다.
문제. 주사위 두 개에서 를 최댓값, 를 합이라 합니다.
(1) 공분산을 두 식으로 계산해 비교하세요.
(2) 네 사분면의 기여를 나눠 보세요.
(3) 단위를 바꾸면 어떻게 되는지 확인하세요.
생각의 실마리. 두 변수가 함께 커지고 함께 작아지면 편차의 곱이 양수입니다. 반대로 움직이면 음수입니다. 그 평균을 재면 될 것입니다.
풀이. (1) 검산 결과입니다.
| 식 | 값 |
|---|---|
| 정의식 | |
**차이가 **입니다.
(2) 편차의 부호로 사분면을 나누면 이렇습니다.
| 사분면 | 개수 | 기여 합 | 기여 평균 |
|---|---|---|---|
| 우상 | |||
| 좌하 | |||
| 우하 | |||
| 좌상 |
같은 방향인 점이 개이고 반대 방향이 개이며, 양의 기여가 압도합니다.
(3) 단위를 바꾸면 값이 바뀝니다.
| 의 단위 배율 | ||
|---|---|---|
이 문제에서 배우는 것: 공분산.
공분산.
두 식이 같은 것은 전개로 나오며, 133강 문제 1과 같은 구조입니다. 계산식이 수치적으로 위험한 것도 같습니다.
부호의 뜻. 양수면 같은 방향으로, 음수면 반대 방향으로 움직이는 경향입니다.
사분면 표가 그 뜻을 정확히 보여 줍니다. 각 점이 만큼 기여하는데, 같은 방향이면 양수를 보탭니다.
성질이 여럿 있습니다.
| 성질 | 식 |
|---|---|
| 대칭 | |
| 자기 자신 | |
| 쌍선형 | |
| 합에 대해 분배 | |
| 독립이면 |
셋째 줄에서 와 가 사라집니다. 평행이동은 편차를 바꾸지 않기 때문이며, 133강 문제 3에서 분산이 에 무관했던 것과 같습니다.
첫째와 둘째 줄이 내적의 성질입니다. 대칭이고 자기 자신과의 내적이 노름의 제곱이며, 셋째와 넷째 줄이 쌍선형성입니다. 63강 내적공간의 공리 그대로입니다.
단위 의존이 문제입니다. 키를 센티미터에서 미터로 바꾸면 공분산이 분의 이 됩니다.
값 자체를 해석할 수 없습니다. 가 크다고도 작다고도 말할 수 없으며, 문제 2에서 이를 고칩니다.
바로 확인 1.
확인 1-1. 공분산의 두 식을 쓰세요.
답. 과 입니다.
확인 1-2. 부호의 뜻을 사분면으로 설명하세요.
답. 같은 방향 사분면은 양수를, 반대 방향은 음수를 보탭니다.
확인 1-3. 를 쓰세요.
답. 이며 와 는 사라집니다.
문제. 상관계수 를 봅니다.
(1) 여러 선형변환에서 와 를 비교하세요.
(2) 을 확인하세요.
(3) 등호 조건을 확인하세요.
생각의 실마리. 공분산의 단위가 와 의 단위의 곱입니다. 각 표준편차로 나누면 단위가 사라질 것입니다.
풀이. (1) 검산 결과입니다.
| 변환 | \operatorname | |
|---|---|---|
| 원래 | ||
| 표준화 둘 다 |
공분산은 배가 되고 배가 되는데 상관계수는 크기가 그대로입니다. 셋째 줄에서 부호만 뒤집혔습니다.
넷째 줄에서 공분산과 상관계수가 같아집니다. 표준화하면 표준편차가 이라 나누는 것이 없기 때문입니다.
(2) 코시슈바르츠로 이며 검산에서 입니다.
(3) 등호는 가 의 일차함수일 때입니다.
| 정의 안 됨(분산 ) |
셋째 줄이 중요합니다. 이면 가 상수라 이고 상관계수가 정의되지 않습니다.
이 문제에서 배우는 것: 상관계수.
상관계수.
이며 표준화한 두 변수의 공분산입니다.
범위. 이며 등호는 가 의 일차함수일 때입니다.
증명이 코시슈바르츠입니다. 133강 문제 2의 내적공간 대응에서
에 , 를 넣으면
등호 조건도 그대로 옵니다. 63강에서 두 벡터가 평행할 때 등호였으므로, 여기서는 일 때입니다.
초등적인 증명도 있습니다. 임의의 에 대해
이고 에 대한 이차식이 언제나 비음이므로 판별식이 이하입니다.
분산이 음수가 될 수 없다는 것만으로 부등식이 나옵니다.
기하적 해석. 이며 는 두 중심화된 확률변수 사이의 각도입니다.
| 각도 | 관계 | |
|---|---|---|
| 0^ | 같은 방향으로 평행 | |
| 90^ | 직교 | |
| 180^ | 반대 방향으로 평행 |
133강 문제 2에서 독립이면 직교라고 한 것이 여기서 입니다.
바로 확인 2.
확인 2-1. 상관계수를 쓰고 무엇의 공분산인지 쓰세요.
답. 이며 표준화한 두 변수의 공분산입니다.
확인 2-2. 의 두 증명을 쓰세요.
답. 코시슈바르츠 부등식이거나 의 판별식입니다.
확인 2-3. 의 기하적 해석을 쓰세요.
답. 중심화된 두 확률변수 사이 각도의 코사인입니다.
문제. 가 에 균등하고 입니다.
(1) 를 구하세요.
(2) 를 알면 가 정해지는지 확인하세요.
(3) 상관비와 비교하세요.
생각의 실마리. 가 로 완전히 결정되므로 가장 강한 종속입니다. 그런데 관계가 대칭적인 곡선이라 상관계수가 어떻게 나올지 봅니다.
풀이. (1) 검산 결과입니다.
이므로
이고 입니다.
(2) 그런데 를 알면 가 완전히 정해집니다.
**인데 **입니다. 조건이 확률을 완전히 바꾸므로 독립과 정반대입니다.
(3) 이므로 조건부분산이 이고 집단 간 분산이 전부입니다.
이 문제에서 배우는 것: 무상관과 독립은 다르다.
관계.
앞쪽 함의는 쉽습니다. 독립이면 이므로 공분산이 입니다.
뒤쪽이 거짓인 이유는 상관계수가 선형 관계만 재기 때문입니다. 이 문제의 관계는 완벽한 포물선인데, 대칭이라 양쪽 기울기가 상쇄됩니다.
두 척도를 나란히 두면 명확합니다.
| 척도 | 무엇을 재는가 | 이 예에서 |
|---|---|---|
| \rho^ | 선형으로 설명되는 비중 | |
| \eta^ | 어떤 관계로든 설명되는 비중 | |
| 상호정보량 | 모든 의존성 | 최대 |
137강 문제 4에서 라 했는데 이 예가 극단입니다.
예외가 하나 있습니다. 결합분포가 다변량 정규분포이면 무상관과 독립이 같습니다.
140강에서 다루며, 그때는 밀도의 지수 안에 있는 이차형식이 대각이 되어 곱으로 갈라지기 때문입니다.
실무의 함정이 여기 있습니다.
| 흔한 판단 | 왜 위험한가 |
|---|---|
| 상관이 낮으니 독립적 특징 | 비선형 의존이 남아 있을 수 있습니다 |
| 상관행렬로 다중공선성 판단 | 비선형 종속을 놓칩니다 |
| 상관이 이니 제거해도 됨 | 조건부로는 유용할 수 있습니다 |
셋째 줄이 특징 선택의 함정입니다. 목표와 상관이 인 변수도 다른 변수와 함께 쓰면 강력할 수 있으며, 124강 문제 4의 충돌자 구조가 그런 경우입니다.
바로 확인 3.
확인 3-1. 독립과 무상관의 함의 방향을 쓰세요.
답. 독립이면 무상관이지만 역은 성립하지 않습니다.
확인 3-2. 이 예에서 과 을 쓰세요.
답. 과 입니다.
확인 3-3. 무상관과 독립이 같아지는 경우를 쓰세요.
답. 결합분포가 다변량 정규분포일 때입니다.
문제. 안스콤 4중주를 봅니다.
(1) 네 자료의 평균, 분산, 상관계수, 회귀 기울기를 구하세요.
(2) 실제 관계를 비교하세요.
(3) 이상치의 영향을 확인하세요.
생각의 실마리. 문제 3은 상관이 인데 관계가 있었습니다. 이번에는 상관이 같은데 관계가 다른지 봅니다.
풀이. (1) 검산 결과입니다.
| 자료 | 회귀 기울기 | |||||
|---|---|---|---|---|---|---|
| I | ||||||
| II | ||||||
| III | ||||||
| IV |
여섯 개의 요약 통계가 소수점 셋째 자리까지 거의 같습니다.
(2) 그런데 관계는 전혀 다릅니다.
| 자료 | 관계의 실제 모습 |
|---|---|
| I | 대체로 선형이며 잡음이 섞여 있습니다 |
| II | 완벽한 곡선이며 선형이 아닙니다 |
| III | 한 점만 빼면 완벽한 직선입니다 |
| IV | 가 한 점만 다르고 그 점이 전부를 정합니다 |
(3) 자료 III에서 이상치 한 점을 빼면 상관계수가 크게 바뀝니다.
개 중 한 점이 상관계수를 이나 끌어내렸습니다.
이 문제에서 배우는 것: 요약 통계의 한계.
핵심. 평균, 분산, 상관계수, 회귀 기울기가 모두 같아도 자료의 모습은 전혀 다를 수 있습니다.
136강 문제 5의 교훈이 여기서 반복됩니다. 그때는 주변분포와 상관계수를 맞춰도 결합분포가 정해지지 않았고, 여기서는 자료 수준에서 같은 일이 일어납니다.
자료 IV가 가장 극단입니다. 가 개 중 개는 이고 하나만 입니다. 상관계수 전체가 그 한 점에서 나오며, 그 점을 빼면 가 상수라 상관계수가 정의되지 않습니다.
진단 방법이 있습니다.
| 방법 | 무엇을 잡는가 |
|---|---|
| 산점도를 그린다 | 거의 모든 것 |
| 잔차를 그린다 | 곡선 관계, 이분산 |
| 지렛대와 영향력 통계 | 자료 III, IV의 이상치 |
| 스피어만 상관 | 단조 관계, 이상치에 강건 |
| 상관비 \eta^ | 비선형 관계 |
첫째 줄이 가장 값싸고 강력합니다. 안스콤이 이 자료를 만든 목적이 정확히 그것을 보이는 것이었습니다.
넷째 줄의 스피어만 상관은 값 대신 순위로 계산하며, 순서만 맞으면 이 나옵니다. 자료 II의 곡선 관계는 단조이므로 스피어만이 거의 이 되어 선형 상관보다 관계를 잘 잡아냅니다.
현대판이 데이터사우루스입니다. 같은 요약 통계를 가지면서 공룡 모양, 별 모양, 원 모양 등 열두 가지 전혀 다른 자료를 만든 예시이며, 안스콤의 교훈을 극단으로 밀어붙인 것입니다.
바로 확인 4.
확인 4-1. 안스콤 4중주가 보여 주는 것을 쓰세요.
답. 요약 통계가 같아도 자료의 모습이 전혀 다를 수 있습니다.
확인 4-2. 자료 III에서 이상치를 빼면 상관이 어떻게 되는지 쓰세요.
답. 에서 로 올라갑니다.
확인 4-3. 가장 값싼 진단 방법을 쓰세요.
답. 산점도를 그리는 것입니다.
문제. 첫 눈, 둘째 눈, 최댓값, 합의 네 변수를 봅니다.
(1) 공분산행렬을 구하세요.
(2) 대칭성과 대각 성분을 확인하세요.
(3) 고유값을 구하고 이차형식을 확인하세요.
생각의 실마리. 변수가 개면 쌍이 개입니다. 표로 정리하면 행렬이 되며, S4의 도구가 돌아옵니다.
풀이. (1)(2) 검산 결과입니다.
| 첫눈 | 둘째눈 | 최대 | 합 | |
|---|---|---|---|---|
| 첫눈 | ||||
| 둘째눈 | ||||
| 최대 | ||||
| 합 |
대칭이고 대각이 각 변수의 분산입니다. 첫 눈과 둘째 눈의 공분산이 인 것은 독립이기 때문입니다.
(3) 고유값이 입니다.
**최소 고유값이 로 사실상 **이며, 합 첫눈 둘째눈이라 선형종속이기 때문입니다.
이차형식도 확인됩니다.
| \mathbf | \mathbf{a}^{\top}\Sigma\mathbf | 차이 | |
|---|---|---|---|
| 1.8\times10^ |
**둘째 줄이 분산 **입니다. 첫눈 둘째눈 합 이라 그 조합이 상수이며, 고유값 에 대응하는 고유벡터입니다.
이 문제에서 배우는 것: 공분산행렬.
공분산행렬. 에 대해
S4의 개념들이 그대로 옵니다.
| 성질 | 어느 강의 |
|---|---|
| 대칭행렬 | 86강 |
| 양반정부호 | 87강 |
| 실고유값과 직교 고유기저 | 86강 스펙트럼 정리 |
| 고유값 이면 선형종속 | 73강 계수 |
| 이차형식 \mathbf{a}^{\top}\Sigma\mathbf | 87강 |
양반정부호인 이유가 분산입니다. 임의의 에 대해
분산이 음수가 될 수 없다는 사실이 곧 양반정부호이며, 87강에서 대수적으로 다룬 성질이 여기서 확률적 의미를 얻습니다.
89강의 주성분분석이 이 행렬의 고유값 분해입니다.
고유벡터가 분산이 가장 큰 방향이고 고유값이 그 방향의 분산입니다. 검산에서 최대 고유값 이 첫 주성분의 분산입니다.
상관행렬은 표준화한 버전입니다.
**대각이 모두 **이며, 변수들의 단위가 다를 때는 상관행렬로 주성분분석을 하는 것이 관례입니다.
140강에서 이 행렬이 다변량 정규분포의 모수가 되며, 밀도의 지수 안에 이 들어갑니다. 고유값이 이면 역행렬이 없어 밀도가 정의되지 않으며, 이 검산의 네 변수가 정확히 그 경우입니다.
바로 확인 5.
확인 5-1. 공분산행렬의 정의와 성분을 쓰세요.
답. 이며 성분이 입니다.
확인 5-2. 양반정부호인 이유를 쓰세요.
답. 이기 때문입니다.
확인 5-3. 고유값이 이면 무엇을 뜻합니까?
답. 변수들 사이에 선형종속이 있다는 뜻입니다.
| 개념 | 식 |
|---|---|
| 공분산 | |
| 쌍선형 | |
| 상관계수 | |
| 범위 | , 코시슈바르츠 |
| 등호 | 가 의 일차함수 |
| 기하 | |
| 공분산행렬 | |
| 이차형식 |
| 척도 | 무엇을 재는가 |
|---|---|
| \rho^ | 선형 관계 |
| \eta^ | 어떤 관계로든 |
| 스피어만 | 단조 관계 |
| 상호정보량 | 모든 의존성 |
| 자주 하는 실수 | 바로잡기 |
|---|---|
| 무상관이면 독립이라 봅니다 | 정규분포일 때만입니다 |
| 상관계수로 관계를 다 안다고 봅니다 | 안스콤 4중주를 보십시오 |
| 공분산 값 자체를 해석합니다 | 단위에 의존합니다 |
| 상관이 낮은 특징을 버립니다 | 조건부로 유용할 수 있습니다 |
문제 6. 공분산의 두 식을 쓰세요.
답. 과 입니다.
문제 7. 부호의 뜻을 사분면으로 설명하세요.
답. 같은 방향 사분면은 양수를, 반대 방향은 음수를 보탭니다.
문제 8. 를 쓰세요.
답. 이며 평행이동은 영향이 없습니다.
문제 9. 공분산이 내적의 성질을 만족함을 쓰세요.
답. 대칭이고 쌍선형이며 자기 자신과의 값이 분산이라 노름의 제곱입니다.
문제 10. 상관계수를 쓰고 단위 불변인 이유를 쓰세요.
답. 이며 분자와 분모가 같은 배율로 변하기 때문입니다.
문제 11. 의 두 증명을 쓰세요.
답. 코시슈바르츠 부등식이거나 의 판별식입니다.
문제 12. 등호 조건과 의 기하적 뜻을 쓰세요.
답. 가 의 일차함수일 때이며 는 각도의 코사인입니다.
문제 13. 독립과 무상관의 함의 방향을 쓰세요.
답. 독립이면 무상관이지만 역은 성립하지 않습니다.
문제 14. 예에서 과 을 쓰세요.
답. 과 입니다.
문제 15. 무상관과 독립이 같아지는 경우를 쓰세요.
답. 결합분포가 다변량 정규분포일 때입니다.
문제 16. 안스콤 4중주가 보여 주는 것을 쓰세요.
답. 요약 통계가 같아도 자료의 모습이 전혀 다를 수 있습니다.
문제 17. 공분산행렬이 양반정부호인 이유를 쓰세요.
답. 가 어떤 선형결합의 분산이라 비음이기 때문입니다.
문제 18. 공분산행렬의 고유값이 이면 무엇을 뜻합니까?
답. 변수들 사이에 선형종속이 있다는 뜻입니다.
심화 1. 상관계수의 대안들을 정리하세요.
피어슨 상관계수는 선형 관계만 재고 이상치에 약합니다. 대안이 여럿 있습니다.
| 척도 | 무엇을 재는가 | 이상치에 |
|---|---|---|
| 피어슨 | 선형 | 약합니다 |
| 스피어만 \rho_ | 단조 | 강건합니다 |
| 켄달 | 순서 일치 | 강건합니다 |
| 거리 상관 | 모든 의존성 | 중간입니다 |
| 상호정보량 | 모든 의존성 | 추정이 어렵습니다 |
스피어만은 값을 순위로 바꾼 뒤 피어슨을 계산합니다. 순위만 쓰므로 단조 변환에 불변이며, 안스콤 자료 II처럼 곡선이지만 단조인 관계를 잘 잡습니다.
켄달은 쌍을 세어 계산합니다.
132강의 지시함수 분해가 이 척도의 계산 구조이며, 해석이 명확합니다.
넷째 줄의 거리 상관이 중요합니다.
거리 상관. 이면 독립이며, 그 역도 성립합니다.
피어슨과 결정적으로 다릅니다. 피어슨은 이어도 독립이 아닐 수 있지만 거리 상관은 이면 독립입니다. 문제 3의 에서 거리 상관은 양수입니다.
대가는 계산 비용입니다. 모든 쌍의 거리를 써야 하므로 이며, 큰 자료에서는 부담입니다.
심화 2. 상관과 인과의 관계를 정리하세요.
**"상관은 인과가 아니다"**는 흔히 인용되지만 무엇이 문제인지가 중요합니다.
와 가 상관되는 이유가 여럿입니다.
| 구조 | 설명 |
|---|---|
| 가 를 일으킵니다 | |
| 반대 방향입니다 | |
| 공통 원인이 있습니다 | |
| 충돌자를 조건으로 걸었습니다 | |
| 우연 | 표본이 작으면 생깁니다 |
| 선택 편향 | 표집이 왜곡되었습니다 |
셋째 줄이 교란이며 가장 흔합니다. 아이스크림 판매와 익사 사고가 상관되는 것은 기온이라는 공통 원인 때문입니다.
넷째 줄이 124강 심화 4의 버크슨의 역설입니다. 조건을 잘못 걸면 없던 상관이 생깁니다.
다섯째 줄도 실제로 문제가 됩니다. 무관한 두 변수에서 이면 일 확률이 입니다. 작은 표본의 큰 상관은 증거가 약합니다.
해결의 방향이 셋입니다.
| 방법 | 아이디어 |
|---|---|
| 무작위 배정 | 교란을 끊습니다 |
| 교란 변수 통제 | 조건부로 봅니다 |
| 도구 변수 | 외생적 변동을 씁니다 |
S8에서 정면으로 다루며, 124강 문제 4의 세 인과 구조가 그 기초입니다.
심화 3. 부분상관을 정의하세요.
의 영향을 제거한 뒤 와 의 관계를 보고 싶을 때 씁니다.
부분상관. 와 를 각각 로 회귀한 잔차 사이의 상관계수입니다.
137강 문제 5의 정사영으로 읽으면 명확합니다. 가 만드는 공간에 사영하고 남은 성분끼리의 각도입니다.
교란을 제거하는 도구입니다. 아이스크림과 익사에서 기온을 통제하면 부분상관이 거의 이 됩니다.
부호가 뒤집힐 수도 있습니다. 인데 인 경우가 있으며, 123강 심화 3의 심프슨의 역설이 그 연속판입니다.
정밀도행렬이 이것을 한꺼번에 줍니다. 이라 하면
정밀도행렬의 이 조건부 독립을 뜻하며, 가우시안 그래프모형의 기초입니다. 공분산행렬의 은 주변 독립이고 정밀도행렬의 은 조건부 독립이라는 대비가 중요합니다.
심화 4. 표본상관계수의 성질을 정리하세요.
이론적 를 자료에서 추정합니다.
성질에 주의할 점이 있습니다.
| 성질 | 내용 |
|---|---|
| 편향 | 약간 편향되어 있습니다 |
| 분포 | 이면 치우칩니다 |
| 분산 | 가 크면 작아집니다 |
둘째 줄 때문에 신뢰구간을 바로 만들 수 없습니다. 피셔의 변환을 씁니다.
이 변환을 하면 근사적으로 정규분포를 따르며 분산이 입니다. 에 거의 의존하지 않는 분산이라 다루기 쉽습니다.
125강 문제 2의 로그오즈와 같은 꼴입니다. 에 갇힌 양을 실수 전체로 펴는 변환이며, 확률을 로그오즈로 펴는 것과 같은 발상입니다.
작은 표본에서 상관계수를 믿으면 안 됩니다.
| 일 때 일 확률 | |
|---|---|
| 약 | |
| 약 | |
| 약 |
심화 2의 다섯째 줄이 이 표입니다.
심화 5. 공분산행렬 추정의 어려움을 개관하세요.
차원 공분산행렬은 자유도가 입니다.
| 추정할 모수 | |
|---|---|
표본이 이면 표본공분산행렬이 특이해집니다. 계수가 최대 이므로 고유값 이 반드시 생기고, 역행렬을 만들 수 없습니다.
문제 5의 검산이 그 예입니다. 변수 넷 중 하나가 다른 둘의 합이라 계수가 이고 고유값 이 하나 나왔습니다.
해결책이 여럿 있습니다.
| 방법 | 아이디어 |
|---|---|
| 축소 추정 | 대각행렬 쪽으로 당깁니다 |
| 정규화 | |
| 희소 추정 | 정밀도행렬에 벌점 |
| 인수 모형 | 저계수 대각 |
첫째 줄이 레도이트울프 축소이며 형태입니다. 116강의 정규화와 같은 발상이며, 편향을 조금 받아들이고 분산을 크게 줄입니다.
넷째 줄이 89강의 주성분분석과 이어집니다. 상위 개 주성분으로 저계수 근사를 만들고 나머지를 대각으로 처리하면 모수가 로 줄어듭니다.
심화 6. 공분산이 기계학습에 나타나는 자리를 정리하세요.
| 자리 | 어떤 공분산 |
|---|---|
| 주성분분석 | 특징의 공분산행렬 고유분해 |
| 백색화 | 로 곱해 무상관화 |
| 마할라노비스 거리 | |
| 가우스 과정 | 커널이 공분산 함수 |
| 자연경사법 | 피셔 정보행렬 |
| 배치 정규화 | 대각 공분산만 씁니다 |
| 자기지도학습 | 표현의 공분산을 정규화 |
둘째 줄이 전처리의 표준입니다. 를 곱하면 공분산이 단위행렬이 되어 모든 방향의 분산이 같아집니다. **86강 스펙트럼 정리로 **을 만들면 됩니다.
셋째 줄이 119강 문제 5의 전처리 흐름과 이어집니다. 마할라노비스 거리는 가 정의하는 노름이며, 뉴턴법이 헤세 행렬로 노름을 바꾼 것과 같은 구조입니다.
넷째 줄이 흥미롭습니다. 가우스 과정은 함수 위의 분포인데, 두 입력 사이의 공분산을 커널 함수로 정합니다. 공분산행렬이 커널행렬이며 양반정부호여야 한다는 조건이 그대로 커널의 조건이 됩니다.
일곱째 줄이 최근의 응용입니다. 대조학습에서 표현이 한 점으로 붕괴하는 것을 막으려고 표현 벡터들의 공분산행렬이 단위행렬에 가깝도록 벌점을 줍니다. 공분산의 비대각 성분을 으로 밀면 특징들이 서로 다른 정보를 담게 됩니다.
import numpy as np, itertools
S = list(itertools.product(range(1, 7), repeat=2))
N = len(S)
X = np.array([max(w) for w in S], float) # 최대
Y = np.array([w[0]+w[1] for w in S], float) # 합
def cov(a, b): return float(((a-a.mean())*(b-b.mean())).mean())
def cor(a, b): return cov(a, b)/np.sqrt(cov(a, a)*cov(b, b))
# --- 문제 1: 공분산은 함께 움직이는 정도이고 단위가 있다 ----------------
print(" Cov[X,Y] = E[(X-mX)(Y-mY)] 를 두 식으로 계산합니다")
c1 = cov(X, Y); c2 = float((X*Y).mean() - X.mean()*Y.mean())
print(" 정의식 %14.8f" % c1)
print(" E[XY]-E[X]E[Y] %13.8f 차이 %.2e" % (c2, abs(c1-c2)))
print(" 네 사분면의 기여를 나눠 보면 부호의 뜻이 보입니다")
dx, dy = X-X.mean(), Y-Y.mean()
print(" 사분면 개수 기여 합 기여 평균")
for nm, m in [("우상 (+,+)", (dx>0)&(dy>0)), ("좌하 (-,-)", (dx<0)&(dy<0)),
("우하 (+,-)", (dx>0)&(dy<0)), ("좌상 (-,+)", (dx<0)&(dy>0))]:
print(" %-14s %8d %12.6f %14.6f"
% (nm, int(m.sum()), float((dx*dy)[m].sum()/N),
float((dx*dy)[m].mean()) if m.sum() else 0.0))
print(" 같은 방향이면 양수, 반대 방향이면 음수를 보탭니다")
print(" 단위를 바꾸면 공분산 값이 바뀝니다")
print(" X 의 단위 배율 a Cov[aX, Y] a * Cov[X,Y]")
for a in [1.0, 10.0, 0.01]:
print(" %18.2f %15.6f %16.6f" % (a, cov(a*X, Y), a*c1))
# Cov[X,Y] = E[(X-mX)(Y-mY)] 를 두 식으로 계산합니다
# 정의식 2.91666667
# E[XY]-E[X]E[Y] 2.91666667 차이 2.22e-15
# 네 사분면의 기여를 나눠 보면 부호의 뜻이 보입니다
# 사분면 개수 기여 합 기여 평균
# 우상 (+,+) 14 1.192901 3.067460
# 좌하 (-,-) 13 1.766204 4.891026
# 우하 (+,-) 2 -0.029321 -0.527778
# 좌상 (-,+) 1 -0.013117 -0.472222
# 같은 방향이면 양수, 반대 방향이면 음수를 보탭니다
# 단위를 바꾸면 공분산 값이 바뀝니다
# X 의 단위 배율 a Cov[aX, Y] a * Cov[X,Y]
# 1.00 2.916667 2.916667
# 10.00 29.166667 29.166667
# 0.01 0.029167 0.029167
# --- 문제 2: 표준화하면 -1 과 1 사이에 갇힌다 ---------------------------
print(" 상관계수 rho = Cov/(sX sY) 는 단위에 불변입니다")
print(" 변환 rho Cov")
for nm, A, B in [("원래 X, Y", X, Y), ("10X, Y", 10*X, Y), ("X, -3Y+5", X, -3*Y+5),
("표준화 둘 다", (X-X.mean())/np.sqrt(cov(X,X)),
(Y-Y.mean())/np.sqrt(cov(Y,Y)))]:
print(" %-18s %10.6f %12.6f" % (nm, cor(A, B), cov(A, B)))
print(" |rho| <= 1 은 63강 코시슈바르츠 부등식입니다")
print(" |Cov[X,Y]| <= sX * sY : %.6f <= %.6f" % (abs(c1), np.sqrt(cov(X,X)*cov(Y,Y))))
print(" 등호는 Y 가 X 의 일차함수일 때입니다")
print(" Y = a X + b rho")
for a, b in [(2.0, 3.0), (-1.5, 0.0), (0.0, 5.0)]:
Z = a*X + b
r = cor(X, Z) if a != 0 else float("nan")
print(" %8.1f x + %5.1f %14s" % (a, b, ("%10.6f" % r) if a != 0 else "정의 안 됨(분산 0)"))
# 상관계수 rho = Cov/(sX sY) 는 단위에 불변입니다
# 변환 rho Cov
# 원래 X, Y 0.860073 2.916667
# 10X, Y 0.860073 29.166667
# X, -3Y+5 -0.860073 -8.750000
# 표준화 둘 다 0.860073 0.860073
# |rho| <= 1 은 63강 코시슈바르츠 부등식입니다
# |Cov[X,Y]| <= sX * sY : 2.916667 <= 3.391184
# 등호는 Y 가 X 의 일차함수일 때입니다
# Y = a X + b rho
# 2.0 x + 3.0 1.000000
# -1.5 x + 0.0 -1.000000
# 0.0 x + 5.0 정의 안 됨(분산 0)
# --- 문제 3: 무상관이어도 독립이 아니다 ---------------------------------
print(" U 가 {-1, 0, 1} 에 균등하고 V = U^2 인 경우를 봅니다")
U = np.array([-1.0, 0.0, 1.0]); V = U**2
print(" E[U] = %.6f, E[V] = %.6f, E[UV] = %.6f" % (U.mean(), V.mean(), (U*V).mean()))
print(" Cov[U,V] = %.10f, rho = %.10f" % (cov(U,V), cov(U,V)/np.sqrt(cov(U,U)*cov(V,V))))
print(" 그런데 U 를 알면 V 가 완전히 정해집니다. 독립과 정반대입니다")
print(" P(V=0 | U=0) = 1 인데 P(V=0) = %.6f 입니다" % (1/3))
print(" 조건부기댓값으로 보면 관계가 드러납니다")
print(" u E[V | U=u]")
for u in [-1.0, 0.0, 1.0]:
print(" %7.1f %14.6f" % (u, u*u))
print(" E[V|U] 가 상수가 아니므로 137강 의 상관비는 1 입니다")
# E[V|U] 가 V 를 완전히 결정하므로 조건부분산이 0 이고 상관비가 1 입니다
mV = float(V.mean()); vV = float(((V-mV)**2).mean())
between = float(((V - mV)**2).mean()) # E[V|U]=V 이므로 집단 간이 전부
print(" Var[V] = %.6f, Var[E[V|U]] = %.6f, eta^2 = %.6f"
% (vV, between, between/vV))
print(" 상관비 eta^2 = %.6f 인데 상관계수 제곱 rho^2 = %.6f 입니다"
% (between/vV, 0.0))
# U 가 {-1, 0, 1} 에 균등하고 V = U^2 인 경우를 봅니다
# E[U] = 0.000000, E[V] = 0.666667, E[UV] = 0.000000
# Cov[U,V] = 0.0000000000, rho = 0.0000000000
# 그런데 U 를 알면 V 가 완전히 정해집니다. 독립과 정반대입니다
# P(V=0 | U=0) = 1 인데 P(V=0) = 0.333333 입니다
# 조건부기댓값으로 보면 관계가 드러납니다
# u E[V | U=u]
# -1.0 1.000000
# 0.0 0.000000
# 1.0 1.000000
# E[V|U] 가 상수가 아니므로 137강 의 상관비는 1 입니다
# Var[V] = 0.222222, Var[E[V|U]] = 0.222222, eta^2 = 1.000000
# 상관비 eta^2 = 1.000000 인데 상관계수 제곱 rho^2 = 0.000000 입니다
# --- 문제 4: 같은 상관계수, 전혀 다른 관계 (안스콤 4중주) ---------------
print(" 안스콤 4중주: 네 자료의 요약 통계가 거의 같습니다")
ax = np.array([10,8,13,9,11,14,6,4,12,7,5], float)
a1 = np.array([8.04,6.95,7.58,8.81,8.33,9.96,7.24,4.26,10.84,4.82,5.68])
a2 = np.array([9.14,8.14,8.74,8.77,9.26,8.10,6.13,3.10,9.13,7.26,4.74])
a3 = np.array([7.46,6.77,12.74,7.11,7.81,8.84,6.08,5.39,8.15,6.42,5.73])
bx = np.array([8,8,8,8,8,8,8,19,8,8,8], float)
a4 = np.array([6.58,5.76,7.71,8.84,8.47,7.04,5.25,12.50,5.56,7.91,6.89])
print(" 자료 E[x] E[y] Var[x] Var[y] rho 회귀 기울기")
for nm, xx, yy in [("I", ax, a1), ("II", ax, a2), ("III", ax, a3), ("IV", bx, a4)]:
b = cov(xx, yy)/cov(xx, xx)
print(" %8s %6.2f %7.3f %8.3f %8.3f %8.4f %12.4f"
% (nm, xx.mean(), yy.mean(), cov(xx,xx), cov(yy,yy), cor(xx,yy), b))
print(" 네 자료의 평균, 분산, 상관계수, 회귀 기울기가 거의 같습니다")
print(" 그런데 관계는 전혀 다릅니다")
print(" 자료 관계의 실제 모습")
for nm, d in [("I", "대체로 선형이며 잡음이 섞여 있습니다"),
("II", "완벽한 곡선이며 선형이 아닙니다"),
("III", "한 점만 빼면 완벽한 직선입니다"),
("IV", "x 가 한 점만 다르고 그 점이 전부를 정합니다")]:
print(" %8s %s" % (nm, d))
print(" III 에서 이상치를 빼면 상관이 얼마나 바뀌는지 봅니다")
k = int(np.argmax(np.abs(a3 - (3.0 + 0.5*ax))))
m3 = np.ones(11, bool); m3[k] = False
print(" 전체 11 점 rho = %.6f, 이상치 1 점 제외 rho = %.6f"
% (cor(ax, a3), cor(ax[m3], a3[m3])))
# 안스콤 4중주: 네 자료의 요약 통계가 거의 같습니다
# 자료 E[x] E[y] Var[x] Var[y] rho 회귀 기울기
# I 9.00 7.501 10.000 3.752 0.8164 0.5001
# II 9.00 7.501 10.000 3.752 0.8162 0.5000
# III 9.00 7.500 10.000 3.748 0.8163 0.4997
# IV 9.00 7.501 10.000 3.748 0.8165 0.4999
# 네 자료의 평균, 분산, 상관계수, 회귀 기울기가 거의 같습니다
# 그런데 관계는 전혀 다릅니다
# 자료 관계의 실제 모습
# I 대체로 선형이며 잡음이 섞여 있습니다
# II 완벽한 곡선이며 선형이 아닙니다
# III 한 점만 빼면 완벽한 직선입니다
# IV x 가 한 점만 다르고 그 점이 전부를 정합니다
# III 에서 이상치를 빼면 상관이 얼마나 바뀌는지 봅니다
# 전체 11 점 rho = 0.816287, 이상치 1 점 제외 rho = 0.999997
# --- 문제 5: 여러 변수면 행렬이 된다 ------------------------------------
print(" 공분산행렬 Sigma = E[(x-mu)(x-mu)^T] 를 봅니다")
D = np.stack([np.array([w[0] for w in S], float),
np.array([w[1] for w in S], float), X, Y], 1)
names = ["첫눈", "둘째눈", "최대", "합"]
Dc = D - D.mean(0)
Sig = (Dc.T @ Dc)/N
print(" " + "".join("%10s" % n for n in names))
for i, n in enumerate(names):
print(" %6s" % n + "".join("%10.4f" % Sig[i, j] for j in range(4)))
print(" 대칭인가 %s, 대각이 각 변수의 분산인가 %s"
% (bool(np.allclose(Sig, Sig.T)), bool(np.allclose(np.diag(Sig), Dc.var(0)))))
ev = np.linalg.eigvalsh(Sig)
print(" 고유값 %s" % np.array2string(np.round(ev, 6)))
print(" 최소 고유값 %.2e -> 양반정부호 %s" % (ev.min(), bool(ev.min() > -1e-12)))
print(" 고유값 0 이 하나 있습니다. 합 = 첫눈 + 둘째눈 이라 선형종속이기 때문입니다")
print(" 임의의 가중합의 분산이 이차형식입니다. Var[a^T x] = a^T Sigma a")
for a in [np.array([1.,1.,0.,0.]), np.array([1.,1.,0.,-1.]), np.array([0.,0.,1.,1.])]:
lhs = float((Dc @ a).var()); rhs = float(a @ Sig @ a)
print(" a = %-18s Var = %10.6f a^T Sigma a = %10.6f 차이 %.1e"
% (np.array2string(a), lhs, rhs, abs(lhs-rhs)))
print(" 87강의 이차형식이며 양반정부호라는 것이 분산이 음수가 될 수 없다는 뜻입니다")
# 공분산행렬 Sigma = E[(x-mu)(x-mu)^T] 를 봅니다
# 첫눈 둘째눈 최대 합
# 첫눈 2.9167 0.0000 1.4583 2.9167
# 둘째눈 0.0000 2.9167 1.4583 2.9167
# 최대 1.4583 1.4583 1.9715 2.9167
# 합 2.9167 2.9167 2.9167 5.8333
# 대칭인가 True, 대각이 각 변수의 분산인가 True
# 고유값 [ 0. 0.43654 2.916667 10.28491 ]
# 최소 고유값 2.27e-17 -> 양반정부호 True
# 고유값 0 이 하나 있습니다. 합 = 첫눈 + 둘째눈 이라 선형종속이기 때문입니다
# 임의의 가중합의 분산이 이차형식입니다. Var[a^T x] = a^T Sigma a
# a = [1. 1. 0. 0.] Var = 5.833333 a^T Sigma a = 5.833333 차이 0.0e+00
# a = [ 1. 1. 0. -1.] Var = 0.000000 a^T Sigma a = 0.000000 차이 0.0e+00
# a = [0. 0. 1. 1.] Var = 13.638117 a^T Sigma a = 13.638117 차이 1.8e-15
# 87강의 이차형식이며 양반정부호라는 것이 분산이 음수가 될 수 없다는 뜻입니다
문제 3의 마지막 두 줄이 이 강의의 경고입니다. 상관계수가 정확히 인데 상관비가 입니다. 를 알면 가 완전히 정해지는데도 상관계수는 아무것도 잡아내지 못합니다.
문제 4의 표에서 여섯 통계가 소수점 셋째 자리까지 같습니다. 그런데 하나는 선형이고 하나는 곡선이며 하나는 이상치 하나가 전부를 바꿉니다. III에서 그 한 점을 빼면 가 에서 로 뜁니다.
문제 5의 고유값 이 S4와의 연결입니다. 합 첫눈 둘째눈이라는 선형관계가 고유값 으로 나타나며, 그 방향 의 분산이 정확히 입니다. 73강의 계수와 87강의 이차형식이 확률의 언어로 그대로 옮겨집니다.
정답.
| 기호 | 읽는 법 | 뜻 |
|---|---|---|
| 공분산 | 함께 움직이는 정도이며 단위가 있습니다 | |
| \rho_ | 상관계수 | 표준화한 공분산이며 단위가 없습니다 |
| 공분산행렬 | 대칭 양반정부호입니다 | |
| 상관행렬 | 대각이 모두 입니다 | |
| \Theta=\Sigma^ | 정밀도행렬 | 이 조건부 독립입니다 |
| 안스콤 4중주 | Anscombe's quartet | 같은 통계, 다른 자료입니다 |
| 스피어만 상관 | Spearman | 순위로 계산합니다 |
| 켄달 타우 | Kendall's tau | 쌍의 일치를 셉니다 |
| 거리 상관 | distance correlation | 이면 독립입니다 |
| 부분상관 | partial correlation | 다른 변수를 통제한 상관입니다 |
| 피셔 변환 | Fisher z-transform | 입니다 |
| 백색화 | whitening | 로 무상관화합니다 |
다음 139강에서는 확률변수의 변환을 다룹니다. 129강 문제 4에서 일변수 변환에 야코비 인자가 붙는 것을 봤고, 이제 여러 변수를 한꺼번에 변환합니다. 105강의 변수변환 공식이 야코비 행렬식으로 그대로 돌아오며, 극좌표 변환으로 130강 심화 2의 박스뮐러 변환을 정식으로 유도합니다. 그리고 이 변환 공식이 263강 정규화 흐름의 뼈대가 됩니다.