추천시스템의 정의
유저와 아이템의 주변 정보와 상호작용 기록을 바탕으로 유저가 선호할 아이템을 예측하여 유저의 의사결정을 돕는 인공지능 서비스
유저(user) : 서비스를 이용하는 주체
아이템(item) : 서비스에서 판매/제공하는 대상 물품
상호작용(interaction/log) : 서비스 내에서 유저가 남기는 일련의 행동 기록 (구매 개수, 구매 여부, 클릭 여부)
context : 추천이 노출되는 여러 정보
Information Overload : 과도하게 많은 정보에 압도해 판단을 내리기 어려운 현상
FOMO(Fear of Missing Out)
-> Filtering으로써의 추천
검색 vs 추천
검색 시스템 | 추천 시스템 | |
작동 방식 | Push | Pull |
Query 입력 | 있음 | 없음 |
작동 시점 | 사용자 요청 후 | 사용자 요청 전 |
의도의 명시성 | 명시적 (explicit) | 암묵적 (implicit) |
Business Applications
1) E-commerce
유저의 기록을 바탕으로 다음에 구매할 상품 추천
단순히 매출을 향상시키는 효과를 넘어 서비스에 lock-in하는 효과
함께 본 : 대체재, 함께 산 : 보완재
2) Content Platform
유튜브, 넷플릭스 : 유저의 기록을 바탕으로 다음에 볼 컨텐츠 추천
음악/웹툰/소셜/뉴스 등 다양한 종류 컨텐츠 추천 가능, 시계열성 고려
3) POI (Point-Of-Interest)
다음에 방문할 장소를 추천
-> 유저의 리텐션을 확보함으로써 기업의 직간접적인 수익 창출에 기여함
추천 시스템의 어려움들
1) 확장가능성
특성 상 운영 중인 서비스의 한 파이프라인으로 적용됨
서비스의 특성, 자원 상의 제약 등의 한계에서 자유로울 수 없음
유저, 아이템의 수가 증가함에 따라 확장성의 제약은 크게 증가함
정확도를 위해 복잡한 모델만을 사용할 수 없는 딜레마가 있음
2) 도메인 종속성
서비스 도메인에 따라 추천 대상이 되는 아이템의 특성이 다름
ex) 데이터 타입, 아이템과 유저 관계
추천 아이템의 특징과 도메인 특성에 따라 적용되는 알고리즘과 시스템 구조가 적절히 고안되어야 함
3) 비즈니스 목표의 다양성
비즈니스 종속성이 큰 추천시스템의 특성 상, 다양한 비즈니스 목표가 존재
여러 비즈니스 목표가 충돌하는 경우 발생
CTR (폭력, 자극적) VS CVR (실제 매출까지 이어지는), CTR VS Diversity
ML 모델이 최적화하는 loss function과 비즈니스 목표가 align되지 않는 상황
4) Cold-start Problem
추천시스템의 고질적인 문제
신규 유저 혹은 아이템에 interaction이 없어 추천 알고리즘의 추론이 잘 작동하지 않는 현상
sparsity : 데이터가 sparse하게 존재하는 상황
서비스 내에 아이템 수는 대개 한 유저가 소비할 수 있는 양을 훨씬 뛰어 넘음
Long Tail : 대다수의 상품은 interaction을 거의 갖지 못함
5) No Clear Growth
유저의 선호도는 주관적이고 동적임
유저 스스로 선호를 불분명하게 인지하고 있음, 다른 ML task는 개/고양이 같이 라벨이 명확한 경우가 많음
모델의 바이어스 : 주니까 본다, 추천 알고리즘의 결과로 나온 것들만 유저가 소비할 수 있는 시스템의 경우, 모델의 판단 자체가 고객의 행동에 영향을 미침
추천 시스템 파이프라인
후보 생성(Candidate Generation) : 무수히 많은 전체 상품 중 그나마 관련이 있을 것으로 예상되는 일부 후보군 추려냄
순위 매기기(Ranking) : 추려낸 수백개의 후보군 내에서 유저-아이템 연관성 점수를 상대적으로 더 정밀하고 복잡한 모델로 매김
재정렬(Reranking) : 순위를 매긴 유저-아이템 쌍 중 유저와 무관하거나 비즈니스 목적에 맞지 않은 아이템 제거함 (이미 구매한 상품, 적절하지 않은 상품 필터)
고전적 추천 알고리즘 - 단순한 직관에서 유래함.
1) 인구통계 기반 필터링(Demographic Filtering) : 연령, 나이, 직업, 위치 등과 같은 정보 추천 제공
가장 단순한 형태의 피처 기반 필터링으로 볼 수 있음.
장점 : 단순하고 콜드스타트에 대응할 수 있으며 해석 가능함(직관적)
단점 : 개인화되지 않으며 고정 관념에 기반한 추천이라는 인식을 줄 수 있으며 민감정보라는 한계가 있음
2) 인기도 기반 추천(Popularity Based) : 인기 상품 추천
가장 직관적인 방법으로 상품의 인기도를 기준으로 추천
인기도는 항목이 받은 조회수, 좋아요 수, 클릭 수 또는 평점과 같은 다양한 메트릭 활용 가능
장점 : 사용자별 정보나 선호도에 의존하지 않은므로 구현하기 쉽고 확장성이 뛰어남
단점 : 역시 개인화가 되지 않으며 필터 버블/ 에코 챔버 등의 문제가 있음. 아이템의 콜드 스타트라는 한계도 존재
* Filter Bubble
개인화 알고리즘으로 인해 사용자가 제한된 정보나 추천에 노출되는 현상
기존의 신념, 관심사, 선호도를 확인하는 정보와 의견에 노출될 가능성이 높아져 유사한 콘텐츠의 거품이 형성
인기도 기반 추천의 경우 인기있는 상품에 대한 노출이 반복됨으로써 제한된 다양성의 아이템만 유저에게 노출되는 문제를 발생시킴
3) 지식 기반 추천(Knowledge Based) : 전문가의 지식이나 유저의 입력에 기반한 추천
4) 규칙 기반 추천(Rule-Based) : 사전에 정의된 규칙에 의해 추천 제공
연관 규칙 추천 (Association Rule Mining)
다양한 item이 등장하는 전체 거래에서 특정 item이 연결되는 방법, 그리고 그 이유를 결정하는 규칙을 발견하기 위한 학습 방법론, Market Basket Analysis, Affinity Analysis로도 불림
"A를 사면(조건절, Antecedent) B도 산다(결과절, Consequent)"는 규칙을 찾는 것
조건절에 들어가는 상품과 결과절에 들어가 있는 상품은 상호배반적 (mutually exclusive, disjoint)이어야 함
오직 빈번하게 등장하는 아이템 셋에 대해서만 고려하는 A priori 알고리즘을 적용해 빠른 규칙 생성이 가능
하나의 장바구니로부터 많은 규칙을 만들어낼 수 있음
이러한 경우의 수는 장바구니 내 상품의 수에 따라 급속도로 증가함
이때 불필요한(성능이 낮은) 규칙을 배제하기 위해 다양한 성능 지표를 적용해 연산 효율성 증가시킴
입력 데이터
구매한 상품의 수량은 고려하지 않음, 행렬 형태로 표현
관련 지표
1) 지지도 (Support)
A, B가 동시에 등장할 확률
2) 신뢰도 (Confidence)
A가 장바구니에 있을 때, B가 동시에 등장할 확률, 조건부 확률
3) 향상도 (Lift)
둘이 등장할 확률이 독립이라고 할 때보다 얼마나 더 잘 같이 등장하는지 P(A,B)/P(A)P(B)
4) 레버리지 (Leverage)
이 규칙에서 등장하는 상품들이 얼마나 유의미하게 같이 등장하는지
규칙 생성 알고리즘
1) Brute Force (무차별 탐색)
모든 경우의 수 무차별적으로 대입해 전부 시도해보는 방식
혹시라도 모를 모든 좋은 조합을 찾아낼 수 있다는 장점
지나치게 큰 연산량이 있다는 단점
2) A priori
오직 빈번하게 등장하는 아이템 셋에 대해서만 고려하는 방식
Anti-monotone property 활용
ex) 햇반의 지지도가 0.2라 했을 때 이 상품이 포함된 다른 장바구니의 지지도는 0.2를 넘을 수 없음.
한 상품 집합의 지지도가 그의 부분집합의 지지도를 넘지 못한다는 수식의 특성
이를 활용해 불필요한 조합 배제해 연산량 크게 줄임.
컨텐츠 필터링 (Similar Items)
수치 형태로 표현하기
머신러닝 모델 학습에서 row 구성하듯 각 아이템의 특성을 feature로 나타낼 수 있음
변수의 종류에 따라 다른 처리 필요
연속형 : 정규화 후 수치 형태로 사용
범주형 : one-hot 등의 가공 방식 사용
비슷한 정도 계산하기
코사인 유사도, 유클리드 거리, 피어슨 상관계수
* 코사인 거리를 구하려면 1-코사인 유사도
컨텐츠 필터링 구현 절차
1) 피처 추출
일반적인 아이템의 경우 상품의 특징을 담은 tabular feature를 사용함
텍스트의 경우 TF-IDF와 같은 기법을 적용할 수 있음.
* BoW (Bag of Words)
문장 내 단어를 토큰으로 만들어 주머니 안에 넣듯이 다뤄보자
문제점
문장 내 단어가 증가됨에 따라 feature의 수가 크게 증가
어휘 수가 늘어남에 따라 연산 효율 문제 발생
단어 간의 의미 관계 포착 불가
불용어(stop words) 문제
* TF-IDF
W_x,y = tf_x,y X log(N/df_x)
TF(Term Frequency) : 문장 내에서 자주 등장하는 단어는 더 중요하다, y 내에서 x라는 단어의 등장 빈도
IDF(Inverse Document Frequency) : 여러 문장에 걸쳐 자주 등장하는 단어는 별로 안 중요하다
df_x : x라는 단어를 포함하고 있는 문서의 수
N : 전체 문서의 수
log : 지나치게 큰 수가 나오는 것을 방지하기 위한 normalize 기능 수행
2) 사용자 프로필 정보 생성
유저가 상호작용한 아이템의 특징을 집계하여 생성
유저의 선호도를 나타내는 역할 수행
3) 유사도 계산
아이템과 사용자 프로필 벡터 사이의 유사도를 계산
4) 랭킹
유사도 스코어에 따라 순위를 매기게 되며 상위의 아이템이 사용자에게 추천됨
장점
적은 상호작용 데이터에도 사용 가능, cold start 상황에 적합
아이템 cold start에 강점
추천 해석 가능, 어떤 피처가 추천에 도움이 되었는지 근거 찾을 수 있음
단점
아이템 피처의 한계, 피처 정보로만 유사도를 계산하기에 피처의 품질에 크게 영향을 받음
신규 유저 cold start, 아무런 아이템도 클릭한 적 없는 유저에게는 추천 어려움
협업 필터링 (Similar Users), Collaborative Filtering
유저의 선호 패턴을 수치 형태로
행을 유저로 열을 아이템으로 상호작용 행렬 표현
유저 간 비슷한 정도 계산
협업 필터링 구현 절차
1) 유저와 아이템 상호작용 행렬 생성
각 유저-아이템 평가/클릭/구매 등 상호작용 정보를 기반으로 원소를 채움
2) 유사도 계산
유저 기반 협업필터링의 경우 평가한 아이템의 index를 feature로 간주
아이템 기반 협업필터링의 경우 각 아이템을 평가한 유저의 index를 feature로 간주
이러한 관점에서 각 유저별/아이템별 유사도 계산
3) 이웃 지정
추천 대상의 스코어를 생성할 이웃 유저/아이템을 지정함
이웃의 수는 고정시킬수도, 그때그때 적용할수도 있음
보통 높은 유사도의 유저 n명을 사용하는 전략을 쉽게 떠올릴 수 있음
4) 랭킹
이웃들의 상호작용 정보를 토대로 추천 스코어 계산함
장점
집단 지성을 활용한 개인화 추천
잠재적 특징 활용 : 아이템/유저 feature로 명시적으로 드러나지 않은 선호 정보도 반응 정보로부터 추출하여 사용할 수 있기 때문에 폭넓은 추천가능
데이터가 쌓일수록 높아지는 성능
단점
아이템 cold start
유저 cold start
낮은 확장가능성 : 아이템/유저의 수가 늘어남에 따라 연산량이 급격히 증가함
하이브리드 필터링
컨텐츠 기반 필터링 + 협업 필터링
앙상블 (Ensemble) : 각자의 강점이 있을 때 이를 적절하게 조합하기
초반에는 컨텐츠 필터링으로, 상호작용이 많은 고객은 협업필터링으로 !
기대 효과 : 추천 성능의 향상, 추천 범위 및 다양성 증대
종류
1) 단순 가중 앙상블 (weighted ensemble)
가장 단순한 접근, 여러 모델 결과값 평균 내 사용
조금 더 개선된 방식으로 모델의 성능을 기준으로 더 좋은 성능에 큰 점수 가중치를 주도록 구성할 수 있음
2) 스위칭 (switching)
그때 그때 적절한 모델
콜드 유저를 상대로는 아이템 기반 추천, 활동 기록이 쌓이면 협업 필터링 적용
3) 피처 조합 방식
앞선 모델 (보통 협업 필터링 모델)의 추천 결과를 이후 등장하는 메인 모델의 피처로 사용하자
협업 필터링 추천 결과를 고려해 컨텐츠 필터링을 적용함으로써 두 모델의 장점 적절히 조합 가능
임베딩 + 부스팅 모델 결합 (Uber Eats)
장점
성능 향상
추천 범위, 다양성의 증가, cold start 문제 개선
단점
복잡도의 증가
두 모델을 한 번에 적용하기 위해 통합 개발 및 관리 필요
설계에 따라 확장성도 떨어질 위험 존재
하이퍼파라미터, 모델 가중치 등 추가 튜닝 필요
출처 : 패스트캠퍼스 - 30개 프로젝트로 끝내는 추천시스템 구현 강의
'이론' 카테고리의 다른 글
[알고리즘 코테] 그리디 (0) | 2023.11.12 |
---|---|
[패스트캠퍼스 - 30개 프로젝트로 끝내는 추천시스템 강의 Chapter06. 추천시스템이 필요한 이유] (0) | 2023.10.29 |
[SQLD 1과목 요점정리] (0) | 2023.09.03 |
[ADsP 2과목 요점 정리] (0) | 2023.08.20 |
[ADsP 1과목 요점 정리] (0) | 2023.08.12 |