Programming & Machine Learning/Mathematics & Statistics

[추천시스템과 통계 모델 1] - 다양성 지수(Diversity Index)

Yamarae 2024. 2. 27. 14:55

 

 

 

추천시스템을 고도화 할 때 필요한 것 중 하나는, 유저 단위, 혹은 아이템 단위의 적절한 Index를 만들어내는 것이다. 이를테면 어떤 유저는 다양한 아이템을 소비하는 것을 좋아하고, 어떤 유저는 새로운 아이템을 소비하는 것을 좋아하고, 어떤 유저는 자신이 선호하는 카테고리의 아이템만 선호할 수도 있다. 이런 것들을 하나의 Index로 점수화 하여 사용하는 것은 큰 의미가 있다. 물론 Neural Network 구조의 Deep Learning이 보편화 된 이후부터는 Index를 만들어내는 것 자체가 이론적으로는 무의미 해지긴 했지만, 실제 서비스에서는 그렇지 않다. 모델이 Feature Engineering을 아무리 잘 해낸다고 해도, 결국 Binary Task 혹은 지정된 Task에만 활용될 수 있을 뿐이고, 그것을 해석할 여지 또한 없다. 그래서 모델 활용의 범용성과 비즈니스 특징 해석을 위해서라도 잘 만들어진 Index를 사용하는 것은 추천시스템을 만들 때 중요한 일이다.

 

 

Index를 만들 때는, 유저가 어떤 아이템을 긍정적으로 평가했다는 기준점이 필요하다. 오늘 이야기 할 다양성 지수(Diversity Index, 이하 DI)를 이야기해보자. 유저 입장에서 DI란 이 사람이 얼마나 아이템을 다양하게 소비하는 지에 대한 Numerical한 특징을 만들어내는 것이다. 이를 위해서는 수치화 할 수 있는 기준이 필요하고, 긍정 평가한 아이템이 기준이 된다. 예를 들어, 커머스의 경우 구매가 강한 긍정 평가가 되는 것이고 찜과 조회는 간접적인 긍정 평가의 기준이 된다. 도메인마다 이 기준을 잘 만들어내는 것 또한 중요하다.

 

 

DI는 해결해야 하는 문제점이 있다. 만약 100개의 아이템을 긍정 평가했는데, 그 중 2-3개만 유독 긍정적으로 평가했다면, 이건 다양성이 높다고 볼 수 없다. 그래서 긍정 평가의 강도가 낮은 아이템의 영향력을 Index에 반영하는 것을 제한하는 모델이 필요하고, Shannon’s diversity의 개념을 사용하면 이를 해결할 수 있다.

 

 

참고용 이미지 (출처 - https://www.mdpi.com/1424-2818/13/10/489)

 

 

 

Shannon’s diversity는 원래 생물학적 종의 다양성을 측정하기 위해 설계한 지표이다. 

 

만약 A와 B지역에 다음과 같은 동물이 산다고 가정해보자. 

 

A = {개 100마리, 고양이 1마리, 돼지 1마리, 말 1마리, 소 2마리, 거위 2마리, 염소 10마리}

B = {개 20마리, 고양이 20마리, 거위 20마리, 염소 20마리}

 

얼핏 보기에는 A지역에 더 다양한 동물이 산다고 할 수 있지만, 개와 염소를 제외하면 유의미한 숫자로 볼 수 없기 때문에, 분포의 관점에서 본다면 B가 더 다양한 동물이 산다고 생각할 수 있다. 이를 수식화하여 diversity 지표로 나타낸 것은 아래와 같다. A지역과 B지역을 계산해보면 각각 0.6, 1.37 정도가 나오게 된다. 수식에서 S는 종(species)을 의미하고, p는 (해당 종의 동물 수 / 지역 내 전체 동물 수)를 의미한다.

 

 

 

 

 

 

 

 

그리고 이 Shannon index를 generalization한 버전인 Renyi index가 있는데, 일반적으로 이 인덱스를 조금 더 널리 사용하는 것 같다. 여기에서 파생되는 인덱스는 전부 수식의 차이가 조금씩 있을 뿐, 엔트로피 기반의 분포도 계산이라는 점은 모두 같다.

 

참고 : https://en.wikipedia.org/wiki/Diversity_index

 

Diversity index - Wikipedia

From Wikipedia, the free encyclopedia How many different types are in a dataset A diversity index is a quantitative measure that reflects how many different types (e.g. species) there are in a dataset (e.g. a community). More sophisticated indices accounti

en.wikipedia.org