본문 바로가기
AI Theory/Recsys

01) 나도 이해한 추천시스템 알고리즘 _ 추천 시스템의 이해

by climba 2022. 1. 22.
References
- [토크ON세미나] 추천시스템 분석 입문(https://www.youtube.com/watch?v=43gb7WK56Sk&t=138s)
- https://rfriend.tistory.com/191

0. 글 쓰기에 앞서

데이콘 대회를 처음으로 참가하면서 추천시스템에 대한 공부를 해봤다.

참가한 대회는 "잡케어 추천 알고리즘 경진대회"로 추천 시스템과 관련된 대회였는데, 데이터를 보면 볼 수록 추천이라기 보단 예측에 가깝다고 느껴졌다. 그래도 추천 알고리즘은 한번 정리해보면 좋을 것 같아 SKpanet Tacademy의 추천시스템 분석 입문하기를 보며 공부 내용을 정리해보았다.

1. 추천 시스템 개요

정의 : 추천 시스템은 사용자(user)에게 상품(item)을 제안하는 소프트웨어 도구이자 기술

목표 : 어떤 사용자에게 어떤 상품을 추천할 것인가

2. 기업에서의 추천 시스템

  • 당근마켓 : 비슷한 상품을 구매하려는 다른 사람들이 같이 본 상품 추천
  • 넷플릭스 : 사용자의 취향을 분석해 좋아할만한 컨텐츠 추천
  • 카카오 (브런치) : 사용자가 자주 읽은 혹은 관심있는 글과 유사한 글을 추천
  • 유튜브, 구글, 페이스북 등등

3. 과거의 추천 시스템

출처 :  https://www.youtube.com/watch?v=43gb7WK56Sk&t=138s

3-1. 연관분석(Association Analysis)

연관분석 : 상품과 상품 사이에어 어떤 연관이 있는지 찾아내는 알고리즘

출처 : https://rfriend.tistory.com/191
출처 : https://rfriend.tistory.com/191

  • 지지도(Support) : X, Y를 같이 구매할 확률
  • 신뢰도(Confidence) : X라는 상품을 구매했을 때, Y의 구매까지 이어질 확률
  • 향상도(Lift) : 두 사건이 동시에 얼마나 발생하는지 비율, 독립성을 측정

ex) 월마트에서 맥주를 구매할 때 기저귀를 같이 구매하는 경향이 크다는 것을 밝혀 둘을 함께 진열함

 

연관 분석의 단점 : 아이템의 증가에 따른 규칙의 수의 증가가 기하급수적으로 증가Apriori 알고리즘의 등장

3-2. Apriori 알고리즘

Apriori 알고리즘 : 비슷한 사용자가 같이 구매하는 상품 등을 추천하는 알고리즘

→ 연관분석의 아이템셋 기하 급수적인 아이템 셋의 증가를 줄이기 위한 방법

💡 IDEA : “빈번한 아이템셋은 하위 아이템셋 또한 빈번할 것이다”

<Apriori 알고리즘>

  1. K개의 item을 가지고 단일항목집단 생성(one-item frequent set) (아이템을 한개씩 구매하는 경우)
  2. 단일항목집단에서 최소 지지도 (support) 이상의 항목만 선택
  3. 2에서 선택된 항목만을 대상으로 2개 항목 집단 생성
  4. 2개 항목 집단에서 최소 지지도 혹은 신뢰도 이상의 항목만 선택
  5. 위의 과정을 k개의 k-item frequent set을 생성할 때 까지 반복
연관 상품들이 상관관계는 의미할 수 있어도 인과관계는 의미하지 않는다.
ex) 치킨무와 치킨의 경우 치킨무를 구매하여서 치킨을 구매한 것이 아니고 치킨을 구매하여서 치킨무를 구매한 것이다.
  • 장점 : 원리가 간단하여 사용자가 이해하기 쉽다, 유의한 연관성을 갖는 구매 패턴을 찾아줌 → 의미 파악이 쉬움
  • 단점 : 데이터가 클 경우 (item이 많은 경우)에 속도가 느리고 연산량이 많다, 실사용시 많은 연관상품이 나타남               → FP Grwoth 알고리즘의 등장

3-3. FP-Growth

-> Apriori의 속도 측면의 단점을 개선

 

<FP-Growth 알고리즘>

  1. 모든 거래를 확인하여, 각 아이템마다 지지도를 계산하고 최소 지지도 이상의 아이템만 선택
  2. 모든 거래에서 빈도가 높은 아이템 순서대로 순서를 정렬
  3. 부모 노드를 중심으로 거래를 자식 노드로 추가해주면서 tree 생성
  4. 새로운 아이템이 나올 경우에는 부모 노드부터 시작하고 그렇지 않으면 기존의 노드에서 확장
  5. 위의 과정을 모든 거래에 대해 반복하여 FP Tree를 만들고 최소 지지도 이상의 패턴만을 추출

장점

  • Apriori 알고리즘보다 빠르고 2번의 탐색만 필요로함
  • 후보 Itemsets을 생성할 필요없이 진행 가능

단점

  • 대용량의 데이터셋에서 메모리를 효율적으로 사용하지 않음
  • Apriori 알고리즘에 비해서 설계하기 어려움
  • 지지도의 계산이 FP-Tree가 만들어지고 나서야 가능함

 

💡 과거의 추천시스템들은(Apriori,FP-Growth) 메모리, 시간 효율이 너무 비효율적이고 생성하는 규칙이 너무 많다. → 딥러닝 기반의 알고리즘 사용

 

4. 정리

이번 포스팅에서는 추천시스템의 전반적인 개요와 어떻게 발전해왔는지를 알아보았다.

추천시스템은 크게 컨텐츠 기반 추천협업 필터링으로 나뉘는데 다음 포스팅에서는 컨텐츠 기반 추천에 대해 정리 할 것이다.

댓글