'CAF'에 해당되는 글 1건

  1. 2014.11.20 추천 시스템 (PR시리즈 A/S)
Share           Pin It

일전에 PR시리즈라는 타이틀로 20 차례에 걸쳐서 추천 시스템 및 알고리즘에 대한 다양한 글을 적었었습니다. 이후로도 계속 추천 관련 업무를 진행하고 있기 때문에 그 이후에 추천에 관한 생각을 정리할 필요가 있을 것같아서 글을 적습니다. 예전 글과 반복되는 내용도 있지만, 이 글을 처음 읽는 분들을 위해서 중복된 내용도 간략히 다시 적겠습니다. 

 초기의 추천 시스템은 아이템 Item 자체 또는 그것의 메타데이터를 이용해서 관련성을 맺어서 추천해줬습니다. 그래서 이름도 CBF, 즉 Content-based Filtering입니다. 보통 추천 알고리즘에서는 Recommendation보다는 Filtering이라는 용어를 많이 사용하는데, 필요한 것만 걸러서 보여준다 정도로 이해하면 될 것같습니다. Filtering이라는 용어는 다음에 설명할 CF 이후로 사용된 듯합니다. CBF가 더 원초적인 방법이지만 CF가 추천 알고리즘으로 활성화된 이후에 CBF라는 이름으로 불린 듯합니다. CBF는 아이템의 속성 또는 메타데이터의 동일성/유사성을 바탕으로 관련 아이템을 추천해줍니다. 영화를 예로 들면, 요즘 인기있는 ‘인터스텔라’를 감명깊게 본 분들에게 인터스텔라의 감독인 ‘크리스토퍼 놀란’이 감독했던 다른 영화인 ‘인셉션’이나 ‘다크 나이트’를 추천해주는 형태입니다. 

두번째는 보통 추천 시스템/알고리즘이라고 말하면 가장 먼저 떠올리는 CF, 즉 Collaborative Filtering입니다. 한국어로 협업필터링이라고 불립니다. 협업필터링이란 많은 사람들이 동시에/협렵적으로 필터링을 해준다는 의미입니다. CBF가 아이템 또는 컨텐츠 그 자체 또는 속성을 이용했다면, CF는 아이템을 소유한 (물건이면 구매했거나 영화면 관람했거나 책이면 읽었거나 등의 행위를 총칭함) 사람들을 매개로 해서 추천해주는 형태입니다. 보통 Likely-minded라고 표현하는데, 비슷한 취향을 가진 다른 사람들의 소유한/좋아한 아이템을 추천해주는 형태입니다. 그래서 협업적이라고 부릅니다. 앞서 ‘그래비티’를 재미있게 봤던 관객들이 인터스텔라도 재미있게 봤다면, 이전에 그래비티를 본 사람들에게 인터스텔라를 추천해주는 형태입니다.

세번째는, 아직 정식으로 이름이 붙여진 것은 아니지만 암암리에 사용되고 있어서 제 나름대로 명명한 것입니다. 대부분이 수긍할 듯한데, CAF, 즉 Context-Awared Filtering입니다. 트위터의 실시간성, 포스퀘어의의 지역성, 그리고 페이스북의 소셜/인맥 등이 바로 컨텍스트입니다. 즉, 이런 컨텍스트를 인지하고 그걸 이용해서 추천해주는 것을 CAF라고 명명하려 합니다. CBF가 아이템의 속성을 이용하고, CF가 아이템을 소유한 사람을 이용한다면 CAF는 (아이템의) 현재를 이용해서 추천해주는 것입니다. 현재 즉 At Present는 단순히 시간만을 의미하지는 않습니다. 지금 이 시각에 맞는 아이템을 추천해주기도 하고, 지금 이 장소에 맞는 아이템을 추천해주기도 하고, 지금 이 상황에 맞는 아이템을 추천해줍니다. 점심시간이 다가오면 점심 메뉴와 식당을 추천해주고, 차의 기름이 다 떨어져가면 주변의 주유소를 추천해주고, 비가 오면 우수에 젖도록 분위기있는 음악을 추천해주고… 그런 식으로 현재 어디에서 누구와 어떤 상황에 있는가에 따라서 추천해주는 것입니다.

물론 위의 CBF, CF, CAF가 단독으로 추천에 활용될 수도 있지만, 당연히 적절히 조화를 이뤄서 종합적으로 추천해주는 것이 일반적입니다. 보통 Hybrid 방식이라 부릅니다. Hybrid Filtering이라는 일반적으로 부르지는 않지만, 그렇게 불러도 무관할 듯합니다. 여러 알고리즘의 결과값을 잘 조화를 이뤄서 하이브리드 방식으로 추천해줄 수도 있고, 단순히 다양한 알고리즘의 추천 결과를 혼합해서 보여주는 Fusion 방식도 있습니다. 둘 간의 큰 차이가 있는 것같지는 않습니다.

추천에서 CBF는 가장 안전한, 즉 틀리지 않은 답을 제공해줍니다. 그래서 뻔한 추천이 이뤄지는 경우가 많습니다. 그런데 CF는 맞는 답을 제공해줍니다. 사실 많은 경우 또는 적절한 부가 필터링 규칙을 적용하지 않으면 CBF보다 오히려 더 엉뚱한 결과를 제공해주기도 하지만, 많은 사람들이 공통적으로 소유한 아이템이라는 가정 하에 맞는 답을 제공해주는 방식입니다. 그런 식으로 보면 CAF는 더 적합한 답을 제공해주는 것입니다. 틀리지 않은 답, 맞는 답, 그리고 더 맞는 답이라는 어색한 표현을 사용했지만 곰곰이 생각해보시면 납득이 가리라 봅니다. 그렇지만, 이것만은 확실히 말할 수 있습니다. 추천은 '정답’을 제공해주는 것은 아닙니다. 추천된 것이 (상황이나 개인에 따라서) 정답일 수도 있지만, '이게 정답이니 이걸 사용해’라는 강압적인 그것이 아닙니다. 추천은 조금 더 빠르고 쉽게 원할 수도 있는 어떤 것을 발견하는 것을 도와주는 것입니다. 그래서 Recommender라는 말보다는 Discovery & Assistant라는 표현이 더 나을 듯합니다.

그리고 추천을 제대로 하기 위해서는 좋은 알고리즘을 사용하는 것에 앞서서 아이템 또는 서비스 도메인의 속성을 파악하는 것이 더 중요합니다. 이미 대부분의 추천 알고리즘은 논문이나 오픈 소스 등의 형태로 알려져있습니다. 알고리즘 자체에서 — 추천의 정확도 면에서 — 큰 차별화를 이룰 수 없다는 말입니다. 조금 더 빠른 알고리즘이나 조금 더 커버리지가 넓은 알고리즘, 조금 더 우연성 Serendipity를 허용하는 알고리즘 등이 존재할 수는 있지만, 큰 틀에서 특히 하이브리드 형태로 다양한 알고리즘/방법론을 접목해서 사용한다면 큰 차이는 없습니다. 그러나 어떤 서비스 도메인에 추천 알고리즘을 적용하느냐에 따라서 결과는 차이가 날 수 밖에 없습니다. 만능의 알고리즘을 찾는 것에 앞서 적용할 서비스의 특성을 먼저 파악하고, 프로그램화할 수 있는 피쳐들을 찾아서 추천에 활용하는 것이 맞습니다.

CF가 대표적인 알고리즘이라고 해서 모든 서비스에서 가장 적합한 방법이 아닐 수 있습니다. 일반적으로 시의성이 적고 긴 생명주기를 가진 아이템/컨텐츠의 경우 CF가 충분히 좋은 알고리즘이지만, 뉴스처럼 시간이 중요하거나 의류와 같이 패션 트렌드에 민감하거나 에어컨, 온풍기와 같이 시즈널성이 큰 아이템을 추천해주는 경우라면 CF보다는 CBF 또는 CAF, 또는 단순한 (미리 정의된) 규칙에 의한 추천이 더 적합할 수가 있습니다. 단순히 추천 알고리즘/시스템을 적용하기에 앞서 그 서비스 도메인을 먼저 파악해서 어떤 방법으로 해결할 것인가?를 먼저 고민하고, 알고리즘들을 그 상황에 맞게 튜닝해서 사용해야 합니다.

최근 2~30년 동안 추천을 위한 많인 아이디어들이 실생활에 적용되어 효과를 보여주고 있습니다. 벌써 만개한 분야로 보여지만, 여전히 더 좋고 다양한 아이디어들이 쏟아지고 있습니다. 현재 어떤 알고리즘이나 조건이 가장 좋은 추천을 제공해준다고 하더라도, 그것에 만족하면 안 됩니다. 새로운 알고리즘도 계속 나오고 또 서비스의 주변 상황들이 계속 변하기 때문에 주기적으로 새로운 알고리즘을 계속 테스트해보고 관련 추천 요소들을 계속 변경해가면서 그렇게 적응적 Adaptive 추천 시스템을 만들어가는 것도 매우 중요합니다. 한번의 성공은 영원할 수 없습니다.

P.S., 일반적인 분석/마이닝업무에서도 알고리즘에 대한 이해도보다는 서비스/비즈니스/도메인에 대한 이해도가 더 필요합니다. 특정 알고리즘에 대한 대가가 아니라면...

페이스북 페이지: https://www.facebook.com/unexperienced

댓글을 달아 주세요