136강에서 결합분포를 세우고 주변분포만으로는 부족하다는 것을 봤습니다. 관계라는 정보가 따로 필요합니다.
그 관계를 읽는 가장 자연스러운 방법이 조건을 거는 것입니다.
123강의 조건부확률을 확률변수에 옮긴 것이며, 새 개념이 아닙니다. 결합을 주변으로 나눈 것뿐입니다.
그런데 여기서 한 걸음 더 나가면 미묘한 것이 나타납니다.
는 마다 다른 수입니다. 를 넣으면 수가 나오는 함수이며, 가 확률변수이므로
자체가 확률변수입니다. 처음 만나면 반드시 헷갈리는 지점이며, 이 강의의 절반이 그 사실을 소화하는 데 쓰입니다.
그리고 그것을 받아들이면 두 정리가 한 줄로 쓰입니다.
| 정리 | 어디서 예고했는가 |
|---|---|
| 132강 심화 3 | |
| 133강 문제 5 |
그리고 133강 문제 2에서 예고한 것도 여기서 밝혀집니다. 조건부기댓값은 정사영입니다.
문제. 를 두 눈의 최댓값, 를 합이라 합니다.
(1) 를 표로 구하세요.
(2) 각 행의 합을 확인하세요.
(3) 일 때 의 분포를 읽으세요.
생각의 실마리. 123강에서 조건을 걸면 표본공간이 줄어든다고 했습니다. 결합표에서 한 행만 남기고 그 행을 다시 확률분포로 만드는 것입니다.
풀이. (1)(2) 검산 결과입니다.
| 행 합 | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
**각 행의 합이 정확히 **입니다.
(3) 이면 가 , , 만 가능하고 확률이 , , 입니다.
최댓값이 이면 다른 눈이 , , 중 하나인데, 과 처럼 순서가 둘이라 와 는 각 두 가지이고 뿐인 은 한 가지입니다.
이 문제에서 배우는 것: 조건부분포.
조건부질량함수. 일 때
정규화가 자동으로 됩니다.
분모가 주변분포의 정의 그 자체이기 때문입니다. 123강 문제 4에서 조건부확률이 확률측도임을 보인 것의 확률변수판입니다.
곱셈법칙. 이항하면 결합분포를 만드는 공식이 됩니다.
세 대상의 관계가 이렇게 정리됩니다.
| 방향 | 연산 |
|---|---|
| 결합 주변 | 더합니다 |
| 결합 조건부 | 주변으로 나눕니다 |
| 주변 조건부 결합 | 곱합니다 |
셋째 줄이 생성 모형이 데이터를 만드는 순서입니다. 먼저 를 뽑고 그 값에 따라 를 뽑습니다.
연속에서도 같은 식입니다.
인데도 잘 정의되는 것이 이상해 보이지만, 확률이 아니라 밀도의 비로 정의하기 때문입니다. 심화 1에서 그 미묘함을 다룹니다.
바로 확인 1.
확인 1-1. 조건부질량함수를 쓰세요.
답. 입니다.
확인 1-2. 정규화가 자동인 이유를 쓰세요.
답. 분모가 주변분포의 정의라 분자를 더하면 분모가 되기 때문입니다.
확인 1-3. 결합분포를 만드는 곱셈법칙을 쓰세요.
답. 입니다.
문제. 문제 1의 조건부분포에서 조건부기댓값을 봅니다.
(1) 각 에서 를 구하세요.
(2) 조건부분산도 구하세요.
(3) 이들을 모아 보면 무엇인지 밝히세요.
생각의 실마리. 조건부분포가 마다 다르므로 그 기댓값도 마다 다를 것입니다. 그러면 그 결과는 무엇입니까.
풀이. (1)(2) 검산 결과입니다.
| 가능한 범위 | ||||
|---|---|---|---|---|
**에서 분산이 정확히 **입니다. 최댓값이 이면 두 눈이 모두 이라 합이 로 확정됩니다.
(3) 마다 값이 다르므로 는 의 함수이고, 가 확률변수이므로 그 자체가 확률변수입니다.
이 확률변수의 분포는 이렇습니다.
| 값 | ||||||
|---|---|---|---|---|---|---|
| 확률 |
이 문제에서 배우는 것: 조건부기댓값은 확률변수다.
두 표기를 구별합니다.
후자는 꼴이며 입니다. 126강 심화 1에서 확률변수를 함수로 보면 자연스럽습니다. 로 합성한 것입니다.
무작위성이 어디에 있는지가 핵심입니다.
| 대상 | 무작위인가 |
|---|---|
| 그렇습니다 | |
| 아닙니다. 수입니다 | |
| 그렇습니다. 를 통해 | |
| 아닙니다. 수입니다 |
넷째 줄이 문제 3의 주제입니다.
회귀함수. 를 의 에 대한 회귀함수라 합니다.
"회귀"라는 이름이 여기서 옵니다. 205강의 회귀 모형이 하는 일은 이 함수를 데이터에서 추정하는 것이며, 문제 5에서 그것이 왜 최적인지 봅니다.
조건부분산도 마찬가지입니다. 도 의 함수이므로 확률변수이며, 표의 넷째 열이 그 값들입니다. 가 커질수록 커지는데, 최댓값이 크면 합의 가능한 범위가 넓어지기 때문입니다.
바로 확인 2.
확인 2-1. 와 의 차이를 쓰세요.
답. 전자는 수이고 후자는 의 함수인 확률변수입니다.
확인 2-2. 회귀함수를 쓰세요.
답. 입니다.
확인 2-3. 에서 조건부분산이 인 이유를 쓰세요.
답. 최댓값이 이면 합이 로 확정되기 때문입니다.
문제. 문제 2의 결과를 씁니다.
(1) 을 계산하세요.
(2) 와 비교하세요.
(3) 반대 방향도 확인하세요.
생각의 실마리. 가 확률변수이므로 그것의 기댓값을 다시 취할 수 있습니다. 의 분포로 가중평균하면 됩니다.
풀이. 검산 결과입니다.
| 양 | 값 |
|---|---|
**차이가 정확히 **입니다.
반대 방향도 성립합니다. 이고 로 **차이가 **입니다.
이 문제에서 배우는 것: 전체 기댓값 법칙.
전체 기댓값 법칙.
이며 타워 성질이라고도 합니다.
증명이 두 줄입니다. 정의를 풀어 쓰면
곱셈법칙으로 가 되고 에 대해 더하면 주변분포가 됩니다. 123강 전확률의 법칙을 기댓값으로 옮긴 것입니다.
이 법칙의 실전 용도가 "쪼개서 계산하기"입니다.
를 직접 다루기 어려울 때 조건을 걸어 쉽게 만듭니다.
| 문제 | 무엇으로 조건을 거는가 |
|---|---|
| 기하분포의 평균(128강) | 첫 시행의 성공 여부 |
| 쿠폰 수집가(132강) | 현재 모은 종류 수 |
| 랜덤워크의 도달 시간 | 첫 걸음의 방향 |
| 분기 과정의 소멸 확률 | 첫 세대의 자손 수 |
| 벨만 방정식(274강) | 첫 행동과 다음 상태 |
첫 줄을 다시 봅니다. 128강 문제 4에서
로 풀어 를 얻었는데, 이것이 전체 기댓값 법칙을 첫 시행으로 조건을 건 것입니다. 이면 입니다.
일반형. 대신 임의의 함수에도 성립합니다.
문제 4에서 으로 쓰면 전체 분산 법칙이 나옵니다.
바로 확인 3.
확인 3-1. 전체 기댓값 법칙을 쓰세요.
답. 입니다.
확인 3-2. 증명의 핵심 단계를 쓰세요.
답. 곱셈법칙으로 결합분포를 만들고 조건 변수에 대해 더합니다.
확인 3-3. 이 법칙의 실전 용도를 쓰세요.
답. 어려운 기댓값을 조건을 걸어 쪼개서 계산합니다.
문제. 문제 2의 조건부평균과 조건부분산을 씁니다.
(1) 을 구하세요.
(2) 을 구하세요.
(3) 둘의 합을 와 비교하세요.
생각의 실마리. 133강 문제 5에서 혼합분포에 대해 이 분해를 수치로 확인했습니다. 이제 정식으로 다룹니다.
풀이. 검산 결과입니다.
| 양 | 값 |
|---|---|
| 전체 분산 | |
| 집단 내 | |
| 집단 간 | |
| 합 |
**차이가 **로 부동소수점 한계입니다.
**집단 간 비중이 **이며, 를 알면 의 변동 중 약 가 설명됩니다.
조건을 걸면 남은 분산이 줄어듭니다. 입니다.
이 문제에서 배우는 것: 전체 분산 법칙.
전체 분산 법칙.
증명이 전체 기댓값 법칙 두 번입니다.
이고 을 넣으면
**뒤의 두 항이 정확히 **입니다.
설명력. 집단 간 분산의 비중
을 상관비라 하며 가 를 설명하는 정도입니다.
이 값이 과 사이입니다. 이면 가 상수라 가 아무 도움이 안 되고, 이면 조건부분산이 이라 가 를 완전히 결정합니다.
138강의 상관계수 제곱과 비교됩니다.
| 척도 | 무엇을 재는가 |
|---|---|
| \rho^ | 선형 관계로 설명되는 비중 |
| \eta^ | 어떤 관계로든 설명되는 비중 |
**언제나 **이며, 회귀함수가 선형이면 같습니다.
이 분해가 여러 이름으로 나타납니다.
| 분야 | 이름 |
|---|---|
| 분산분석 | 급간 변동과 급내 변동 |
| 회귀분석 | 설명된 제곱합과 잔차 제곱합 |
| 편향-분산 분해 | 210강 |
| 과산포 진단 | 128강 심화 1 |
| 라오블랙웰화 | 133강 심화 4 |
마지막 줄이 즉시 따라옵니다. 조건부기댓값으로 대체하면 첫째 항이 사라지므로 분산이 반드시 줄어듭니다. 심화 3에서 다룹니다.
바로 확인 4.
확인 4-1. 전체 분산 법칙을 쓰세요.
답. 입니다.
확인 4-2. 두 항의 뜻을 쓰세요.
답. 설명되지 않은 부분과 설명된 부분입니다.
확인 4-3. 상관비와 상관계수 제곱의 관계를 쓰세요.
답. 이며 회귀함수가 선형이면 같습니다.
문제. 의 함수 로 를 예측합니다.
(1) 여러 후보의 을 비교하세요.
(2) 최소가 되는 것을 찾으세요.
(3) 잔차와 의 함수의 관계를 확인하세요.
생각의 실마리. 132강 문제 5에서 상수 예측의 최적이 평균이었습니다. 를 볼 수 있으면 더 잘할 수 있을 것입니다.
풀이. (1)(2) 검산 결과입니다. 최적 선형은 , 입니다.
| 조건부평균 대비 | ||
|---|---|---|
| (조건부평균) | ||
| 최적 선형 | ||
| 상수 | ||
| 조건부평균 | ||
| 조건부평균 |
조건부평균이 최소이며, 상수 최적 선형 조건부평균 순으로 오차가 줄어듭니다.
넷째와 다섯째 줄이 정확히 과 만큼 늘어납니다.
둘째 줄의 차이가 뿐인 것은 이 예에서 회귀함수가 거의 선형이기 때문입니다. 문제 2의 표에서 가 , , , , , 로 거의 등간격입니다.
(3) 잔차가 의 모든 함수와 직교합니다.
| 2.78\times10^ | |
| -1.11\times10^ | |
| x^ | -2.22\times10^ |
| 4.51\times10^ |
**네 경우 모두 **입니다.
이 문제에서 배우는 것: 조건부기댓값은 정사영이다.
최적 예측. 의 임의의 함수 에 대해
이며 등호는 일 때입니다.
증명이 132강 문제 5의 분해를 조건부로 한 것입니다. 라 두고 더하고 빼면
셋째 항이 입니다. 가 의 함수이고 잔차가 의 함수와 직교하기 때문이며, 그것이 (3)에서 확인한 것입니다.
직교성. 의 임의의 함수 에 대해
증명이 타워 성질입니다. 안쪽에서 로 조건을 걸면 는 상수처럼 빠져나오고
133강 문제 2에서 예고한 것이 여기서 완성됩니다.
| 확률 | 내적공간 |
|---|---|
| 내적 | |
| 의 함수들 | 부분공간 |
| 그 부분공간으로의 정사영 | |
| 직교성 | 잔차가 부분공간에 수직 |
| 최적 예측 | 정사영이 가장 가깝습니다 |
| 전체 분산 법칙 | 피타고라스 정리 |
80강의 정사영과 완전히 같은 구조이며, 82강의 최소제곱이 의 선형함수만으로 이루어진 더 작은 부분공간으로의 정사영입니다.
부분공간이 커질수록 정사영이 가까워지며, 검산 표의 세 값 , , 이 그 순서입니다.
이것이 205강 회귀 모형의 목표를 정확히 규정합니다. 제곱오차로 학습하는 모형은 조건부평균을 근사하려 하며, 모형이 표현할 수 있는 함수족이 부분공간의 크기입니다.
바로 확인 5.
확인 5-1. 제곱오차 최적 예측을 쓰세요.
답. 조건부기댓값 입니다.
확인 5-2. 직교성 조건을 쓰세요.
답. 이 모든 에 대해 성립합니다.
확인 5-3. 전체 분산 법칙을 기하로 읽으면 무엇입니까?
답. 피타고라스 정리입니다.
| 개념 | 식 |
|---|---|
| 조건부질량함수 | |
| 곱셈법칙 | p_{X,Y}=p_{X}\,p_ |
| 조건부기댓값 | 는 의 함수인 확률변수 |
| 회귀함수 | |
| 전체 기댓값 법칙 | |
| 전체 분산 법칙 | |
| 상관비 | |
| 최적 예측 | 조건부기댓값이 제곱오차 최소 |
| 직교성 |
| 확률 | 내적공간 |
|---|---|
| 의 함수들 | 부분공간 |
| 정사영 | |
| 전체 분산 법칙 | 피타고라스 |
| 자주 하는 실수 | 바로잡기 |
|---|---|
| 를 수라고 봅니다 | 확률변수입니다 |
| 조건부분산이 상수라고 봅니다 | 의 함수입니다 |
| 상관계수로 설명력을 다 잰다고 봅니다 | 선형 부분만입니다 |
| 조건을 걸면 분산이 항상 준다고 봅니다 | 평균적으로만 줄어듭니다 |
문제 6. 조건부질량함수를 쓰고 정규화가 자동인 이유를 쓰세요.
답. 이며 분자를 더하면 분모가 되기 때문입니다.
문제 7. 결합분포를 만드는 곱셈법칙을 쓰세요.
답. 입니다.
문제 8. 와 의 차이를 쓰세요.
답. 전자는 수이고 후자는 의 함수인 확률변수입니다.
문제 9. 회귀함수를 쓰세요.
답. 입니다.
문제 10. 전체 기댓값 법칙과 증명의 핵심을 쓰세요.
답. 이며 곱셈법칙으로 결합을 만들고 더합니다.
문제 11. 기하분포의 평균을 이 법칙으로 유도하세요.
답. 에서 입니다.
문제 12. 전체 분산 법칙과 두 항의 뜻을 쓰세요.
답. 이며 설명되지 않은 부분과 설명된 부분입니다.
문제 13. 그 증명의 골자를 쓰세요.
답. 전체 기댓값 법칙을 와 에 두 번 적용합니다.
문제 14. 상관비를 쓰고 값의 범위를 쓰세요.
답. 이며 과 사이입니다.
문제 15. 상관비와 상관계수 제곱의 관계를 쓰세요.
답. 이며 회귀함수가 선형이면 같습니다.
문제 16. 제곱오차 최적 예측을 쓰세요.
답. 조건부기댓값입니다.
문제 17. 직교성 조건과 그 증명 도구를 쓰세요.
답. 이며 타워 성질로 증명합니다.
문제 18. 세 부분공간의 포함 관계를 쓰세요.
답. 상수 함수 선형 함수 모든 함수입니다.
심화 1. 연속에서 조건을 거는 미묘함을 설명하세요.
이산에서는 이라 조건부확률의 정의를 바로 쓸 수 있었습니다. **연속에서는 **입니다.
그래도 조건부밀도가 잘 정의되는 것은 밀도의 비로 정의하기 때문입니다.
극한으로 정당화됩니다. 폭 인 구간으로 조건을 걸고 을 보내면
129강 문제 1에서 밀도를 정의한 방식과 같습니다.
그런데 어떻게 극한을 취하느냐가 답을 바꿉니다. 이를 보렐콜모고로프 역설이라 합니다.
구면 위의 균등분포로 조건을 걸어 보면 드러납니다. "적도에 조건을 건다"고 할 때
| 어떻게 접근하는가 | 조건부분포 |
|---|---|
| 위도를 으로 보내며 | 경도에 균등 |
| 자오선의 극한으로 | 균등이 아님 |
같은 사건인데 조건부분포가 다릅니다. 확률 인 사건으로 조건을 걸 때는 어떤 극한 절차인지를 명시해야 합니다.
125강 문제 5의 교훈과 같은 구조입니다. 관측이 어떻게 이루어졌는지가 답을 바꿉니다.
실무에서 대개 문제가 되지 않습니다. 조건 변수가 명확히 정해져 있으면 그 변수에 대한 조건부밀도를 쓰면 되고, 모호함은 좌표를 바꿔도 되는 상황에서만 생깁니다.
심화 2. 조건부기댓값의 성질을 정리하세요.
여러 성질이 계산을 크게 줄입니다.
| 성질 | 식 |
|---|---|
| 선형성 | |
| 끌어내기 | |
| 타워 | |
| 독립 | 이면 |
| 측정가능 | |
| 겹친 조건 |
둘째 줄이 가장 자주 쓰입니다. 를 알고 있다는 조건에서 는 이미 정해진 수이므로 밖으로 나옵니다. 문제 5의 직교성 증명이 이 성질이었습니다.
여섯째 줄이 타워 성질의 일반형입니다. 정보가 많은 조건에서 적은 조건으로 내려올 수 있습니다. 정사영으로 읽으면 큰 부분공간에 사영한 뒤 작은 부분공간에 사영하는 것이 바로 작은 부분공간에 사영하는 것과 같다는 뜻이며, 80강의 정사영 성질 그대로입니다.
마팅게일이 이 성질 위에 서 있습니다.
**"현재까지의 정보로 본 다음 값의 기댓값이 현재 값"**이며, 공정한 게임의 수학적 정의입니다. 타워 성질로 이 모든 에서 같음이 따라옵니다.
심화 3. 라오블랙웰 정리를 정리하세요.
133강 심화 4에서 분산 감소 기법으로 언급했습니다. 문제 4가 그 증명입니다.
라오블랙웰 정리. 가 의 불편추정량이고 가 충분통계량이면
도 불편이며 입니다.
불편성은 타워 성질에서 나옵니다.
분산 감소는 전체 분산 법칙에서 나옵니다.
첫째 항이 비음이므로 반드시 줄어듭니다.
가 충분통계량이어야 하는 이유는 그래야 가 에 의존하지 않아 실제로 계산 가능한 추정량이 되기 때문입니다. 148강에서 다룹니다.
기계학습에서 같은 아이디어가 쓰입니다.
| 자리 | 무엇으로 조건을 거는가 |
|---|---|
| 정책경사의 분산 감소 | 상태 가치 |
| 변분추론의 재매개변수화 | 결정적 부분 |
| 몬테카를로 적분 | 해석적으로 풀리는 부분 |
셋째 줄이 일반 원리입니다. 적분의 일부를 해석적으로 계산할 수 있으면 그 부분은 조건부기댓값으로 대체하고, 남은 부분만 표본으로 추정합니다. 표본 잡음이 그만큼 줄어듭니다.
심화 4. 조건부 독립을 조건부분포로 다시 쓰세요.
124강에서 조건부 독립을 정의했습니다. 조건부분포로 쓰면 더 명확합니다.
동치 표현이 하나 더 있습니다.
**"를 알면 는 에 대해 더 알려 줄 것이 없다"**는 뜻이며, 이쪽이 직관에 가깝습니다.
이 형태가 마르코프 성질의 정의입니다.
**"현재를 알면 과거는 미래에 대해 알려 줄 것이 없다"**이며, 154강 마르코프 연쇄의 출발점입니다.
조건부기댓값으로도 쓸 수 있습니다.
모든 에 대해 성립하면 조건부 독립입니다.
213강의 확률그래프모형이 이 관계들을 그래프로 표현합니다. 124강 문제 4의 세 구조가 그래프의 세 가지 연결 패턴이며, 경로가 막혔는지 보는 것만으로 조건부 독립을 읽어 냅니다.
심화 5. 조건부기댓값과 회귀의 관계를 정리하세요.
문제 5에서 조건부기댓값이 제곱오차 최적 예측이라고 했습니다. 회귀 모형이 하는 일이 그것을 추정하는 것입니다.
그런데 우리는 를 모릅니다. 데이터에서 근사해야 합니다.
| 접근 | 무엇을 가정하는가 |
|---|---|
| 선형회귀 | 회귀함수가 선형 |
| 다항회귀 | 회귀함수가 다항식 |
| 신경망 | 표현력 있는 함수족 |
| 최근접 이웃 | 국소적으로 상수 |
| 커널 회귀 | 국소 가중평균 |
모두 문제 5의 부분공간을 어떻게 잡느냐의 차이입니다.
넷째와 다섯째 줄이 조건부기댓값의 정의를 직접 흉내냅니다. 는 " 근처에서 의 평균"이므로, 가까운 점들의 를 평균내면 됩니다.
나다라야왓슨 추정량이며 129강 심화 5의 커널 밀도추정과 짝입니다.
편향-분산 절충이 대역폭에서 나타납니다. 가 작으면 국소적이라 편향이 작지만 표본이 적어 분산이 크고, 가 크면 반대입니다.
손실을 바꾸면 대상이 바뀝니다. 132강 문제 5에서 본 대로입니다.
| 손실 | 추정 대상 |
|---|---|
| 제곱오차 | 조건부평균 |
| 절대오차 | 조건부중앙값 |
| 핀볼 | 조건부 분위수 |
| 교차엔트로피 | 조건부확률 |
넷째 줄에서 분류가 회귀의 특수한 경우로 보입니다. 가 과 이면 이며, 127강 문제 1의 지시함수 관찰이 여기서 쓰입니다.
심화 6. 조건부기댓값이 기계학습에 나타나는 자리를 정리하세요.
| 자리 | 무엇의 조건부기댓값 |
|---|---|
| 회귀 예측 | |
| 분류 확률 | |
| 벨만 방정식 | |
| 어드밴티지 함수 | |
| 확산모형의 잡음 예측 | |
| 배치 정규화 | 배치로 조건을 건 평균 |
| 어텐션 | 가중치에 따른 조건부 평균 |
셋째 줄이 강화학습의 뼈대입니다.
전체 기댓값 법칙을 첫 행동으로 조건을 건 것이며, 132강 심화 3에서 예고했습니다.
넷째 줄이 133강 심화 4의 대조변수입니다. 어드밴티지는 에서 상태 가치라는 기준선을 뺀 것이며, 기댓값을 바꾸지 않으면서 분산만 줄입니다. 심화 3의 라오블랙웰화와 같은 원리입니다.
다섯째 줄이 가장 최근의 응용입니다. 확산모형은 잡음 낀 에서 원래 잡음을 예측하도록 학습하는데, **제곱오차로 학습하므로 모형이 배우는 것은 정확히 **입니다. 그리고 그 조건부기댓값이 점수함수 와 상수배 관계에 있다는 것이 확산모형 이론의 핵심입니다.
일곱째 줄도 같은 구조입니다. 어텐션의 출력은 값 벡터들의 가중평균이며, 가중치를 조건부확률로 읽으면 조건부기댓값의 근사입니다.
import numpy as np, itertools
S = list(itertools.product(range(1, 7), repeat=2))
N = len(S)
Xf = lambda w: max(w) # X = 최대 (조건으로 걸 변수)
Yf = lambda w: w[0] + w[1] # Y = 합
xs = sorted({Xf(w) for w in S}); ys = sorted({Yf(w) for w in S})
J = np.zeros((len(xs), len(ys)))
for w in S:
J[xs.index(Xf(w)), ys.index(Yf(w))] += 1/N
px = J.sum(1); py = J.sum(0)
# --- 문제 1: 조건을 걸면 행을 다시 정규화한다 ---------------------------
print(" X = 최대, Y = 합. P(Y=y | X=x) 는 결합표의 행을 그 행 합으로 나눈 것입니다")
print(" x P(X=x)" + "".join("%8d" % y for y in ys) + " 행 합")
for i, x in enumerate(xs):
row = J[i]/px[i]
print(" %5d %8.4f" % (x, px[i]) + "".join("%8.4f" % r for r in row)
+ " %8.6f" % row.sum())
print(" 각 행이 그 자체로 확률분포입니다. 123강 문제 4 의 결론 그대로입니다")
print(" X=3 인 조건에서 Y 는 4, 5, 6 만 가능하고 확률이 %.4f, %.4f, %.4f 입니다"
% tuple(J[xs.index(3)][[ys.index(4), ys.index(5), ys.index(6)]]/px[xs.index(3)]))
# X = 최대, Y = 합. P(Y=y | X=x) 는 결합표의 행을 그 행 합으로 나눈 것입니다
# x P(X=x) 2 3 4 5 6 7 8 9 10 11 12 행 합
# 1 0.0278 1.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 1.000000
# 2 0.0833 0.0000 0.6667 0.3333 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 1.000000
# 3 0.1389 0.0000 0.0000 0.4000 0.4000 0.2000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 1.000000
# 4 0.1944 0.0000 0.0000 0.0000 0.2857 0.2857 0.2857 0.1429 0.0000 0.0000 0.0000 0.0000 1.000000
# 5 0.2500 0.0000 0.0000 0.0000 0.0000 0.2222 0.2222 0.2222 0.2222 0.1111 0.0000 0.0000 1.000000
# 6 0.3056 0.0000 0.0000 0.0000 0.0000 0.0000 0.1818 0.1818 0.1818 0.1818 0.1818 0.0909 1.000000
# 각 행이 그 자체로 확률분포입니다. 123강 문제 4 의 결론 그대로입니다
# X=3 인 조건에서 Y 는 4, 5, 6 만 가능하고 확률이 0.4000, 0.4000, 0.2000 입니다
# --- 문제 2: 조건부기댓값은 x 마다 다른 수다 ----------------------------
print(" E[Y | X=x] 를 x 마다 계산합니다")
yv = np.array(ys, dtype=float)
cond_m = np.array([float(yv @ (J[i]/px[i])) for i in range(len(xs))])
cond_v = np.array([float(((yv-cond_m[i])**2) @ (J[i]/px[i])) for i in range(len(xs))])
print(" x P(X=x) E[Y|X=x] Var[Y|X=x] 가능한 y 범위")
for i, x in enumerate(xs):
nz = [ys[j] for j in range(len(ys)) if J[i, j] > 0]
print(" %5d %8.4f %12.6f %14.6f %14s" % (x, px[i], cond_m[i], cond_v[i],
"%d ~ %d" % (min(nz), max(nz))))
print(" x 마다 값이 다르므로 E[Y|X] 는 X 의 함수이고 따라서 확률변수입니다")
print(" 이 확률변수의 분포: 값 %s 를 확률 %s 로 가집니다"
% (np.array2string(np.round(cond_m, 4)), np.array2string(np.round(px, 4))))
# E[Y | X=x] 를 x 마다 계산합니다
# x P(X=x) E[Y|X=x] Var[Y|X=x] 가능한 y 범위
# 1 0.0278 2.000000 0.000000 2 ~ 2
# 2 0.0833 3.333333 0.222222 3 ~ 4
# 3 0.1389 4.800000 0.560000 4 ~ 6
# 4 0.1944 6.285714 1.061224 5 ~ 8
# 5 0.2500 7.777778 1.728395 6 ~ 10
# 6 0.3056 9.272727 2.561983 7 ~ 12
# x 마다 값이 다르므로 E[Y|X] 는 X 의 함수이고 따라서 확률변수입니다
# 이 확률변수의 분포: 값 [2. 3.3333 4.8 6.2857 7.7778 9.2727] 를 확률 [0.0278 0.0833 0.1389 0.1944 0.25 0.3056] 로 가집니다
# --- 문제 3: 전체 기댓값 법칙 -------------------------------------------
print(" E[E[Y|X]] = E[Y] 를 확인합니다")
lhs = float(cond_m @ px); rhs = float(yv @ py)
print(" E[E[Y|X]] = sum_x P(X=x) E[Y|X=x] = %.10f" % lhs)
print(" E[Y] = sum_y y P(Y=y) = %.10f" % rhs)
print(" 차이 %.2e" % abs(lhs-rhs))
print(" 반대 방향도 확인합니다. E[E[X|Y]] = E[X]")
xv = np.array(xs, dtype=float)
cond_mx = np.array([float(xv @ (J[:, j]/py[j])) for j in range(len(ys))])
print(" E[E[X|Y]] = %.10f, E[X] = %.10f, 차이 %.2e"
% (float(cond_mx @ py), float(xv @ px), abs(float(cond_mx @ py) - float(xv @ px))))
print(" 128강 문제 4 의 기하분포 평균도 이 법칙이었습니다")
p = 0.3
print(" E[N] = p*1 + (1-p)(1 + E[N]) -> E[N] = 1/p = %.6f" % (1/p))
# E[E[Y|X]] = E[Y] 를 확인합니다
# E[E[Y|X]] = sum_x P(X=x) E[Y|X=x] = 7.0000000000
# E[Y] = sum_y y P(Y=y) = 7.0000000000
# 차이 0.00e+00
# 반대 방향도 확인합니다. E[E[X|Y]] = E[X]
# E[E[X|Y]] = 4.4722222222, E[X] = 4.4722222222, 차이 0.00e+00
# 128강 문제 4 의 기하분포 평균도 이 법칙이었습니다
# E[N] = p*1 + (1-p)(1 + E[N]) -> E[N] = 1/p = 3.333333
# --- 문제 4: 전체 분산 법칙 ---------------------------------------------
print(" Var[Y] = E[Var[Y|X]] + Var[E[Y|X]] 를 확인합니다")
mY = float(yv @ py); vY = float(((yv-mY)**2) @ py)
within = float(cond_v @ px)
between = float(((cond_m - lhs)**2) @ px)
print(" 전체 분산 Var[Y] %14.8f" % vY)
print(" 집단 내 E[Var[Y|X]] %14.8f" % within)
print(" 집단 간 Var[E[Y|X]] %14.8f" % between)
print(" 합 %14.8f 차이 %.2e"
% (within+between, abs(vY - within - between)))
print(" 집단 간 비중 %.4f -> X 가 Y 의 변동을 이만큼 설명합니다" % (between/vY))
print(" 조건을 걸면 남은 분산이 줄어듭니다. E[Var[Y|X]] = %.6f <= Var[Y] = %.6f"
% (within, vY))
# Var[Y] = E[Var[Y|X]] + Var[E[Y|X]] 를 확인합니다
# 전체 분산 Var[Y] 5.83333333
# 집단 내 E[Var[Y|X]] 1.51757255
# 집단 간 Var[E[Y|X]] 4.31576078
# 합 5.83333333 차이 2.66e-15
# 집단 간 비중 0.7398 -> X 가 Y 의 변동을 이만큼 설명합니다
# 조건을 걸면 남은 분산이 줄어듭니다. E[Var[Y|X]] = 1.517573 <= Var[Y] = 5.833333
# --- 문제 5: 조건부기댓값은 최적 예측이자 정사영이다 --------------------
print(" X 의 함수 g(X) 중에서 E[(Y-g(X))^2] 을 최소로 만드는 것을 찾습니다")
def mse(g):
return float(sum(J[i, j]*(ys[j] - g[i])**2 for i in range(len(xs)) for j in range(len(ys))))
xa = np.array(xs, dtype=float)
mX = float(xa @ px); vX = float(((xa-mX)**2) @ px)
covXY = float(sum(J[i, j]*(xs[i]-mX)*(ys[j]-mY) for i in range(len(xs)) for j in range(len(ys))))
b1 = covXY/vX; b0 = mY - b1*mX
cands = [("E[Y|X=x] (조건부평균)", cond_m),
("최적 선형 a + b x", b0 + b1*xa),
("상수 E[Y]", np.full(len(xs), mY)),
("조건부평균 + 0.3", cond_m + 0.3),
("조건부평균 - 0.5", cond_m - 0.5)]
print(" 최적 선형은 b = Cov/Var[X] = %.6f, a = %.6f 입니다" % (b1, b0))
print(" g(X) E[(Y-g(X))^2] 조건부평균 대비")
best = mse(cond_m)
for nm, g in cands:
print(" %-26s %16.8f %16.8f" % (nm, mse(g), mse(g) - best))
print(" 상수 > 최적 선형 > 조건부평균 순으로 오차가 줄어듭니다")
print(" 함수 집합이 넓어질수록 더 잘 맞출 수 있습니다")
print(" 조건부평균에서 어긋나면 어긋난 만큼 정확히 그 제곱이 더해집니다")
print(" +0.3 이면 %.6f, -0.5 이면 %.6f 만큼 늘어납니다" % (0.3**2, 0.5**2))
print(" 잔차가 X 의 모든 함수와 직교합니다. E[(Y - E[Y|X]) h(X)] = 0")
print(" h(X) E[(Y-E[Y|X]) h(X)]")
for nm, h in [("1", np.ones(len(xs))), ("x", np.array(xs, dtype=float)),
("x^2", np.array(xs, dtype=float)**2),
("1/x", 1.0/np.array(xs, dtype=float))]:
val = float(sum(J[i, j]*(ys[j] - cond_m[i])*h[i]
for i in range(len(xs)) for j in range(len(ys))))
print(" %-16s %20.2e" % (nm, val))
print(" 80강의 정사영과 같은 구조입니다. 조건부기댓값은 X 로 만든 공간으로의 정사영입니다")
# X 의 함수 g(X) 중에서 E[(Y-g(X))^2] 을 최소로 만드는 것을 찾습니다
# 최적 선형은 b = Cov/Var[X] = 1.479452, a = 0.383562 입니다
# g(X) E[(Y-g(X))^2] 조건부평균 대비
# E[Y|X=x] (조건부평균) 1.51757255 0.00000000
# 최적 선형 a + b x 1.51826484 0.00069229
# 상수 E[Y] 5.83333333 4.31576078
# 조건부평균 + 0.3 1.60757255 0.09000000
# 조건부평균 - 0.5 1.76757255 0.25000000
# 상수 > 최적 선형 > 조건부평균 순으로 오차가 줄어듭니다
# 함수 집합이 넓어질수록 더 잘 맞출 수 있습니다
# 조건부평균에서 어긋나면 어긋난 만큼 정확히 그 제곱이 더해집니다
# +0.3 이면 0.090000, -0.5 이면 0.250000 만큼 늘어납니다
# 잔차가 X 의 모든 함수와 직교합니다. E[(Y - E[Y|X]) h(X)] = 0
# h(X) E[(Y-E[Y|X]) h(X)]
# 1 2.78e-17
# x -1.11e-16
# x^2 -2.22e-15
# 1/x 4.51e-17
# 80강의 정사영과 같은 구조입니다. 조건부기댓값은 X 로 만든 공간으로의 정사영입니다
문제 1의 표에서 각 행의 합이 정확히 입니다. 결합표에서 한 행을 떼어 다시 정규화한 것이며, 123강 문제 4에서 조건부확률이 확률측도임을 보인 것의 확률변수판입니다.
문제 5의 마지막 표가 이 강의의 절정입니다. 잔차와 의 네 가지 함수의 내적이 모두 이하입니다. , , , 처럼 전혀 다른 함수들과 모두 직교하며, 이것이 "조건부기댓값은 가 만드는 공간으로의 정사영"이라는 말의 정확한 뜻입니다.
세 예측의 오차 , , 을 나란히 보십시오. 상수에서 선형으로 갈 때 크게 줄고, 선형에서 모든 함수로 갈 때는 뿐입니다. 이 예에서 회귀함수가 거의 선형이기 때문이며, 140강의 다변량 정규분포에서는 정확히 선형이 됩니다.
정답.
| 기호 | 읽는 법 | 뜻 |
|---|---|---|
| 조건부질량함수 | 결합을 주변으로 나눈 것입니다 | |
| 조건부기댓값(값) | 수입니다 | |
| 조건부기댓값(변수) | 의 함수인 확률변수입니다 | |
| 회귀함수 | regression function | 입니다 |
| 타워 성질 | tower property | 조건을 겹쳐 걸어도 됩니다 |
| 끌어내기 | pull-out property | 가 밖으로 나옵니다 |
| 전체 분산 법칙 | law of total variance | 집단 내와 집단 간으로 나눕니다 |
| 상관비 \eta^ | correlation ratio | 어떤 관계로든 설명되는 비중입니다 |
| 직교성 | orthogonality | 잔차가 의 함수와 수직입니다 |
| 라오블랙웰화 | Rao-Blackwellization | 조건부기댓값으로 분산을 줄입니다 |
| 마팅게일 | martingale | 다음의 조건부기댓값이 현재입니다 |
| 보렐콜모고로프 역설 | Borel-Kolmogorov paradox | 확률 조건의 모호함입니다 |
다음 138강에서는 공분산과 상관계수를 다룹니다. 133강 문제 3에서 합의 분산에 공분산 항이 붙는 것을 보고 미뤄 두었고, 이 강의 문제 4에서 상관비와 비교하며 다시 언급했습니다. 이제 정식으로 정의하고 성질을 세웁니다. 133강 문제 2의 내적공간 대응에서 공분산이 내적이고 상관계수가 코사인이라 했으므로, 63강의 코시슈바르츠 부등식이 의 증명이 됩니다. 그리고 124강 심화 6에서 예고한 "무상관이어도 독립이 아니다"를 정면으로 다룹니다.