추천 엔진의 이해

반응형
추천 엔진의 이해

이번에는 이웃 유사도 기반 추천, 개인화 추천, 모델 기반 추천 시스템에 대해서 말씀드리겠습니다.

이웃 기반 추천엔진 : 사용자 기반 협업 필터링, 아이템 기반 협업 필터링
개인화 추천 엔진 : 콘텐츠 기반 추천 엔진, 상황 인식 추천 엔진
모델 기반 추천 엔진 : ML 기반 추천, 분류(SVM/KNN), 행렬 인수 분해, 특이값 분해, 교대 최소 제곱 등

1. 추천 시스템의 진화

  • 추천 시스템 1세대는 협업 필터링 또는 이웃 기반 방식의 추천 시스템이라고 할 수 있습니다.
  • 이러한 추천 시스템들은 비교적 성능이 뛰어나지만, 콜드 스타트 문제와 같은 제약사항들이 존재하고, 데이터가 매우 부족한 시나리오를 처리하지 못하는 한계가 있습니다.
    • 그런 한계점을 극복하기 위해서 새로운 접근법들이 개발되기 시작하였습니다. 예를 들면, 콜드 스타트 문제를 해결하기 위해 콘텐츠 기반 추천 시스템과 같은 새로운 접근법이 개발되기도 하였습니다.
    • 또한 데이터의 희소성이 높은 매우 많은 사용자 평가점수를 처리하기 위해 행렬 인수 분해(matrix factorization)와 특이값 분해(SVD)과 같은 수학적 접근법이 사용되었습니다.
  • 처음에는 콘텐츠 기반 추천 시스템에서도 유사도 계산이 사용되었지만, 기술과 인프라가 발전함에 따라 머신 러닝 모델과 같은 좀 더 향상된 방법이 휴리스틱 방법을 대체하였고 이러한 새로운 머신 모델은 추천의 정확도를 개선시켰습니다.


2. 최근접 이웃 기반 추천

  • 이름에서 의미하듯 이웃 기반 추천 시스템은 활성 사용자에게 제안 또는 추천하기에 앞서 사용자의 커뮤니티나 이웃 사용자들의 선호도 또는 유사도를 고려합니다.
  • 다시 말해, 이웃의 선호도 또는 취향을 고려할 때 다른 사용자와 활성 사용자가 얼마나 유사한 지를 계산한 후, 사용자 커뮤니티에서 평가되지 않은 항목들을 사용자에게 예측에 따라 추천을 하게됩니다.
  • 이러한 휴리스틱 기반 방식은 다음 내용을 전제로 합니다.
    • 과거에 유사한 선호도를 가진 사람은 앞으로도 유사한 선호도를 갖는.
    • 사람의 선호도는 미래에도 확고하고 일관성을 유지할 것 이다.
  • 최근접 이웃 기반 추천 시스템은 이전에 말씀드린대로 크게 사용자 기반 협업 필터링과 아이템 기반 협업 필터링으로 분류됩니다.
  • 두 방법의 장점으로는 구현하기가 비교적 쉽고 추천 생성 시 제품의 콘텐츠 정보 또는 사용자 프로필 정보를 필요로 하지 않는다는 점입니다.
  • 하지만 단점으로는 유사도를 계산하기 위한 계산비용과 데이터가 작은 경우 성능이 저하된다는 점 등이 있습니다.

2. 1. 사용자 기반 협업 필터링

  • 기본 전제는 과거에 유사한 취향을 지닌 사람은 미래에도 유사한 항목을 좋아할 것이라는 점 입니다.
  • 직관적으로 사용자를 x축, 아이템을 y축, 평가를 점으로 표현하는 공간을 정의하고 사용자와 아이템, 그리고 평가점수를 해당 벡터 공간에서의 점으로 나타내고 그들의 유사도를 측정합니다.
  • 그리고 그 유사도를 기반으로 다른 사용자들이 평가하지 않은 아이템의 평가 점수를 다른 사용자들이 평가한 점수들의 가중 평균을 계산해서 예측합니다.

2. 2. 아이템 기반 협업 필터링

  • 사용자 기반 협업 필터링과 달리 사용자 간의 유사도 대신 아이템 간의 유사도를 이용합니다.
  • 근본적인 생각은 사용자가 과거에 아이템 A를 좋아했다면 A와 유사한 B도 좋아할 것이라는 점 입니다.
  • 데이터의 규모가 매우 큰 경우 모든 사용자에 대한 유사도 값을 구하기 위한 계산 비용이 큰 사용자 기반 협업 필터링의 단점을 보완해주는 방법으로 아이템 간 유사도를 계산해 계산비용을 줄입니다. 아이템에 대한 카탈로그는 빠르게 변화하지 않기 때문에 다시 계산할 일이 빈번하게 발생하지 않기 때문입니다.
  • 이 접근법에서 가장 흔히 사용되는 유사도 측정방법은 코사인(cosine) 유사도 입니다.
    • 코사인 유사도를 적용할 때 아이템 열을 \(n\) 차원 벡터로 생각하고 두 아이템 간의 유사도를 두 벡터 사이의 각도로 여깁니다. 각도 크기가 작을수록 아이템은 유사하다고 볼 수 있습니다.


3. 콘텐츠 기반 추천 시스템

  • 지금까지 사용자의 상호작용 등의 정보만을 가지고 추천을 생성했다면 콘텐츠 기반 추천 시스템은 추천을 생성하는 데 개인화 수준을 목표로 하고 개개인의 선호도와 제품의 콘텐츠를 고려하여 추천하는 시스템을 의미합니다.
  • 이는 협업 필터링 접근법에서 콜드 스타트 문제를 보완해주는 점이 있습니다.
  • 콘텐츠 기반 추천 시스템 구축은 다음과 같이 세 가지 주요 단계로 이루어집니다.

    1. 제품에 대한 콘텐츠 정보를 생성
    2. 사용자 프로필과 제품 특징에 관련된 선호도를 생성
    3. 추천을 생성하고 사용자가 좋아할만한 아이템 리스트를 예측
  • 높은 개인화 추천 수준을 목표로 하지만 개인화가 심화됨에 따라 더 많은 사용자 정보가 유입되면 오직 사용자의 선호도에만 집중된 추천사항을 생성하는 단점이 있으며, 그에 따라 사용자 선호도와 관련 없는 새로운 제품은 사용자에게 소개하지 않습니다.

3. 1. 아이템 프로필 생성

  • 제품을 나타내는 특징을 추출하는 과정을 거쳐야 합니다. 일반적으로 제품의 콘텐츠는 벡터 공간 모형에서 제품 이름과 특징이 행과 열로 표시됩니다.
    • 구조화된 데이터 : 데이터베이스로부터 얻을 수 있음
    • 비구조화된 데이터 : 관련 후기, 태그, 또는 텍스트 속성 등을 포함
  • 아이템 프로필을 생성하기 위해 아이템과 연관된 특징의 상대적 중요도를 계산하는데 단어 빈도-역문서 빈도(TF-IDF, Term Frequency-Inverse Document Frequency)를 사용합니다.
    • 각 문서 내 각 단어의 빈도를 포함하는 단어 빈도 행렬 TF를 생성
    • 역문서 빈도를 생성. (\(IDF = \log(\text{문서 전체 수 / 문서 빈도})\)), 예를 들면 문서 전체 수는 영화의 개수를 의미하고 문서 빈도는 모든 문서에서 발생한 전체 수를 의미
    • TF-IDF 행렬 : \(TF * IDF\)

3. 2. 사용자 프로필 생성

  • 제품 콘텐츠와 매칭되는 사용자 프로필 또는 선호도 행렬을 생성해야 합니다. 일반적으로 사용자와 아이템 프로필 모두 비교하고 둘 사이의 유사도를 계산하는 것이 조금 더 합리적이기 때문에 제품 콘텐츠와 공통된 사용자 프로필 또는 특징을 생성합니다.
  • 영화를 예시로, 각 행에는 영화제목이 있고 열에는 사용자가 있으며 각 셀은 영화를 본 경우 1로 이루어진 행렬이 있다고 가정한다면 이 정보는 사용자의 영화 선호도를 나타내주는 프로필로 쓰일 수 있습니다.
  • 즉, TF-IDF 행렬과 사용자 선호도 행렬간 내적은 특정 아이템의 feature에 대한 사용자의 선호도를 알 수가 있습니다.

  • 이렇게하여 사용자 프로필과 아이템 프로필의 코사인 유사도를 구하여 각 아이템에 대한 사용자의 선호도를 구할 수 있고 코사인 유사도가 클수록 사용자가 특정 아이템을 좋아할 가능성이 높으므로 사용자에게 추천 가능하다고 결론을 내릴 수 있는 것 입니다.


4. 상황 인식 추천 시스템

  • 지금까지는 추천을 2차원 문제, 즉 사용자 선호도와 아이템으로 다루었다면 상황이라는 새로운 차원을 추가함으로써 상황 인식 추천은 3차원 문제로 만들 수 있습니다.

    \[\text{추천 = 사용자 \times 아이템 \times 상황}\]

  • 쉽게 이해하자면 새로운 차원이 추가된 콘텐츠 기반 추천입니다. 상황 인식 시스템에서는 다음과 같이 두 가지 단계로 추천이 생성됩니다.
    • 사용자의 선호도에 따라, 즉 콘텐츠 추천 기반으로 각 사용자에 대한 제품 추천 리스트를 생성
    • 현재 상황에 한정된 추천 사항을 필터링
  • 상황 인식 추천 시스템을 구축하는 데 가장 흔히 사용되는 접근법은 사전 필터링 방식과 사후 필터링 방식으로 나뉩니다.
    • 사전 필터링 : 상황 정보를 사용자 프로필과 제품 콘텐츠에 적용합니다. 관련이 없는 특징들을 모두 걸러내고 남은 특징들을 기반으로 최종 개인화 추천을 생성합니다.
    • 사후 필터링 : 사용자 프로필과 제품 카탈로그를 바탕으로 개인화 추천을 생성한 후, 상황 정보를 적용해 현재 상황에 적합한 제품을 필터링 합니다.


5. 하이브리드 추천 시스템

  • 다양한 추천 방식을 조합하는 것으로 흔히 사용되는 방식은 다음과 같습니다.

    • 가중방식 : 최종 추천은 사용 가능한 모든 추천 엔진의 추천 결과를 일반적으로 선형조합한 것입니다. 초기에는 동일한 가중치를 적용하여 시행하되 사용자가 추천 사항에 대한 반응을 평가해 점차적으로 가중치를 조정하는 방식입니다.
    • 혼합방식 : 데이터의 희소성으로 인해 사용 가능한 모든 추천 시스템으로부터 제품 점수를 얻는 것이 불가능할 때 사용됩니다.
    • 케스케이드 방식 : 협업 필터링을 이용해 추천 사항을 생성하고 콘텐츠 기반 추천 기법이 적용된 후 최종 추천 또는 순위 리스트가 결과로 제공됩니다.
    • 이 밖에 특징 조합 방식, 특징 증가, 메타 레벨 등이 있습니다.

6. 모델 기반 추천 시스템

  • 이전에 언급한 방법들은 유사도 계산을 포함하는 이웃 접근법에 초점을 맞추거나 벡터 공간 모델에 사용자와 아이템 콘텐츠를 표현하고 사용자 선호도와 유사한 아이템을 식별하는 유사도 크기를 구했습니다.
  • 이러한 접근법은 현재를 포함한 수년간 매우 성공적이였지만 유사도 계산을 위해 전체 데이터를 환경에 로드해야 하기 때문에(메모리 기반 모델) 실시간 시나리오에서는 응답이 매우 느리며 계산된 가중치는 머신 러닝 방식처럼 자동으로 학습되지 않는다는 단점이 있습니다.
  • 이 밖에 다양한 제약 사항들을 해결하기 위해 확률 모델, 지도 학습 모델과 자율 학습 모델 같은 머신 러닝 모델, 그리고 행렬 인수 분해 및 특이값 분해와 같은 행렬 접근법 등 좀 더 진보된 방법을 적용해 추천 엔진 성능을 향상 시킬 수 있습니다.

6. 1. 확률적 접근법

  • 사용 가능한 데이터로부터 사전 확률(prior)을 이용해 확률 모델을 생성하고 각 사용자의 제품에 대한 좋고 싫음의 확률을 계산하여 추천 순위 리스트를 생성합니다.
  • 가장 흔히 사용되는 방식은 나이브 베이즈 방식으로 간단하지만 강력한 기법입니다.

6. 2. 머신 러닝 접근법

  • 로지스틱 회구, KNN 분류, 결정 트리, SVM, 클러스터링 등과 같은 다양한 머신 러닝 기법을 사용하여 추천 엔진에 도입시키는 방법입니다.

6. 3. 수학적 접근법

  • 가장 흔히 사용되는 방법은 행렬 인수 분해 모델과 특이값 분해 모델 입니다. 행렬 인수 분해는 기존 평가 행렬 \(R\)을 사용자와 잠재 특징을 나타내는 두 개의 새로운 행렬 \(U\)\(V\)로 분해하는 방법입니다.
  • 수학적 방식에서는 하나의 행렬을 계수가 낮은 두 개의 행렬로 분해가 가능하다는 점을 이용하여 적절한 최적화를 통해 행렬 값을 구할 수 있습니다.
반응형
TAGS.

Comments