14편의 글로 추천시스템을 마무리하려고 했었는데, 하나가 더 생각나서 글을 적습니다. 깊게 들어가면 어려워지는 문제지만, 이 그레서는 아주 피상적으로만 적겠습니다.
데이터마이닝하면 머신러닝이 같이 떠오른데 그러면 머신러닝은 추천 시스템에서 어떤 역할을 하느냐?라는 질문을 할 수 있습니다. 그래서 준비했습니다. 그러나 모든 디테일은 생략합니다. 구체적으로 어떤 머신러닝 알고리즘들이 추천시스템에 활용되고 있는지는 Netflix에서 나온 Mining Large Streams of User Data for Personalized Recommendations을 참조하세요.
Collaborative Filtering 알고리즘을 설명하면서 모델기반 CF를 잠깐 언급한 적이 있습니다. 여기서 모델이란 머신러닝을 통해서 학습된 모델을 의미합니다. 그러니 당연히 모델기반 CF에는 머신러닝이 사용됩니다. 그러면 메모리기반 CF나 다른 CBF 등에는 머신러닝이 사용되지 않았느냐?고 묻는다면, 위에 소개한 넷플릭스 케이스를 읽어보면 무시히 많은 알고리즘들이 사용되었다는 것을 알 수 있습니다. 구체적인 알고리즘을 명시하지는 못하겠지만, 추천 시스템 곳곳에 머신러닝 알고리즘들이 사용되고 있음을 설명해드리겠습니다.
추천 시스템에 사용된 유사도나 평가방법에 사용된 metric들이 모두 머신러닝의 기법/결실이라는 것은 굳이 따로 설명하지 않아도 될 듯합니다.
유저기반 CF 방식에서 가장 유사한 사용자 k명을 뽑아서 그들이 좋아하는 아이템들을 추천해줍니다. 여기서 k명을 선정하는 방식이 데이터마이닝 또는 머신러닝을 배울 때 가장 먼저 등장하는 k-NN (k-Nearest Neighborhood) 방식입니다. kNN이 특정 데이터 포인트에서 가장 가까운 k개의 데이터 포인트를 선별해서 그것들의 공통/다수 클래스를 타겟 데이터포인트레 라벨링하는 방식입니다. 당연히 가장 유사한 아이템을 뽑는 것도 kNN입니다.
LDA를 사용하면 유저와 아이템을 동시에 클러스터링 clustering 할 수 있다고 했습니다. 굳이 LDA를 사용하지 않더라도 유저의 아이템 점수들을 벡터로 클러스터링 방식으로 유저 세그먼테이션이 가능합니다. 비슷하게 아이템 세그먼테이션도 가능합니다. 이렇게 1차로 세그먼트를 나눈 후에, 개별 세그먼트별로 추천 알고리즘을 적용할 수 있습니다. 데이터를 어떻게 표현하느냐의 문제일 뿐, 모든 클러스터링 알고리즘들이 추천 시스템에 그대로 이용될 수 있습니다.
단순히 보면 추천 시스템은 유저의 아이템에 대한 선호도를 측정하는 것이고, 그래서 레이팅을 예측하거나 선호확률을 구합니다. 조금 다르게 생각해보면 특정 아이템을 좋아한다 또는 아니다, 즉 1과 0으로 분류하는 클래시피케이션 classification 문제입니다. 조금 더 세밀하게 쪼개면 좋아한다 그저그렇다 아니다 등으로 분류/예측합니다. 문제를 어떻게 모델링하느냐에 따라서 다양한 클래시피케이션 알고리즘들을 활용할 수 있습니다. 모델기반CF가 다양하게 등장하는 이유도 그렇습니다. 지금 추천 문제는 클래시피케이션 문제라고 말하고 있는 겁니다.
클러스터링과 클래피케이션 다음으로는 당연히 회귀분석 regression도 생각해볼 수 있습니다. 여러 곳에 회귀분석이 필요하겠지만, 가장 간단히 사용되는 곳은 바로 다양한 추천 알고리즘들의 결과를 하나로 합쳐서 하이브리드로 만들 때 필요합니다. CF와 CBF를 각각 하나씩 사용했다면 최종 예측값은 R = w0 + w1*CF + w2*CBF (w1+w2=1)와 같은 선형식을 만들 수 있고, 적절한 웨이트값 w1/w2를 찾는 방식은 회귀분석의 least square 등을 사용해서 구할 수 있습니다.
랭킹에서 사용되는 다양한 알고리즘들도 그대로 추천에 활용됩니다. 이전 글에서 검색엔진의 인풋은 키워드지만, 추천 시스템의 인풋은 유저 또는 아이템이라는 점만 다를 뿐 추천시스템도 검색엔진과 다를 바가 없다고 말했습니다. 검색랭킹의 알고리즘과 추천 랭킹 알고리즘이 다를 바가 없다는 말입니다. 검색엔진에서 페이지랭크의 개념은 유저와 아이템으로 묶인 네트워크에서 유사하게 적용될 수 있습니다. 페이지랭크의 연결성과 추천에서의 연결성이 본질적으로 같습니다.
문제와 해법이라는 이분법적 프레임에서 보면, 추천 시스템에서는 다양한 추천 알고리즘이 해법이 되고 책, 상품, 뉴스 등의 피추천 아이템/서비스 분야는 문제가 됩니다. 그러나 더 아래 단계를 생각해보면 다양한 머신러닝 알고리즘들이 해법이 되고 추천 시스템 (알고리즘)은 그것들의 문제입니다. 즉, 수학/머신러닝 알고리즘이 추천 시스템에 해법을 제공해주고, 그 추천 시스템이 다른 서비스의 해법을 제공해주는 재귀적 과정입니다. 서비스를 다루는 사람이 단순히 그것의 해결책에만 몰두할 것이 아니라, 그 해결책을 해결해주는 해결책에도 관심을 가져야 한다는 이상한 논리를 펼치고 있습니다. 어쨌든 기본은 중요하니까요.
모든 문제는 여전히 더 나은 해결책을 원합니다.
추천시스템 전체 목록
- 추천 시스템과의 조우 (PR시리즈.1)
- 추천 시스템을 위한 데이터 준비 (PR시리즈.2)
- 추천대상에 따른 추천 시스템의 분류 (PR시리즈.3)
- 알고리즘에 따른 추천 시스템의 분류 (PR시리즈.4)
- 추천 시스템을 위한 유사도 측정 방법 (PR시리즈.5)
- 추천 시스템의 성능 평가방법 및 고려사항 (PR시리즈.6)
- 추천 시스템에서의 랭킹과 필터링 문제 (PR시리즈.7)
- 추천 시스템의 쇼핑하우 적용예 (PR시리즈.8)
- 개인화 추천 시스템에 대하여 (PR시리즈.9)
- 추천 시스템의 부작용 - 필터버블 (PR시리즈.10)
- 추천 시스템의 레퍼런스 (PR시리즈.11)
- 추천 시스템에 대한 잡다한 생각들 (PR시리즈.12)
- 추천 시스템을 위한 하둡 마훗 사용하기 (PR시리즈.13)
- 추천 시스템에 대해서 여전히 남은 이야기들 (PR시리즈.14)
- 추천 시스템과 머신러닝 (PR시리즈.15)
==
페이스북 페이지: https://www.facebook.com/unexperienced