연애는 글이 아니라 알고리즘으로 하는 거야! (라는 경솔한 생각)
인생의 가장 큰 중대사 중 하나인 연애에 대해서 곰곰이 생각을 하다가 주변 지인들의 추천으로 데이팅 앱을 써본 적이 있다. 이때 갑자기 든 생각이 “데이팅 앱이 어떻게 작동하는지 리버스 엔지니어링을 할 수 있으면 내가 더 매력적인 사람들과 더 많이 연결되고 매칭될 수 있지 않을까?”라는 연애를 아스키코드로 배운 것 같은 생각이었다. 그리고 그것을 정말로 실행하기 위해 데이팅 앱의 매칭 시스템 관련 논문을 찾아보게 되었다.
사실 여러 논문들이 있었는데, 요즘 핫한 딥러닝은 내부 알고리즘이 블랙박스라 “모델 구조가 이렇구나..”라는 것 이외의 인사이트는 얻을 수 없기에 간단하면서도 논리적인, 그리고 사용성이 검증된 알고리즘을 사용한 논문들을 찾아보았다. 그러다가 어떤 중국 데이팅 앱의 데이터를 활용한 추천 시스템 알고리즘 논문을 찾게 되었는데, 읽어보니 나름 인사이트도 있었고, 또 대략적으로 어떤 형식으로 데이팅 앱들이 작동하는지 알 수 있는 글이라 해당 논문을 사용해보기로 결심했었다.
논문에서 얻은 데이팅 앱 매칭 꿀팁! (이라고 잠시 생각했던 것들)
결론부터 말하자면, 남자는 아름다운 여성을 추천받을 때 매칭률이 좋고, 여성은 자신의 아름다움을 알아주는 남성을 추천받을 때 매칭률이 좋다고 한다
그렇다, 남자는 다 늑대라는 것이 논문에서 말하고자 하는 핵심…이라기보다는 이렇게 적나라하게 인간의 본성이 알고리즘 테스트에서 나타난다는 것이 참 슬프면서도 흥미로운 부분이다. 위의 인사이트를 좀 더 세부적으로 설명해보자면 아래와 같다
논문에서 설명하는 데이팅 앱의 구조는 어떻게 보면 정말로 심플하다. 아래와 같이 두 그룹이 있다고 생각해보자
- 그룹 X= 남자
- 그룹 Y= 여자
- 빨간색 선 = 남자가 여자에게 좋아요 누름
- 파란색 선 = 여자가 남자에게 좋아요 누름
위와 같이 여성 그룹과 남성 그룹이 있다고 할 때, 데이팅 앱의 역할은 각 남자 혹은 여자에게 매칭이 잘 될 것 같은 파트너를 추천해 주는 것이다. 여기서 재미있는 것은, 예쁘고 잘생긴 사람을 추천해 주면 당연히 “좋아요”를 누르겠지만 그 예쁘고 잘생긴 사람은 그 “좋아요”를 수락할 것인가라는 문제이다. 즉 추천된 사람과 추천받은 사람 모두 만족할 만한 매칭을 데이팅 앱을 해주어야 한다는 것이다. 그렇다면 여기서 문제는 데이팅 앱은 내가 어떤 사람인지 어떻게 알고 내가 좋아할 만한, 동시에 나를 좋아할 만한 사람을 추천해 준다는 것인가? 추천 방법으로는 아래와 같은 두 가지 큰 방법이 있다.
- 나와 비슷한 사람들이 “좋아요”를 누르고 또 매칭이 된 여성과 비슷한 여성들을 추천해 준다
- 내가 “좋아요”를 누른 여성과 비슷한 특징(나이, 성별?, 학교…)을 가진 여성들을 추천해 준다
그리고 요번에 설명하는 논문은 첫 번째 방법을 사용하여 유저들을 매칭 시키는데, 두 번째 방법보다 더 효율이 좋다고 한다. 논문에서는 다양한 스코어들의 조합을 사용하여 어떤 조합의 스코어를 통한 추천이 남성 그룹 혹은 여성 그룹에게 가장 효과적이었는지를 테스트한다. 예를 들어, x는 추천받는 사람, y는 추천당하는 사람이라고 해보자. 그러면 y가 x를 좋아할지, 그리고 x가 y를 좋아할지를 구한 다음에 서로 좋아할 확률이 높은 경우 x에게 y를 추천해 주어야 한다. 재미있는 것은 실제로 x가 y를(반대의 경우도 마찬가지로) 좋아할지는 모르기 때문에 이전에 y와 상호작용이 있었던 x와 비슷한 사람들의 기록을 사용하여 예상해야 한다는 것이다. 이것을 측정하기 위해서는 아래의 5를 구해야 한다.
- x1(남자)과 x2(그 남자 비슷한 사람)가 얼마나 비슷한 사람이지에 대한 스코어 (xx score)
- x2의 그룹은 어떤 그룹 이어야 하는가? y1에게 “좋아요”를 보낸 사람? 아니면 y1로부터 “좋아요”를 받은 사람? (xx group)
- y1(여자)과 y2(그 여자와 비슷한 사람)가 얼마나 비슷한 사람이지에 대한 스코어 (yy score)
- y2의 그룹은 어떤 그룹 이어야 하는가? x1에게 “좋아요”를 보낸 사람? 아니면 x1로부터 “좋아요”를 받은 사람? (yy group)
- 위의 4가지 스코어를 조합하여 만든 추천의 기준이 되는 스코어
xy score와 yx score를 구할 때, 그리고 xx score와 yy score 같은 로직을 사용할 수도 있지만, 재미있는 것은 성별에 따라 다른 스코어 로직을 적용시킬 시 매칭률이 가장 높다는 결과가 나온다는 것이다(맨 위에서 설명했듯이).
그래서 꿀팁은?
논문 읽고 정리해서 글을 쓰다 보니 벌써 2시간이 넘어가 버려서 다음 화에서 계속하도록 하겠다.
여름비님이 브런치에 게재한 글을 편집한 뒤 모비인사이드에서 한 번 더 소개합니다.