상호정보량(Mutual Information)이라는 개념이 있습니다. 두 확률변수가 서로 어떤 관계를 가지고 있는지 나타내는 정보량 중의 하나인데, 두 확률변수가 완전히 독립인 경우(사건 A가 일어나는 것이 사건 B가 일어날 확률에 전혀 영향을 주지 않고, 그 역도 마찬가지인것) 그 값은 0이 되고, 둘이 서로 밀접한 관련(사건 A가 일어날수록 B가 일어날 확률이 높아진다던지)이 있을경우 커지고, 역의 방향으로 관련이 있을 경우(사건 A가 일어날수록 B가 일어날 확률이 낮아진다던지) 값이 작아지죠. 즉 둘이 얼마나 밀접한 관련이 있는지를 계량화하여 판단할 수 있는 수치입니다. 정의만 들어도 사용할 만한 곳이 막 떠오르지 않나요?
수학적으로는 다음과 같이 정의됩니다.
확률변수 A, B의 상호정보량을 I(A; B)라고 하고, 사건 a,b가 동시에 일어날 확률을 P(a, b) 사건 a,b의 점별 상호정보량(Pointwise Mutual Information)을 PMI(a, b)라고 하면
만약 확률변수가 연속이라면 시그마 대신 적분을 사용하여
갑자기 수식이 나와서 어려워보이지만, 사실 변수 A,B에 속하는 모든 경우에 대해 일어날 확률과 그 점별 상호정보량을 곱해서 다 더해주면 됩니다. 점별 상호정보량은 다음과 같이 계산됩니다.
두 사건이 동시에 일어날 확률을 각각 일어날 확률로 나눠준 것이죠. 만약 p(x, y) = p(x) p(y)라면 (즉 동시에 일어날 확률과 각각 일어날 확률곱이 같으므로 "독립"인경우) 그 값은 log 1이 되어서 0이 됩니다. 동시에 일어날 확률 p(x, y)가 상대적으로 더 크면 값이 양수가 되겠죠. 그 반대는 음수가 되고.
간단한 예를 들어볼게요. 이진 변수를 생각해봅시다. 변수 A, B는 각각 0 또는 1의 값을 가질 수 있다고 하고 그 값을 가질 확률이 다음과 같다고 합시다.
A=0 | A=1 | 총합 | |
---|---|---|---|
B=0 | 0.5 | 0.2 | 0.7 |
B=1 | 0.1 | 0.2 | 0.3 |
총합 | 0.6 | 0.4 | 1.0 |
이때 확률변수 A, B의 상호정보량을 구하기 위해서는 A=0,1일때, B=0,1일때에 대해 점별 상호정보량을 먼저 구해야겠지요.
pmi(0;0) = log(P(A=0, B=0) / (P(A=0) * P(B=0))) = log (0.5 / ( 0.7*0.6 )) = 0.174
pmi(0;1) = log(P(A=0, B=1) / (P(A=0) * P(B=1))) = log (0.1 / ( 0.3*0.6 )) = -0.588
pmi(1;0) = log(P(A=0, B=0) / (P(A=0) * P(B=0))) = log (0.2 / ( 0.7*0.4 )) = -0.336
pmi(1;1) = log(P(A=0, B=1) / (P(A=0) * P(B=1))) = log (0.2 / ( 0.3*0.4 )) = 0.511
A | B | p(a, b) | pmi(a; b) | p(a, b) * pmi(a; b) |
---|---|---|---|---|
0 | 0 | 0.5 | 0.174 | 0.087 |
0 | 1 | 0.1 | -0.588 | -0.0588 |
1 | 0 | 0.2 | -0.336 | -0.0672 |
1 | 1 | 0.2 | 0.511 | 0.1022 |
합계 | 0.0632 |
따라서 A와 B의 상호정보량 I(A;B)는 0.0632가 됩니다. 0에 가까운것으로 보아 A와 B는 서로 거의 관련이 없다고 볼수 있겠죠. 물론 지금의 경우 이산변수를 예시로 들어 계산이 간단하게 끝났지만, 사건이 가지는 경우가 많아지거나, 연속 확률변수가 되면 계산이 조금 복잡해질 수 있겠죠.
중요한 것은 이 개념을 어디에 응용할 수 있는가 입니다. 정보검색 분야에서는 이 개념을 어떤 단어가 다른 단어와 같이 자주 등장하는지를 계산하여(공기어 추출) 의미적 군집화를 행하는데 사용할 수 있구요, 기계 학습에서는 학습 자질을 선정하는데 유용한 정보를 제공하기에 유의미한 자질을 골라내는데 도움을 주기도 하는 등 여러 분야에서 유용하게 쓰인다고 합니다.
TextRank 기법을 이용한 핵심 어구 추출 및 텍스트 요약 (14) | 2017.02.20 |
---|---|
통계 + 의미론적 방법을 이용한 짧은 텍스트 간 유사도 산출 (3) | 2017.02.09 |
코퍼스를 이용하여 단어 세부 의미 분별하기 (0) | 2017.02.07 |
Word2Vec을 이용한 한국어 관련어 추출과 평가 (3) | 2017.01.15 |
한국어 불용어 리스트 100개 (10) | 2017.01.10 |
단순 공기어 통계 vs Word2Vec를 이용한 관련어 추출 (0) | 2016.12.09 |
댓글 영역