recommender system 관련 주제 탐색

주요 주제)

Contents based approach(콘텐츠기반 접근방식)

(1) 독립적인 정보활용
자신의 데이터를 토대로 유사성 측정을 통한 추천(과거 이력 등 충분한 자신의 데이터가 필요)

(2) 새로운 아이템
Collaborative Filtering 은 first ratre(새로운 아이템에 대한 소비자의 평가 데이터) 문제가 발생한다. 하지만 콘텐츠 기반 방법은 새로운 아이템에 대한 평가점수 없이도 추천이 가능하다.

(3) 과도한 특수화 (Over specialization)
과거 구매이력에만 너무 의존하여 새로운 속성의 아이템을 추천하지 못한다. (대안 유전자 알고리즘, 무작위 요소를 추가하는 돌연변이 방식의 기법)


Collaborative Filtering

협력필터링은 ‘특정 아이템에 대해 선호도가 유사한 고객들은 다른 아이템에 대해서도 비슷한 선호도를 보일 것’이라는 기본 가정을 바탕으로 사용자 혹은 아이템간 유사도를 기반으로 선호도를 예측하는 방법이다. 추천 아이템의 다양성을 보장할 수가 있다.

협력필터링: 사용자의 아이템 평가 정보
콘텐츠기반: 사용자와 아이템 정보

  • 기억 기반 협력필터링
    사용자간의 유사도를 계산하여 유사도가 가장 높은 사용자를 탐색하고 해당 사용자에는 있지만 자신에게는 없는 아이템을 추천하여주는 방식
  • 모델 기반 협력필터링 군집화, 분류, 예측의 단계에서 기계학습 또는 데이터마이닝 기법을 활용.
    (베이지안, 선형 회귀분석, 마코프 결정 프로세스 등 …)

(1) 데이터의 희소성(Saprsity)
데이터의 희소성 문제를 해결해야한다. 대표적으로 Cold start, First rate와 같이 신규고객이나 신규아이템은 관련 평가 정보가 없기 때문에 추천하는데 데이터 희소성의 어려움을 겪는다. 데이터 희소성 문제를 개선하는 방법으로 데이터의 차원을 축소하는 방법인 특이값 분해(Singular Value Decomposition, SVD)가 있다. 중요하지 않은 사용자나 아이템을 행렬에서 직접 제거하여 행렬의 차원을 축소시키는 방법이다. 축소된 데이터는 원 본 데이터 보다 노이즈가 적어 선호도 예측에 있어 우수한 성능을 나타낸다.

(2) 확장성(Scalability)

사용자의 구매행동이 발생하는 즉시 이를 반영하여 신속하게 새로운 예측 값을 계산하여야 한다. 이를 위해서는 알고리즘의 빠른 계산 속도가 매우 중요하다. 그러나 데이터 셋이 커질 수록 계산량이 많을 뿐만아니라 예측의 정확도도 저하될 수 있다.

(3) Grey sheep

Collaborative Filtering은 기본적으로 사람들의 취향에 경향성과 패턴이 존재한다는 사실을 기반으로 진행된다. 그러나 일부 사용자의 경우 일관성 없는 패턴을 가질 수가 있으며, 이는 데이터 예측 정확도를 떨어뜨리는 영향을 줄 수가 있다. 이를 해결하는 방법으로 콘텐츠 기반 접근법과 협력필터링 접근법을 모두 사용하여 가중 평균값을 예측 값을 활용하는 방법을 제안하였다.

(4) Shilling Attack

악의적으로 평가점수를 입력하여 추천 시스템의 정상적인 작동을 방해하는 행위를 Shilling attack 이라고 한다.

기억 기반 협력필터링: 사용자 기반 협력필터링 / 아이템 기반 협력필터링

  • 유사도 측정 방법
    피어슨 상관계수(Pearson correlation coefficient), 코사인 유사도(+ 보완 코사인 유사도, Adjusted cosine similarity), 스피어맨 순위 상관계수(Spearman’s rank correlation coefficient)

  • 선호도 예측 가중합, 단순가중평균
    예측시 가중치를 주는 방법: TF-IDF(Term Frequency-Inverse Document Frequency)

모델 기반 협력필터링

(1) 나이브 베이즈 모델

나이브 베이즈 모델을 통해 평가 정보나 이용정보가 부족한 신규 콘텐츠 추천 문제를 해결하였고 콘텐츠기반 접근방식의 가장 큰 문제점인 과도한 특성화 문제의 해결 가능성을 제시하였다.

(2) 군집화

K-means, DBSCAN, OPTICS
데이터를 군집화할 때, 데이터를 분할함에 따라 분할 된 데이터의 데이터 희소성 문제가 생긴다. 따라서 이 문제를 극복할, 데이터 차원 축소 과정이 필요하다.

차원 축소

사용자가 구매한 상품이 너무 적거나 혹은 고객과 상품 수가 많을 경우 추천 시스템의 성능이 저하될 수 있다.Latent Semantic Indexing(LSI) 기법으로 이를 개선할 수가 있다. 상품의 개수를 줄여 차원을 축소함으로써 취향분석의 정확도를 높이고 빠른 속도로 결과 도출을 한다. 이때 차원축소 기법으로 기존 행렬을 세 개의 행렬로 분해하는 특이값 분해 기법이 있다. 추천 시스템에서는 각 분해된 행렬을 이용하기 위해, 특이 값 분해 행렬들에서 K개의 속성을 선택하여 문제에 적용하며 이를 Truncated-SVD라 부른다.

(참고,, 강조하였다. Lee et al.(2002)는 특이값 분해를 통해 변환된 자료 사용이 때에 따라 원래 속성 정보를 상실할 수 있기 때문에, 원본 속성의 가치를 발견하는데 오히려 방해가 될 수 있다는 문제점을 제기하였다. 이를 해결하기 위해 1차적으로 군집화를 진행한 뒤, 엔트로피 가중치와 특이값 분해를 동시에 적용하여 군집의 중요한 속성을 발견할 수 있는 알고리즘을 제안하였다.)

콘텐츠기반 접근방식은 평가가 되지 않은 아이템을 추천할 수 있지만, 과도한 특수화 경향이 있으며 반대로 협업필터링은 높은 세렌디피티(serendipity)를 보여주지만, 사용자가 평가하지 않은 아이템에 대해서는 추천이 되지 않는다.

시간적 역동성을 고려한 추천시스템

유튜브처럼 서비스 내부아이템의 수명주기가 매우 짧은 경우 한 시점에서 아이템들이 소비되고, 어느 정도 시간이 지나면 거의 소비가 이루어지지 않는다. 또한 온라인 쇼핑몰의 상품은 계절 혹은 이벤트에 의한 일시적인 유행이 발생한다. 이처럼 시간에 따라 아이템의 특성이 다르게 나타나는 것을 concept drifting이라고 한다.

해결방법: moving window, 시간의 흐름만큼 가중치를 줄여주는 감쇄 함수.

다양성을 고려한 추천시스템

점수예측 알고리즘의 평가방법

MSE(Mean Squared Error)
RMSE(Root Mean Squred Error)[Netflix prize에서 사용됨]

현업에서 선호하는 평가방법

lift, hit rate



2021 의 게시글

NMF

NMF 음수미포함 행렬분해

PCA, EVD

PCA 주성분 분석(차원 축소)

15989번 1,2,3 더하기 4(다이내믹 프로그래밍)

다이내믹 프로그래밍 방법이 필요한 문제들은 처음엔 접근 방법이 막막하게 느껴지곤 합니다. DP 접근 풀이가 필요한 관련 유형의 문제들을 많이 다뤄보도록 합시다.

10942번 펠린드롬(다이내믹 프로그래밍)

다이내믹 프로그래밍 방법이 필요한 문제들은 처음엔 접근 방법이 막막하게 느껴지곤 합니다. DP 접근 풀이가 필요한 관련 유형의 문제들을 많이 다뤄보도록 합시다.

12865번 평범한 배낭(다이내믹 프로그래밍)

다이내믹 프로그래밍 방법이 필요한 문제들은 처음엔 접근 방법이 막막하게 느껴지곤 합니다. DP 접근 풀이가 필요한 관련 유형의 문제들을 많이 다뤄 보도록 합시다.

11066번 파일 합치기(다이내믹 프로그래밍)

다이내믹 프로그래밍 방법이 필요한 문제들은 처음엔 접근 방법이 막막하게 느껴지곤 합니다. DP 접근 풀이가 필요한 관련 유형의 문제들을 많이 다뤄보도록 합시다.

2차원 배열 유형 문제

삼성역량테스트에서 출제되는 코테문제들의 경우 2차원 배열을 특정한 기준을 통해 회전시키는 문제가 자주 출제됩니다.

Introducing Python 파이썬 정리(2)

Introducing Python 처음 시작하는 파이썬[2판] 을 읽으면서, 몇 가지 헷갈리거나 새롭게 알게된 문법, 함수, 메소드들을 정리하려고 합니다.

Introducing Python 파이썬 정리(1)

Introducing Python 처음 시작하는 파이썬[2판] 을 읽으면서, 몇 가지 헷갈리거나 새롭게 알게된 문법, 함수, 메소드들을 정리하려고 합니다.

Pipeline CPU(5)- Control Hazard

Pipeline-CPU 목차 Pipeline CPU(1) : Single-Cycle vs Multi-Cycle CPU Pipeline CPU(2) : Pipeline-CPU의 간략한 이해 Pipeline CPU(3) : Data Hazard(RAW...

Pipeline CPU(4)- Data Forwarding

Pipeline-CPU 목차 Pipeline CPU(1) : Single-Cycle vs Multi-Cycle CPU Pipeline CPU(2) : Pipeline-CPU의 간략한 이해 Pipeline CPU(3) : Data Hazard(RAW...

Pipeline CPU(3)- Data Hazard

Pipeline-CPU 목차 Pipeline CPU(1) : Single-Cycle vs Multi-Cycle CPU Pipeline CPU(2) : Pipeline-CPU의 간략한 이해 Pipeline CPU(3) : Data Hazard(RAW...

맨 위로 이동 ↑