어떻게 추천해야 할까요?


 얼마 전 제가 소개팅에 나갔을 때의 일입니다. 소개 받은 분께서 고려대학교 출신이라길래 저는 '졸업하신지 꽤 되었을 테니 모처럼 모교에 오면 좋아하시겠다' 싶어서 고려대학교 근처에서 보자고 제안하였습니다. 마침 근래에 직장동료들과 맛있게 먹었던 식당도 생각나서 그곳에서 보면 좋겠다고 생각했죠. 상대 분께서는 좋다며 흔쾌히 수락하였습니다. 그러나 제 동료들은 이런 저의 행동을 눈치 없다며 질타하였습니다. 왜 소개팅을 학교 근처에서 하냐는 것이죠! 그리고 동료들은 그 음식점보다 좋은 식당이 많다며 고개를 가로저었습니다.


 우리가 추천을 받거나 추천할 때 기준을 어디로 잡느냐는 상당히 중요한 문제입니다. 앞서 저의 소개팅을 다시 살펴보도록 하죠. 저는 어떤 기준으로 상대방에게 소개팅 장소를 추천하였나요? 상대방의 출신학부와 최근의 저의 경험을 기반으로 소개팅 장소를 추천하였습니다. 이것이 바로 문제입니다! 상대방이 마음에 드는 추천을 하려면 제가 기준이 되어서는 안 됩니다. 철저히 상대방에게 맞게 해야 하는 것이죠. 이용자로부터 긍정적인 반응을 이끌어내려면, 추천은 철저하게 이용자에게 맞춰줘야 합니다.


 자 그렇다면 이제 추천 시스템에 대해서 생각해봅시다. 인공지능 영역에서 추천 시스템은 상당히 각광받고 있는데요. 어떤 방식을 쓰느냐에 따라서 추천 결과가 달라질 수 있습니다.



정보가 부족해요


 제 아무리 추천 시스템을 열심히 구축한다고 해도 추천이 잘못되는 경우가 발생합니다. 이럴 때 흔히 cold start란 표현을 많이 씁니다. cold start란, 추천 시스템이 적절한 추천을 못해주는 상황을 말합니다. 추천하려면 적합한 정보가 있어야 하는데 이용자에 대한 정보건 물품에 대한 정보건 모두 부족하면 추천할 수 없거나 엉뚱하게 추천하게 됩니다. 


보이지 않아~


 가령 소개팅 상대가 회를 전혀 못 먹는다고 합시다. 그런데 이런 정보를 모르고 오마카세를 예약했다면 어떻게 될까요? 난처한 상황에 처하게 될 것입니다. 소개팅에서 상대가 일식을 좋아하는지 중식을 좋아하는지 한식을 좋아하는지에 대한 충분한 정보가 수집되어야 그에 알맞게 추천할 수 있는 것처럼, 추천 시스템에서도 적합하게 추천하려면 필요한 정보가 충분히 수집되어야 합니다.


 cold start 문제는 추천 시스템을 만들 때 상당히 많이 고민하는 지점입니다. cold start를 피하기 위해 많은 방식들이 개발되었는데요. 어떤 방식으로 추천하는지 같이 보도록 하죠.



적합한 추천을 위해 이용하는 방식 3가지


1. 내용 기반 필터링(content-Based Filtering)


 내용 기반 필터링(흔히 '컨텐츠-기반 필터링'이라 함)은 물품의 유사성과 이용자의 경험을 기반으로 재화나 용역을 추천합니다. 가령 소개팅 상대방 분이 우동, 쌀국수, 잔치국수 등의 면요리를 좋아한다고 합시다. 그럼 어떤 음식을 추천하면 좋을까요? 비슷한 면요리를 추천하면 괜찮을 것입니다. 내용 기반 필터링이란 비슷한 물품 즉, 이 예에서는 다른 면요리를 추천하는 방식입니다. 이를 테면 칼국수나 파스타 같은 음식이 추천될 수도 있겠죠.


 내용 기반 필터링은 아무도 이용해보지 않은 새 물품이 들어와도 cold start를 피할 수 있습니다. 물품과 물품 간에 연결고리를 찾기 때문이죠. 가령 이태리에서 새로 개발된 파스타 요리가 한국에 들어왔다고 합시다. 먹어본 사람이 적을 테지만, 같은 면요리라는 공통점이 있기 때문에 꽤나 적절한 추천일 수 있을 것입니다. 그러나 이용자의 취향을 모른다면 추천이 어렵습니다. 또한, 내용 기반 필터링에서는 적합한 추천을 위해 도메인 지식이 상당히 많이 필요하다는 단점이 있습니다. 추천 시스템 개발자는 어쩌면 면요리에 대한 지식이 상당해야 할지도 모릅니다.



2. 협업 필터링(Collaborative-Based Filtering)


 협업 필터링 시스템은 내용 기반 필터링의 단점을 극복하는 데 주안점을 두고 있습니다. 가령 소개팅을 나가는데 상대방이 무엇을 좋아하는지 전혀 모른다면 어떻게 해야 할까요? 이 경우 어떤 음식을 추천해야 할지 난감할 수 있습니다. 그래서 협업 필터링에서는 한 이용자에게만 집중하기보다는 모든 이용자에게 집중하여 이용자 집단의 선호도를 예측합니다. 가령 이런 거죠. '소개팅 상대방과 비슷한 연령대의 직장인이 좋아하는 음식이 무엇일까?'라고 고민해볼 수 있습니다. 만약 'N세의 직장인들은 A, B, C 요리를 좋아해'라는 정보가 있다면 같은 집단에 속하는 상대방에게 A, B, C 요리를 추천해볼 수 있는 것이죠.


 이러한 추천 방식 때문에 협업 필터링은 내용 기반 필터링보단 도메인 지식의 중요성이 덜합니다. 또한 추천이 비교적 정확하고 시간이 지나면서 사람들의 취향이 바뀌어도 어느 정도 대응이 가능하다는 장점이 있습니다. 그러나 협업 필터링은 다른 이용자들의 피드백이나 활동에 크게 의존하기 때문에 coldstart의 문제에 맞닥트릴 수 있습니다. 또한 아무도 가보지 못한 새로운 음식점이 문을 연다면? 협업 필터링 기법에서는 그 음식점을 추천하기 어려울 것입니다.



3. 혼합 필터링(Hybrid Filtering)


 혼합 필터링(흔히 '하이브리드 필터링'이라 함)은 내용 기반 필터링과 협업 필터링의 혼종입니다. 내용 기반 필터링과 협업 필터링의 단점은 극복하고 장점은 극대화하기 위해 개발된 방식이죠. 최근에 개발되는 추천 시스템은 주로 혼합 필터링의 접근법을 취합니다.   


 혼합 필터링은 다양한 방식으로 구성할 수 있습니다. 가령 내용 기반 필터링과 협업 필터링에서 각각 추천한 다음, 두 추천을 결합하는 방식을 취할 수 있습니다. 또는 내용 기반 필터링으로 먼저 예측한 다음 협업 필터링의 예측을 더하거나 그 반대로 협업 필터링으로 먼저 예측하고 그 다음에 내용 기반 필터링으로 더하거나 하는 방식을 취할 수도 있습니다. 이 외에도 혼합 필터링에 대한 연구는 방대하게 이루어지고 있는데요, 지금도 새로운 전략을 찾기 위해 많은 학자들과 엔지니어들이 고심하고 있습니다. 더 정확하게 추천하기 위해서죠!



여러분의 추천시스템은?




 그럼 이제 다시 처음으로 돌아가서, 저의 소개팅은 어떻게 되었을까요? 여러분은 어떤 것을 추천해야 하는 상황이 왔을 때 어떻게 하실 생각인가요? 여러분은 추천 방식의 장단점을 고려하고 어떤 방식이 가장 효과적일지 명확히 기억하셔서 적합하게 추천하시길 바랍니다.


 여러분 모두에게 따사로운 봄날, 새 학기의 행복이 가득하길!