brunch

You can make anything
by writing

C.S.Lewis

by JejuGrapher Jan 25. 2021

달고나 21. 그래서 RIG가 뭔데?

Algorithm. So, What is RIG?

주의
이 글을 다 읽고 나면 문과도 수식이 그리워질 수 있음.


다른 팀, 특히 데이터 과학과 무관한 개발자나 기획자들과 시스템/모델 개편에 관해서 회의할 때 예측 모델의 성능 평가는 RIG로 하겠다고 하면 '근데 RIG가 뭐예요?'라는 질문을 거의 매번 듣곤 한다. 그냥 예전부터 으레 사용하던 지표라서 그냥 RIG를 보면 된다는 생각을 가졌는데, 이걸 비전공자들에게 정확히 설명하기 어려웠다. 그냥 '모델 정확도를 측정하는 지표예요' 정도로 얼버무린다. 여기서 정보량이 어떻고 확률이 어떻다는 얘기를 꺼내면 회의는 산으로 간다. 상대방도 굳이 RIG에 대해서 더 궁금해하는 것 같지 않은 눈치다. 설명하기도 힘들고 짧은 설명을 듣고 바로 이해하기도 힘드니 대강 얼버무리는 게 서로에게 좋았다.


데이터 과학이나 머신 러닝을 오래 한 이들도 RIG라는 용어를 처음 들어보거나 알더라도 정확히 무슨 개념이고 어떻게 계산하는지 쉽게 설명하기 어려울 거다. 국어보다 수학이 조금 더 편해 공대로 진학해서 아주 깊게 파지는 못했더라도 학위 과정 내내 머신 러닝의 언저리에 머물렀고 취직해서도 다양한 데이터를 분석하고 알고리즘을 개발했지만, RIG를 처음 들은 것은 광고 추천 업무를 맡았을 때였다. 30대 후반에 처음 접한 용어/개념이다 보니 가끔 설명을 듣거나 자료를 찾아볼 때는 '이런 거구나' 하는데 또 매번 금세 까먹는다. 사실 개념을 제대로 설명한 자료도 찾기 어렵다. 이제껏 너무 수식으로만 이해하려다 보니 수식이 헷갈리면 다시 기억에서 멀어진 듯하다. 우연히 (실은 필연적으로) RIG가 필요해서 이번엔 제대로 개념을 익혀서 머릿속에 깊이 남겨보자는 심경으로 짧게 다시 공부했다. 여러 조합으로 검색을 해도 개념적으로 잘 설명한 글을 찾지 못했다. 개념을 설명하기 위한 것이어서 수식은 모두 뺐다. 그림이라도 넣었더라면 더 나았겠지만 이 글은 친절을 위해 적지 않았다. 어쩔 수 없이 사칙연산(-)과 조건부 개념은 넣어둔 점은 양해 바란다. 글로만 설명된 개념을 이해하기 어려운 분들은 인터넷에서 수식을 직접 찾아보면서 비교하며 읽기를 바라고, 예전에 수식을 보면서 이해하지 못했던 부분이 있으면 이 글을 참조해서 개념을 터득하길 바랄 뿐이다.


그냥 데이터 분석, 데이터 과학, 머신 러닝, 또는 인공 지능을 공부했던 분들도 RIG라는 용어를 많이 들어보지 못했으리라 본다. 딥러닝 이후로는 아래에 설명할 크로스 엔트로피나 로그 로스 등의 용어/개념을 종종 들어서 알았겠지만 RIG까지 나가지는 않았을 거다. 구글링을 해도 몇몇 문서가 존재하지만 명확하게 이거다 싶은 글을 찾기도 어렵다. 가끔 늘 보던 수식을 그냥 나열한 경우는 꽤 있지만, 그래서 이게 뭔데?를 개념적으로 기술한 글은 보지 못했다. 알고리즘을 개발/구현하면 그 알고리즘의 성능을 평가해야 한다. 보통의 분류 문제는 Precision, Recall, ROC/AUC, 또는 comparison matrix 등을 주로 사용하고, 회귀 문제는 MSE 또는 그 아류 지표를 흔히 사용하기 때문에 RIG는 좀 생소한 개념이다. 그런데 1과 0으로 분류하지 않고 사건이 발생할 확률 Pr(y = 1 | X)을 계산하는 분류에서는 앞서 소개한 평가 지표들이 다소 부적합하다.


RIG는 Relative Information Gain의 약자로 상대적 정보획득량 (IG, Information Gain) 정도로 해석할 수 있다. 그래서 먼저 IG를 알아야 한다. 그런데 IG는 어떤 두 Entropy의 차이를 뜻하므로 Entropy가 뭔지 알아야 한다. 정보의 Entropy는 클로드 섀넌 Claude Shannon이 Information Theory 분야를 개척한 연구에서 정보의 양을 측정하기 위해서 만든 개념이므로 정보 이론부터 공부해야 한다. 더 나아가면 정보 이론은 기존의 물리학, 특히 열역학의 개념과 확률/통계학의 기법을 차용해서 만들었다. 물리학 (열역학)과 확률/통계를 잘 알면 -- 바로 정보 이론을 도출할 수는 없겠으나 -- 정보 이론을 좀 더 쉽게 이해할 수 있고, 정보 이론을 마스터하면 엔트로피의 개념과 수식을 이해할 수 있고, 엔트로피를 계산하면 IG와 RIG를 바로 이해/계산할 수 있다. 


-- 끝 --


정보 이론을 나이가 든 후에 나이브하게 접했기 때문에 매번 관련 강의나 영상을 듣거나 자료를 찾아볼 때는 아주 살짝 이해하는데 금세 까먹는다. 데이터 과학이나 머신 러닝에 관심 있는 친구들이라면 가능하면 대학생 때, 적어도 20대에는 정보 이론을 먼저 공부할 것을 권한다. 컴공과의 학부 커리큘럼 중에 정보 이론이 따로 없는 경우가 대부분인 점이 다소 아쉽다. 정보 이론이 바로 머신 러닝으로 연결되는 것은 아니지만 이런 기본/기초 개념은 가급적 어릴 때 익혀두는 것이 나중에 큰 도움이 된다. 늙어서 시작하면 늦진 않더라도 매우 힘들다.


정보 이론은 다루지 않는다. 일단 본인의 능력 밖이다. 엔트로피부터 시작한다. 엔트로피는 열역학에서 등장하는 개념으로 '어질러진 정도 (또는 무질서도)'를 뜻한다. 엔트로피가 크다는 것은 복잡하다, 즉 예측 불가능하다는 의미고, 엔트로피가 작다/낮다는 건 단순하고 예측이 용이하다는 뜻이다. 열역학에서 두 종류의 분자가 완벽히 균질하고 썩여있으면 엔트로피가 최대가 되고 완전히 따로 분리되어 질서 정연하면 엔트로피가 최저가 된다. 엔트로피의 최댓값은 상황에 따라 다른데 이글에서는 설명의 편의를 위해 1로 가정한다. 


상자 안에 두 종류의 (빨강, 파랑) 구슬이 100개 들어있다고 하자. 이때 임의로 꺼낸 구슬의 색상을 눈을 감은 채로 맞출 수 있을까? 만약 빨강과 파랑이 50개씩 동등하게 들어있다면 맞출 확률이 50%, 즉 운에 따른다. 만약 빨강이 100개 들어있다는 걸 알고 있다면 100% 맞출 수 있다. 빨강이 70개, 파랑이 30개가 들어있다면 그냥 '빨강'이라고 답하면 70%의 확률로 맞출 수 있다. 모든 구슬이 균등하게 들어있어서 말 그대로 랜덤 (임의)인 경우가 무질서도가 가장 높은 엔트로피 1인 상태다. 역으로 한 종류의 구슬만 들어있는 케이스는 무질서가 전혀 없는 엔트로피 0인 상태다. 


이제 빨강과 파랑 구슬이 각각 50씩 들어있는 상자를 상상하자. 앞서 말했듯이 임의로 꺼낸 구슬이 빨강일 확률은 50%인, 엔트로피 1인 상태다 (케이스 1). 그런데 모든 구슬을 꺼내서 조사해보니 색깔뿐만 아니라 구슬의 크기도 두 종류였는데, 큰 구슬은 모두 빨강이고 작은 구슬은 모두 파랑이었다 (케이스 2). 다시 상자에 넣고 구슬을 뽑는다면 100%의 확률로 빨강 또는 파랑 구슬을 골라낼 수 있다. 구슬의 크기라는 새로운 변수가 추가됨으로써 엔트로피가 0으로 바뀌었다. 또는 (케이스 3) 큰 구슬은 빨강이 30개, 파랑이 20개고 작은 구슬은 빨강이 20개, 파랑이 30개라면 이제 빨강을 정확히 찾아낼 확률은 60% (큰 구슬을 뽑아야 빨강일 확률이 높으므로)가 되고, 무질서도/엔트로피는 0과 1 사이의 어떤 값이 된다. 큰 구슬과 작은 구슬 모두 빨강과 파랑이 25씩 동일하다면 크기가 색상 판별에 아무런 영향을 주지 않아서 다시 완전히 무질서한 엔트로피 = 1이다. 


세 번째 케이스의 엔트로피를 0.7이라 가정하자 (정확한 수치는 계산하면 바로 나오지만 귀찮음). 크기에 관한 정보를 모르는 케이스 1에서의 엔트로피는 1이었는데, 크기와 색깔의 관계를 알고 있는 케이스 3의 엔트로피는 0.7이다. 크기와 색깔의 관계 정보를 앎으로써 엔트로피가 0.3 감소했다. 케이스 1의 엔트로피를 H(색깔)로 표시한다면, 케이스 3의 엔트로피는 H(색깔 | 크기)라는 (크기에 따른) 조건부로 표현할 수 있다 (H는 엔트로피를 나타내는 기호임). 앞서 구한 크기 정보에 따른 엔트로피의 감소분 (0.3)이 그 정보를 앎을 통해서 얻을 수 있는 정보량(0.3)이 된다. 즉, "IG(색깔 | 크기) = H(색깔) - H(색깔 | 크기)"이다. 만약 케이스 1의 색상별 구슬의 수가 동수 (50:50)가 아니면 'H(색깔) = 1'의 등식은 성립하지 않는다. 즉, 베이스/기본/대조군의 H(색깔)이 1과 같거나 작기 때문에, 베이스의 구성비에 따라서 'H(색깔 | 크기)' 값이 같더라도 IG(색깔 | 크기) 값이 바뀐다. 즉, 베이스가 다르면 IG 값의 절대 수치로 어떤 피쳐 (예, 크기, 모양 등)이 예측에 더 큰 영향을 줬는지 비교하는 게 불가능하다. 그래서 IG(색깔 | 크기)를 기준값인 H(색깔)로 나눈 값이 RIG가 된다. 즉, 'RIG(색깔 | 크기) = {H(색깔) - H(색깔 | 크기)} / H(색깔)'이다. 즉, RIG는 베이스 정보량에 대한 상대적 IG값의 변동을 뜻하다. 


사람들에게 A 광고를 100회 보여주면 평균적으로 10회 클릭한다는 것을 관찰했다. 즉, 평균 CTR이 10%다. 그런데, 성별이나 나이에 따라서 A 광고를 클릭하는 정도가 다르다. 예를 들어, 남성의 평균 CTR은 8%이고, 여성의 평균 CTR은 12%다. 성별/연령이 다른 수많은/다양한 사람들에게 광고 A를 노출하고 클릭했는지 여부를 수집한 데이터가 있다. 이 데이터를 바탕으로 어떤 사람 (성별, 나이)이 광고 A를 클릭할지 여부를 예측하는 다음의 분류기를 개발했다. Pr(Y = 1) = classifier(성별, 나이). 이때 이 분류기의 성능을 어떻게 평가할 것인가? 이때 RIG를 사용한다.


앞서 상자에서 구슬을 꺼내는 것과 원리는 완전히 동일하다. 전체 평균 CTR인 10%로 예측하는 Dummy 또는 기본 모델로 (크로스) 엔트로피를 계산한 것이 H(색깔)인 셈이다. 그리고 새로 학습한 분류기(성별, 나이)로 계산한 (크로스) 엔트로피가 H(색깔 | 크기)가 된다. 앞의 공식을 바로 적용해서 더미 모델의 엔트로피에서 새 분류기의 엔트로피를 뺀 값이 새 분류기의 IG가 되고, 이를 더미 엔트로피로 나눈 값이 RIG가 된다. 그래서 새 분류기의 RIG가 더 클수록 더 정확한 모델인 셈이다. 만약 분류기 1과 분류기 2의 성능을 비교한다면, 더미 모델과 비교한 RIG1과 RIG2 값을 비교해도 되고, 분류기 1을 기본 모델로 해서 분류기 2와의 RIG(2|1)을 구해서 음/양을 확인해도 된다. 불필요한 노이즈 피쳐를 제거하든 새로운 중요한 피쳐를 추가하든 아니면 새로운 모델이나 학습 방법을 도입하든 이런 변경에 따른 정보량의 변화 정량화하는 방식이다. 정보량이 증가 (또는 무질서가 감소)하면 좋은 거다.


앞에서 편의상/짧게 '엔트로피'라고 적었는데, 분류기의 RIG를 구하는 데 사용하는 정확한 값은 Cross-Entropy다. 크로스 엔트로피를 자세히 설명하면 글이 길어지니 위의 개념을 이해했다면 다른 참고 자료를 확인해보기 바란다. 여담으로 크로스 엔트로피와 엔트로피의 차이가 두 분포 사이의 거리를 측정하는 KLD (Kullback-Leibler Divergence)다. 그리고 두 분류기 또는 두 변수 등이 공통으로 갖는 정보량을 측정한 것이 상호 정보량 (Mutual Information, MI)다. 자료를 찾아보면 이진 분류기 (Binary Classifier)의 RIG를 계산할 때 크로스 엔트로피가 아닌 log-loss 값을 사용해서 계산한 것을 볼 수 있는데, 이진 분류기에서 log-loss가 (binary) cross-entropy와 같기 때문이다. 이진 분류에는 보통 로그-로스라 하고, 3개 이상의 클래스가 이는 경우는 크로스 엔트로피라고 적은 글을 봤는데, 완벽히 맞는 설명은 아닌 듯하다. (혹시 명확히 구분 가능하신 분 있으면 댓글 좀...)


아직도 완벽히 이해하지 못했다면 그냥 RIG가 높은 예측 모델이 정확도가 더 좋다로만 알고 있으면 된다. 


** 이젠 오히려 수식이 더 그리워진 분들에겐 구글링 찬스를 드립니다. DIY.


매거진의 이전글 달고나 20. 전환 예측은 왜 어려운가?
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari