추천시스템 이슈 사항

김민영·2024년 2월 2일

Cold Start Problem

아이템에 대한 평가가 없는 신규 사용자나 처음 시장에 나온 신제품의 경우 어떻게 추천해줄 것인가?

CF 협업 필터링은 기본적으로 신규 사용자와 신규 아이템에 대해서 추천을 하기 어렵다.

확장성 Scalability

대규모 사용자와 아이템을 대상으로 추천 알고리즘을 적용하기 위해서 확장성을 어떻게 확보할 것인가?

  • 병렬처리 기술
    빠른 계산을 위한 근본적인 해결책은 spark와 같은 병렬처리 기술을 활용

  • 배치 스케줄
    그렇지만, 계산 인프라를 아무리 높여도 사용자와 아이템이 너무 많은 경우는 연산량 자체가 너무 많기 때문에 실시간 계산으로는 추천이 불가능할 때가 많다. 이럴 때에는 사용자별 추천리스트에 대한 배치 방식으로 시스템에 대한 트래픽이 가장 적은 시간대에 돌려 놓고, 결과를 저장해놓은 다음 실서비스를 많이 사용하는 아침에 배포를 시작해서 결과에 대해 호출만 할 수 있도록 한다.

  • 알고리즘 변경
    계산량과 성능의 trade off 관계를 고려해서 알고리즘을 변경한다.
    예를 들면, 성능을 조금 줄여서 계산량이 적은 IBCF를 사용한다.

  • 샘플링 모델 학습
    모든 사용자에 대해 다 학습시키기 보다는 샘플링을 해서 일부 대표 데이터를 학습시킨다.

추천의 활용 Presentation

추천 알고리즘을 어떻게 활용할 것인가?

직접접 추천리스트 제공 / 간접적 추천 리스트 제공 / 검색 결과 정렬 / 맞춤형 광고 제공

이진수 데이터의 사용 Binary Data

아이템의 평가 데이터가 1~5가 아니라 이진값인 경우에 어떻게 할 것인가?

CF의 경우 연속형 데이터라면 Cosine 유사도를 이용하는 것이 좋지만, 클릭여부와 같은 불연속형 이진 데이터를사용한다면, Jaccard 유사도를 이용하는 것이 좋다.

DL의 경우 Layer 및 Activation을 변경해 사용.

사용자의 간접 평가 데이터 확보

Indirect Evaluation data

사용자의 선호 데이터를 구하기 어려운 경우에는 해당 데이터를 어떻게 구할 것인가?

쇼핑몰을 예시로 들면, 사용자들은 리뷰 남기는 것에 부정적 감정이 들기 때문에 데이터가 쌓이기 힘들다.
이런 상황에 직접적인 데이터를 모이기 힘든 경우라면 간접적 데이터를 찾기 위해 노력해야 한다.

직접적 데이터

명시적 레이팅 (Explicit Rating)
별점이나 좋아요 버튼 처럼 시각적으로 나타나는 점수를 뜻한다.
사용자에 따라 취향이 천차만별이기에, 사용자가 직접 남기는 주관적인 데이터라고 볼 수 있다.

간접적 데이터

암묵적 피드백(Implicit Feedback)
장바구니에 담기거나 상세 페이지 열람 여부, 또는 시청기록과 같이 사용자가 점수라고 인지하지 못하는 기록 데이터.
ex) 제품 페이지 방문 수, 체류 시간, 클릭 수

겉으로 드러나지 않고, 개발한 사람의 의도에 따라 수집할 수 있는 데이터이다.
이커머스에서는 상세 페이지 방문 여부를 통해 콜드 스타트 문제를 해결할 수 있다.

profile
data analysis, data science

0개의 댓글