증거의 무게는 가설마다 다르다
[♪ 밝은 음악]
이지은: 안녕하세요, '안개 속을 걷다'의 이지은입니다! 오늘도 불확실성과 친해지는 시간, 함께해요!
어제 동생한테 전화가 왔어요. "언니, 나 복권 당첨됐어." 근데 목소리가 너무 담담한 거예요. 막 소리 지르면서 난리 날 줄 알았는데... [웃음] "얼마짜리야?" 했더니 "5천원!"
[띠링!]
재밌는 건 제 머릿속이었어요. 순간적으로 계산이 막 돌아가더라고요. '이렇게 담담하게 말한다고? 큰돈이었으면 지금쯤 난리 났을 텐데... 아, 소액이구나!'
신기하게도 동생의 차분한 목소리 하나로 여러 가능성을 다르게 평가한 거죠. 오늘 배울 '데이터 지지도'가 바로 이거예요. 하나의 증거가 여러 가설을 얼마나 지지하는지 보여주는 지표죠. 그런데 이걸 제대로 보려면, 먼저 각 가설에서 어떤 데이터가 나올 수 있는지 정리한 '데이터 모델'이 필요해요.
자, 그럼 데이터 모델을 어떻게 만드는지, 그리고 이 모델을 통해 데이터 지지도를 어떻게 읽어내는지 함께 알아볼까요?
지난 시간(Ep.8)에는 베이지안 모델의 첫 번째 구성요소인 사전 확률을 다뤘습니다. 이번 시간에는 두 번째 구성요소인 데이터 모델을 살펴봅니다. 흥미롭게도 데이터 모델은 두 가지 방식으로 읽을 수 있는데, 특히 데이터를 관찰한 다음에 읽는 방식에서 '데이터 지지도'라는 개념이 등장합니다.
복권 당첨 소식을 전하는 차분한 목소리에서 소액 당첨을 추측했듯이, 우리는 늘 결과를 보고 원인을 거꾸로 추적합니다 — 증거를 보고 범인을 찾는 것처럼요. 이런 역방향 추론을 제대로 하려면 먼저 데이터가 어떻게 생성되는지에 대한 모델(데이터 모델)을 갖고 있어야 합니다.
그렇다면 일상에서 데이터 모델을 어떻게 만들까요? 의외로 간단합니다. 다음과 같은 방식으로 표를 그려보면 됩니다.
먼저 관찰할 데이터를 어떻게 구분할지 정합니다. 친구의 지각을 예로 들면, 단순히 지각 여부만 볼 수도 있고, 지각 시간까지 세분화할 수도 있습니다. '지각 없음', '30분 미만 지각', '30분 이상 지각' 이런 식으로요. 케이크의 경우라면 촉촉함을 '덜 촉촉', '적당히 촉촉', '매우 촉촉'으로 나눌 수 있겠죠. 이렇게 정한 구분을 표의 각 행에 씁니다.
다음으로 가능한 원인(가설)들을 표의 각 열에 배치합니다. 친구 지각의 원인이라면 '늦잠', '교통체증' 같은 것들이 될 테고, 케이크 촉촉함의 원인이라면 '버터 50g', '버터 150g', '버터 250g' 같은 레시피 차이가 되겠죠.
이제 표를 채워봅시다. 핵심은 한 번에 한 열씩 채워나가는 겁니다. 먼저 '늦잠'이라는 가설이 참일 때, 나올 수 있는 결과들의 분포를 생각해봅시다. "늦잠을 100번 잤다면, 지각하지 않은 경우가 몇 번, 30분 미만 지각이 몇 번, 30분 이상 지각이 몇 번일까?" 경험상 각각 10번, 20번, 70번 정도인 것 같습니다. Ep.7에서 이야기했던 것처럼, 같은 원인(늦잠)에서도 우연적 불확실성 때문에 매번 다른 결과가 발생할 수 있죠. 이렇게 하면 '늦잠' 열의 세 칸이 P(지각하지 않음|늦잠) = 10%, P(30분 미만|늦잠) = 20%, P(30분 이상|늦잠) = 70%로 채워집니다. 한 열의 확률을 모두 더하면 당연히 100%가 되겠죠.
이제 '교통체증' 열로 넘어가 같은 과정을 반복합니다.
여기서 중요한 점이 하나 있습니다. 베이지안 추론을 할 때 사전 확률은 새로운 데이터를 볼 때마다 계속 업데이트되지만, 데이터 모델은 일단 정하면 고정시킵니다. 물론 나중에 모델이 현실을 제대로 설명하지 못한다는 걸 발견하면, 그때 가서 모델 자체를 수정하면 됩니다.
다른 예시로 데이터 모델 만들기를 연습해봅시다. 상사가 갑자기 커피를 사줬습니다. 왜일까요? 누군가 평소와 다르게 친절할 때는 보통 기분이 좋거나, 부탁할 일이 있거나, 아니면 별다른 이유가 없을 수도 있습니다.
이제 표를 채워봅시다. 먼저 '기분 좋음' 열부터 시작하죠. 상사가 기분 좋을 때 100번 중 몇 번이나 커피를 살까요? 30번 정도일 것 같습니다. 그럼 커피를 사지 않는 경우는 70번이겠네요. 합이 100번(100%)이 되는지 확인했으니, 다음 열로 넘어갑니다. '부탁할 일 있음' 열에서는 커피를 사는 경우가 60번, 사지 않는 경우가 40번. '평소' 열에서는 커피를 사는 경우가 5번, 사지 않는 경우가 95번. 이렇게 한 열씩 채워나가면 데이터 모델이 완성됩니다.
눈치채셨겠지만, 사람마다 다른 데이터 모델을 만들게 됩니다. 각자 그 상사와 맺어온 관계가 다르고, 과거 경험도 다르고, 사람의 행동 패턴에 대한 이해도 다르니까요. 데이터 모델이 이렇게 주관적이어도 괜찮을까요?
베이지안 방법을 비판하는 사람들은 주로 사전 확률의 주관성만 문제 삼지만, 실은 데이터 모델 설정에도 똑같이 주관성이 들어갑니다. 이는 통계 분석에서도 마찬가지입니다. 사람들의 소득 분포를 분석한다고 해봅시다. 정규분포를 쓸 수도 있고, 극단적인 값을 더 잘 다루는 t-분포를 쓸 수도 있습니다. 뭐가 맞을까요? 정답은 없습니다. 목적에 따라 더 나은 선택이 있을 뿐이죠. 결국 모든 모델은 복잡한 현실을 단순하게 정리한 것이고, 어떻게 단순화할지는 우리가 결정하는 겁니다.
이렇게 볼 때 문제의 핵심은 주관성 자체가 아닙니다. 어느 정도의 주관성은 피할 수 없습니다. 진짜 문제는 객관적인 척하면서 주관성을 숨기는 거죠[1]. 오히려 "나는 이렇게 봤어"라고 데이터 모델을 투명하게 공개하면 여러 장점이 있습니다.
먼저, 숨겨진 가정들이 수면 위로 올라옵니다. 감기에 걸린 원인을 분석하는 데이터 모델을 만든다고 해봅시다. '비 오는 날 우산 없이 나가면 감기 걸릴 확률이 40%'라고 표에 적었는데, 누군가 "건강한 사람은 20% 정도 아니야?"라고 물을 수 있겠죠. 아, 그제야 깨닫습니다. 내가 무의식적으로 '평소 감기에 잘 걸리는 사람'을 기준으로 생각하고 있었구나. 이렇게 데이터 모델을 공개하면 자신도 몰랐던 가정들을 발견하게 됩니다.
또한 추론 과정을 나중에 검증할 수 있습니다. 데이터 모델을 표로 명확히 적어두면, 시간이 지나 실제 경험과 비교해볼 수 있습니다. 예를 들어 "교통체증일 때 30분 이상 지각할 확률을 20%로 봤는데, 6개월 동안 관찰해보니 실제로는 40%에 가깝네?" 이런 피드백으로 모델을 계속 개선할 수 있는 거죠.
마지막으로, 집단 의사결정에서 서로 다른 관점을 조율할 수 있습니다. 신제품 성공 가능성을 평가한다고 해봅시다. 마케팅팀은 "품질이 좋으면 긍정 리뷰 확률 70%", 개발팀은 "90%", 영업팀은 "60%"라고 봅니다. 왜 이렇게 다를까요? 마케팅팀은 경쟁 제품을 의식하고, 개발팀은 기술력에 자신 있고, 영업팀은 고객 반응을 현실적으로 봅니다. 이런 차이를 논의하면서 더 균형 잡힌 데이터 모델을 만들 수 있습니다.
데이터 모델을 만들 때 특히 주의할 점이 두 가지 있습니다.
첫째, 확증 편향을 경계해야 합니다. 확증 편향은 사전 확률뿐 아니라 데이터 모델에도 슬그머니 스며듭니다. '성공한 사람은 대부분 부유한 집안 출신일 거야'라고 믿는 사람은 P(성공|가난한 집안)을 지나치게 낮게 잡을 겁니다. 반대로 '부유한 집안이면 다 성공하지'라고 믿는 사람은 P(성공|부유한 집안)을 과대평가하겠죠. 둘 다 자기 믿음에 맞춰 숫자를 왜곡하는 겁니다. 이를 막으려면 의식적으로 반대 경우들을 따져봐야 합니다.
둘째, 극단적 확률을 피해야 합니다. 표의 어떤 칸에도 0%나 100%를 쓰지 마세요. 온라인 리뷰를 생각해보세요. 미슐랭 스타 레스토랑도 "별로였어요" 리뷰가 있고, 동네 허름한 분식집도 "인생 맛집!" 리뷰가 있습니다. 입맛은 천차만별이고, 가짜 리뷰도 있고, 어떤 날은 셰프 컨디션이 안 좋을 수도 있으니까요.
세상은 우리가 만든 단순한 표보다 훨씬 복잡합니다. 케이크 하나만 봐도 그래요. 촉촉함은 버터 양뿐 아니라 계란 개수, 반죽 시간, 오븐 온도, 심지어 그날 습도까지 영향을 받습니다. 모든 걸 다 담은 완벽한 데이터 모델? 불가능하죠. 하지만 최소한 "예상 밖의 일도 일어날 수 있다"는 여지를 남겨두면, 오히려 더 현실적인 추론을 할 수 있습니다.
이제 데이터 모델을 완성했으니 어떻게 읽을지 알아봅시다. 앞서 살펴봤듯이, 데이터 모델은 모든 가설-데이터 조합에 대해 P(데이터|가설)을 담고 있습니다. 재미있는 건, 같은 표를 두 가지 방식으로 읽을 수 있다는 겁니다. 어떤 가설(원인)이 참인지 알고 데이터(결과)를 예측하느냐, 아니면 데이터(결과)를 보고 어떤 가설(원인)이 참일지 추론하느냐에 따라 완전히 다른 의미가 됩니다.
구체적인 예로 살펴볼까요? 아래 표는 버터 양(가설)에 따라 케이크의 촉촉함(데이터)이 어떻게 달라지는지 보여주는 데이터 모델입니다.
표의 각 칸은 조건부 확률 P(데이터|가설)을 담고 있습니다. 예를 들어 P(덜 촉촉|버터 50g) = 80%는 버터 50g으로 만들 때 케이크가 덜 촉촉할 확률이 80%라는 뜻이죠.
순방향: 데이터 생성의 관점. 첫 번째는 순방향 읽기입니다. 표를 세로로, 즉 열 단위로 읽는 거죠. "이 레시피(가설)로 케이크를 만들면 어떤 맛(데이터)이 날까?"라는 질문에 답하는 방식입니다. 원인에서 결과로 향하는, 우리에게 자연스러운 인과의 방향입니다.
같은 레시피로 만들어도 매번 똑같은 케이크가 나오지는 않습니다. 오븐 온도의 미세한 차이, 반죽 정도, 그날의 습도 같은 수많은 요인들이 영향을 미치니까요. 그래서 버터 50g으로 만들면 대부분(80%)은 덜 촉촉하지만, 때로는 적당히 촉촉하거나(15%) 매우 촉촉한(5%) 케이크가 나올 수도 있는 겁니다.
이런 순방향 읽기는 데이터를 예측할 때 쓰입니다. 버터 50g으로 케이크를 100개 만든다면, 대략 80개는 덜 촉촉하고, 15개는 적당히 촉촉하고, 5개는 매우 촉촉할 거라고 예상할 수 있죠.
역방향: 베이지안 추론의 관점. 두 번째는 역방향 읽기입니다. 이번엔 표를 가로로, 즉 행 단위로 읽습니다. 질문도 완전히 바뀝니다. "이 맛(데이터)이 나왔는데, 어떤 레시피(가설)를 썼을까?" 결과에서 원인으로 거슬러 올라가는, 추론의 방향입니다.
지금 '적당히 촉촉한' 케이크를 먹고 있다고 해봅시다. '촉촉' 행을 가로로 읽으면 버터 50g일 때 15%, 150g일 때 80%, 250g일 때 15%입니다. 이 숫자들이 무엇을 의미할까요? 각 레시피로 100개씩 만들었을 때, 버터 150g으로는 80개가 촉촉하지만, 50g이나 250g으로는 15개만 촉촉하다는 뜻입니다. 그러니 지금 먹는 이 촉촉한 케이크는 버터 150g으로 만들었을 가능성이 가장 높겠죠.
이런 맥락에서 표의 P(데이터|가설)은 이미 관찰된 데이터가 각 가설을 지지하는 정도로 해석하며, 데이터 지지도(likelihood)라고 부릅니다. 통계학에서는 보통 '우도'로 번역하지만, 그 의미가 잘 와닿지 않아 이 책에서는 '데이터 지지도'라고 부르겠습니다.
두 관점의 핵심적 차이. 순방향과 역방향의 차이를 정리해봅시다. 순방향에서는 가설을 하나 고정하고 여러 데이터가 나올 확률을 봅니다. 버터 50g이라는 가설 아래에서 가능한 모든 촉촉함 정도의 확률이므로, 각 열의 합은 반드시 100%가 됩니다.
역방향에서는 데이터를 관찰된 값에 고정하고 여러 가설의 지지도를 봅니다. '촉촉한 케이크'라는 데이터에 대해 각 버터 양이 보이는 지지도(15%, 80%, 15%)의 합은 110%입니다. 같은 P(데이터|가설)인데 왜 순방향의 열 합(100%)과 다를까요? 순방향의 열은 가능한 모든 결과의 확률이므로 합이 100%가 되지만, 역방향의 행은 이미 일어난 결과를 각 가설이 얼마나 잘 설명하는지 독립적으로 평가한 것이므로 합에 제약이 없습니다. 이게 확률과 데이터 지지도의 중요한 차이예요.
데이터 지지도는 확률이 아니라 '상대적 지지도'를 나타냅니다. 비유하자면 이렇습니다. 세 영화의 관객 추천율이 A영화 15%, B영화 80%, C영화 15%라고 해봅시다. 추천율은 각 영화가 독립적으로 받은 평가이므로 이 숫자들의 합이 100%가 될 이유는 없죠. 중요한 건 B영화가 A영화보다 5배 이상 높다는 상대적 비교입니다.
하지만 데이터 지지도를 퍼센트로 쓰면 확률과 혼동하기 쉽습니다. 이 차이를 눈에 보이게 하기 위해, 이 책에서는 데이터 지지도를 (상대 평가) 점수로 표기합니다. 촉촉한 케이크 사례에서 버터 150g의 데이터 지지도는 80점, 50g과 250g은 각각 15점입니다. 확률은 퍼센트(%), 데이터 지지도는 점수(점) — 단위만 보면 어떤 역할을 하는 숫자인지 바로 알 수 있습니다.
데이터 지지도는 오직 관찰된 데이터만 가지고 여러 가설을 상대 평가합니다. 지난 시간(Ep.8)에 살펴본 사전 확률 분포는 데이터를 고려하지 않고 오직 자신의 지식과 경험만으로 여러 가설을 상대 평가합니다. 이렇게 보니 베이지안 모델의 두 구성요소(사전 확률과 데이터 지지도) 모두 여러 가설을 상대 평가하는 거죠. 즉, 베이지안 추론의 핵심은 이 상대적 비교에 있습니다.
왜 상대 비교가 중요할까요? 첫째, 불확실성을 있는 그대로 받아들입니다. "버터 150g이다!"라고 단정하는 대신, "150g일 가능성이 가장 높지만 50g이나 250g일 수도 있다"고 여러 가능성을 열어둡니다. 둘째, 새로운 증거의 영향을 유연하게 반영할 수 있습니다. 데이터 지지도가 150g 가설을 강하게 지지해도, 사전 지식에 따라 최종 판단은 달라질 수 있습니다. 상대적 비교이기 때문에 이런 유연한 결합이 가능한 거죠.
같은 데이터 모델, 다른 해석. 정리하면, 데이터 모델에서 정의한 P(데이터|가설)은 두 가지 방식으로 읽을 수 있습니다. 세로로 읽으면(열 단위) 특정 가설에서 나올 수 있는 데이터들의 확률 분포를 봅니다. 가로로 읽으면(행 단위) 관찰된 데이터가 각 가설을 얼마나 지지하는지 비교합니다.
베이지안 추론은 바로 이 역방향 읽기, 즉 결과를 보고 원인을 추측하는 과정을 체계화한 방법입니다. 일상에서 우리가 늘 하는 추론("이 증상이면 감기일까 독감일까?", "이 반응이면 기분이 좋은 걸까 나쁜 걸까?")을 수학적으로 정리한 거죠. 그래서 데이터 지지도가 베이지안 추론의 핵심 개념 중 하나가 됩니다.
오늘은 데이터 모델을 만들고 읽는 법을 배웠습니다. 같은 표를 세로로 읽으면 예측, 가로로 읽으면 추론이 되는 신기한 경험을 했죠. 특히 가로로 읽는 데이터 지지도가 베이지안 추론의 핵심입니다. 물론 우리가 만든 데이터 모델은 주관적일 수밖에 없습니다. 하지만 투명하게 공개하고, 확증 편향을 경계하며, 극단적 확률을 피한다면 충분히 유용한 도구가 됩니다.
하지만 데이터 지지도만으로는 완전한 답을 얻을 수 없습니다. 촉촉한 케이크가 버터 150g 가설을 가장 강하게 지지한다고 해도, 실제로 150g을 썼을 확률이 가장 높은 건 아닙니다. 만약 케이크를 만든 사람이 평소 버터를 아껴서 대부분 50g만 쓴다면 어떨까요? 관찰한 데이터를 기존에 알고 있는 사전 지식과 결합해야만 좋은 답을 얻을 수 있습니다. 다음 시간에 배울 베이즈 정리가 데이터와 사전 지식을 결합하는 방법을 알려줄 겁니다.
[♪ 차분한 음악]
이지은: 오늘 정말 알찬 시간이었어요! 데이터 모델을 정리한 표를 세로로도 가로로도 읽을 수 있다니, 신기하지 않나요?
세로로 읽으면 "이 레시피로 케이크 만들면 어떤 맛일까?" 하고 예측하는 거고, 가로로 읽으면 "어? 이렇게 촉촉한데 버터를 얼마나 넣었을까?" 하고 추론하는 거예요. 우리가 일상에서 늘 하는 이런 거꾸로 추론을 수학적으로 정리한 게 바로 베이지안 추론이랍니다!
[띠링!]
그리고 좋은 소식! 이런 표를 누구나 만들 수 있어요. 전문가가 아니어도, 통계학을 몰라도 괜찮아요. 그저 내 경험을 떠올려보고 "음... 100번 중에 몇 번 정도?" 하면서 채워나가면 되거든요. 아, 주관적이라고 걱정되시나요? 괜찮아요! 오히려 그게 장점이에요. "나는 이렇게 봤는데, 너는 어떻게 생각해?" 이런 대화가 시작되거든요. 서로의 생각을 투명하게 나누면서 더 나은 판단을 할 수 있게 되는 거죠.
오늘의 미션! 직접 데이터 모델을 만들어보세요. 거창할 필요 없어요. "친구가 약속에 늦는데 무슨 이유 때문일까?", "아이가 밥을 안 먹는데 왜일까?" 이런 일상의 궁금증으로 시작하면 돼요. 관찰할 수 있는 데이터를 표의 행에, 우리가 생각하는 가설을 표의 열에 입력하고 칸을 채워보세요. 아, 그리고 꼭 기억하세요! 0%나 100%는 쓰지 마세요. 세상에 절대적인 건 없잖아요? [웃음]
다음 시간에는 오늘 배운 데이터 지지도와 지난 시간의 사전 확률을 어떻게 결합해서 우리의 믿음을 업데이트하는지 알아볼 거예요. 정말 유용한 시간이 될 거예요!
같은 표를 세로로 읽으면 예측, 가로로 읽으면 추론. 이 발상의 전환 하나가 여러분을 더 나은 탐정으로 만들어줄 거예요. 저는 이지은이었습니다.
[♪ 밝은 음악]
참고문헌
1. Gelman, A., & Hennig, C. (2017). Beyond subjective and objective in statistics. Journal of the Royal Statistical Society: Series A (Statistics in Society), 180(4), 967–1033. https://doi.org/10.1111/rssa.12276