2. 발표자
이민호 (Miika)
Datarize 데이터 분석가
1일 1커밋 잔디 모임에 시즌 1~5 까지 전부 참여
요새는 분석보단 개발(주로 JS)을 더 많이 합니다
"데이터와 모델링 결과가 레포트에서 멈추지 않고,
실제로 사람들에게 도움을 줄 수 있도록 하는 제품을 만들고자 합니다"
https://github.com/lumiamitie/TIL
3. 잔디 모임에서 공부하고 있는 것
일하다 마주치는 개발 이슈들 (Git, Docker, JS, Python)
통계 서적 "Statistical Rethinking" 요약 정리
- 5/30 기준 총 90일 중에서 45번의 커밋이 해당됨
"오늘 다루게 될 내용도
Statistical Rethinking 에서 인상 깊었던 부분을 정리한 결과입니다"
5. 모형이란 무엇일까?
현실을 축소하여 필요한 부분을 중심으로 논리적으로 구성한 작은 세계
- 모형 안에서는 가능한 모든 경우의 수를 고려할 수 있다
- 모형이 예상했던 대로 동작하는지 실제 세상의 데이터를 바탕으로 검증할 수 있다
오늘 이야기할 "모형"이란 다소 개념적인 이야기
- 현실의 축소판은 맞지만, 어떻게 축소했는지 고민하지는 않을 것
- 개발로 치면 "아직 세부적인 내용이 구현되지 않은 함수"
6. 모형을 통해 데이터를 이해하려고 할 때
올바른 해석을 방해하는 요인들
사실 너무 많은데...
(멍청한) 나
- 잘못세운가설
- 코드실수
- 데이터잘못가져옴
- 파악하지못한히스토리
- 도메인지식부족
(제대로 쌓여있다던) 데이터
- 분석을목적으로쌓아두지않은로그덩어리
- 분명있다고그랬는데비어있는데이터
- 직관적인해석과는거리가먼카테고리코드값들
- 문서에정의된용도와다르게사용되고있는컬럼들
+ 또 다른 무언가
...
7. 그 중에서도 "변수 간의 관계로 인해 생기는 문제들"에 대해서 알아보자
조금 더 구체적으로 풀어 써보면,
"변수들 사이의 관계 때문에
원래 우리가 알고자 했던 입력 변수와 결과 변수의 관계를
잘못 해석하게 되는 경우"
9. 변수 간의 관계로 인해 생기는 문제들
어떤 것들이 있을까?
오늘 다룰 내용은 세 가지 케이스
- Multicollinearity (다중 공선성)
- Post-Treatment Bias
- Collider Bias
10. Multicollinearity (다중 공선성)
Definition & Example
Definition
- 회귀 모형에서 두 개 이상의 예측 변수가 서로 강한 상관관계를 가지는 경우를 말한다
- 실제로 예측 변수와 결과 변수가 연관이 있더라도, 모형은 연관이 없다는 결론을 내려버린다
Example : 다리 길이와 키의 관계 시뮬레이션
- 양쪽 다리 모두 키의 40~50% 길이가 되도록 시뮬레이션을 수행한다
- 그리고 각 다리 길이가 키와 어떤 관련이 있는지 모형을 통해 확인한다
- 그런데 결과의 상태가....?
L H
R H
L
H
R
효과 있음
효과 있음
둘 다
효과 없음
?????????
11. Multicollinearity (다중 공선성)
Example
L H
R H
L
H
R
left : 2.014
통계적으로 유의미함
(키가 왼쪽 다리 길이의 2.014배 정도)
right : 2.0113
통계적으로 유의미함
(키가 왼쪽 다리 길이의 2.011배 정도)
left : 0.92 (통계적으로 유의미하지 않음)
right : 1.0931 (통계적으로 유의미하지 않음)
12. Multicollinearity (다중 공선성)
왜 발생할까?
회귀 모형이 동작하는 방식의 특성
- 회귀 모형을 통해 학습하는 파라미터는 다음과 같은 내용을 의미한다
- "다른 쪽 다리 길이를 이미 알고 있을 때,
한 쪽 다리 길이를 추가로 알게 되어서 얻게 되는 가치는 얼마나 될까?"
- 결국 양쪽 다리 길이 모두 키를 추정하는데 효과가 없다는 결론을 내리게 된다
공통적인 원인 변수가 존재할 때 발생하기 쉽다 L
U
R
H
양쪽 다리 길이의
공통 원인
키
13. Post-Treatment Bias
Definition & Example
Definiton
- 변수 A의 결과로 이루어진 변수 B를 모형에 포함시킬 경우, A에 대해 잘못된 해석을 내릴 수 있다
- 우리가 효과를 구하고 싶어하는 변수(Treatment)는
해당 변수로 인한 결과 (Post-Treatment) 변수가 같이 있을 땐 그 효과가 가려질 수 있다
Example : 곰팡이 방지 토양의 효과를 시뮬레이션 해보자
- 토양에곰팡이가생기면식물의성장에방해가된다.곰팡이방지토양을사용하면얼마나효과가있을까?
- 변수는 4개 : 식물의 처음 높이, 실험이 끝났을 때 식물의 높이, 곰팡이 방지 토양 사용 여부, 곰팡이 존재 여부
- 이 때 모형에 "곰팡이 존재 여부"를 포함시키면, 곰팡이 방지 토양의 효과가 없는 것처럼 보인다
14. Post-Treatment Bias
Example
"곰팡이 존재 여부" 포함하지 않을 때
- 곰팡이 방지 토양의 효과 : 1.213
- 통계적으로 유의미함
"곰팡이 존재 여부" 포함할 때
- 곰팡이 방지 토양의 효과 : -0.0301
- 통계적으로 유의미하지 않음
15. Post-Treatment Bias
왜 발생할까?
변수들의 관계를 그래프로 표현해보면 이렇게 된다
변수들이 X → A → Y 와 같은 형태로 영향을 주고받는 상황에는
A값에 조건이 걸릴 때 X와 Y변수가 조건부 독립 상태가 된다
곰팡이 방지 토양
사용 여부
곰팡이 존재 여부
실험이 끝났을 때
식물의 높이
식물의 처음 높이
16. 참고 1
특정한 변수에 조건을 부여한다는 것이 구체적으로 어떤 의미일까?
A → B → C 라는 형태의 모형이 있을 때, 이 모형을 함수로 나타내면 다음과 같다
- B = func(A)
- C = func(B)
- 결국 C 값을 알기 위해서는 변수 A에 특정한 값을 입력해야 한다
따라서,
모형에 변수 A를 포함하게 되면 "변수 A에 특정한 값으로 조건을 부여" 하게 된다
17. 참고 2
X와 Y가 조건부 독립이 된다는 건 무슨 말일까?
모형에 A가 포함되는 조건 하에서는 X와 Y변수가 독립적으로 움직이게 된다
따라서 X변수가 Y변수에 영향을 주지 못하는 상태가 된다는 것을 의미한다
X Y
X Y
독립 아님. X가 Y에 영향을 줄 수 있다
독립. X가 Y에 영향을 줄 수 없다
18. Post-Treatment Bias
왜 발생할까?
곰팡이 여부 변수를 모형에 포함시키면, 다음과 같은 질문을 하는 것이 된다
"식물에 곰팡이가 피었다는 것을 이미 알고 있을 때,
곰팡이 방지 토양을 사용하는 것이 식물에 성장에 영향을 미치는가?"
정답은 "아니오" 가 된다
곰팡이 방지 토양을 사용하면,
곰팡이가 생기는 것을 방지하는 방식으로 식물의 성장에 영향을 미치기 때문이다
19. Collider Bias
Definition & Example
Definition
- 서로 관련없는 두 변수가 또 다른 변수에 동시에 영향을 미칠 경우,
원인에 해당하는 두 변수가 서로 관련이 있는 것처럼 보인다
Example : 논문 게재 여부 시뮬레이션
- 논문의 신뢰도, 가치 값을 독립적인 난수로 생성한다
- 신뢰도 + 가치 점수를 기준으로 상위 10% 논문이 선택된다고 가정해보자
- 그러면 선택된 논문들에서는 신뢰도와 가치 사이에 음의 상관관계가 나타난다
A
B
Y
21. Collider Bias
왜 발생할까?
두 변수의 공통 결과 변수(Collider)에 조건을 부여할 때 발생한다
Collider 변수에 조건을 부여하면,
그 원인에 해당하는 변수들 사이에 가짜 상관관계를 만들어낸다
표본을 선택하는 과정이 결과에 영향을 미치는 선택 편향(Selection Bias)과 관련이 있다
"신뢰성이 떨어지는 연구가 저널에 게재되려면
그만큼 뉴스거리로서는 높은 가치가 있어야 한다.
그렇지 않았다면 아예 선택조차 받지 못했을 것이다.
그 반대도 마찬가지다."
22. 모형에 넣어야 하는 변수와 빼야 하는 변수를 어떻게 결정할 수 있을까?
심슨 패러독스처럼,
중요한 변수가 빠지는 경우 잘못된 해석을 하게 되는 경우가 있다
앞서 살펴본 Bias 들이 발생한다면,
변수가 모형에 포함되는 것이 오히려 나쁜 해석을 하게 만든다
그렇다면 모형을 올바르게 해석하기 위해서는 변수를 어떻게 선택해야 할까?
24. DAG?
Directed Acyclic Graph
방향성이 존재하면서 사이클이 없는 그래프 구조를 말한다
직접 영향을 주는 변수 관계를 화살표를 통해 표시한다
A B C
A B A가 B에 직접 영향을 미친다
A가 C에 간접적으로 영향을 미친다
25. DAG를 그리면 무엇을 할 수 있을까?
Confronting Confounding
변수들 사이의 관계를 교란시키는 요소(Confound)를 찾아낼 수 있다
- 예측 변수 X와 결과 변수 Y의 관계가 실제와 다르게 추정되는 현상을 Confounding 이라고 한다
- 구체적인 분석과 모델링이 시작되기 전에 발생할 수 있는 위험을 사전에 발견할 수 있다
기본적으로 4가지 방식의 confound가 존재한다
X Y
Z
Fork Pipe Collider Descendant
X
Y
Z
X Y
Z
X Y
Z
D
26. DAG를 그리면 무엇을 할 수 있을까?
Confronting Confounding
X Y
Z
Fork
Z에 대해 조건을 걸면
X와 Y가 조건부 독립
X
Y
Z
X Y
Z
X Y
Z
DPipe
Z에 대해 조건을 걸면
X와 Y가 조건부 독립
Collider
Z에 대해 조건을 걸면
X와 Y가 영향을 주고받게 됨
Descendant
D에 대해 조건을 걸면
X와 Y가 영향을 주고받게 됨
27. DAG는 만능인가?
질문이 이러면 정답은 당연히 아니오..겠죠?
DAG로 설명하지 못하는 부분도 있다
- interaction
변수들 사이에 상호작용이 발생하는 경우
- 초기 조건에 민감한 복잡계는 애초에 DAG로 표현하는 것이 어렵다
"통계 모형도, 인과 관계를 나타낸 DAG도
그 자체만으로 모든 정보를 표현할 수는 없다"
Y ~ X1 + X2
Y ~ X1 + X2 + X1:X2
X1 X2
Y
X1 X2
Y
인터렉션 X
인터렉션 O
29. 그래서, 도대체 무엇이 올바른 해석을 방해하고 있는가?
"모형" 이라는 것 그 자체의 문제
- 모형은 항상 틀릴 수 있다
- 모형에서 얻고자 하는 것이 무엇일까? 예측 vs 추정
그런 모형을 대하는 "나의 자세"의 문제
- 계산기 대하듯이 가지고 있는 변수 모형에 다 넣고 나온 결과를 맹신하지 말자
- 데이터가 만들어지는 프로세스 자체에 대해서 고민하기