Search

추천 시스템 개요

대분류
인공지능/데이터
소분류
추천 시스템
유형
Recommender System
부유형
Introduction RS
최종 편집 일시
2024/11/20 04:58
생성 일시
2024/10/25 03:02
14 more properties

추천 시스템이란?

정보 필터링 기술의 일종으로 특정 사용자가 관심을 가질만한 정보(영화, 음악, 책, 뉴스, 이미지, 웹 페이지 등)를 추천하는 것

Cold Start

추천 시스템이 새로운 또는 어떤 유저들에 대한 충분한 정보가 수집된 상태가 아니라서 해당 유저들에게 적절한 제품을 추천해주지 못하는 문제

Cold Start가 발생하는 원인

1.
New Community : 여기서 새로운 커뮤니티란, 새로운 서비스가 오픈된 것을 말한다.
2.
New item신제품이 출시된 경우에는 추천 시스템의 종류에 따라 Cold Start가 발생할 수 있다.
3.
New User새로운 유저가 가입했을 때, 신규 유저에 대한 히스토리가 없기 때문에 Cold Start가 발생한다.

Cold Start 해결 방법

하이브리드 추천 시스템을 이용하면 어느정도 해결할 수 있다.
유저별 히스토리 데이터에 따라 추천 시스템의 종류를 선택적으로 적용한다면 Cold Start에 어느정도 대응을 할 수 있다.
1.
New Community인 겨우, Knowledge-Based Filtering
2.
New item인 경우, Content-Based Filtering
3.
New User인 경우, Knowledge-Based Filtering 또는 비개인화 추천

추천 시스템의 필요성

특정 방송사에서 콘텐츠를 생성하는 과거와는 달리 위의 이미지와 같이 유튜브, 왓차, 넷플릭스 등 많은 곳을 통해서 컨텐츠가 생성되고 볼 수 있는 사회에 살고 있다.
이러한 사회에서 본인이 정확하게 원하는 컨텐츠를 찾는 것은 점점 힘들어지고 시간이 많이 걸린다고 할 수 있다.
이러한 이유로 인하여 유튜브, 넷플릭스, 쿠팡 등 많은 회사에서는 추천 시스템이라는 인공지능 기반 기술을 이용하여 사람들에게 개인화된 컨텐츠를 노출해주고 있다.
특히 기존에는 할 수 없던, 고객 개개인에게 맞춤형 서비스를 추천 시스템을 통해 제공함으로써 기업에게는 더 많은 수익 창출을 제공하고, 고객에는 더 높은 만족도를 제공하고 있다.

파레토 법칙 vs 롱테일 법칙

파레토 법칙
80 대 20의 법칙
오랫동안 대중적인 마케팅 기법으로 인식되어 왔다.
그러나 인터넷의 발전으로 리테일 부문에서 온라인 시장의 규모가 급성장했다.
롱테일 법칙
주목받지 못하는 다수가 핵심적인 소수보다 더 큰 가치를 창출하는 현상
주력상품 외에도 다양한 고객의 니즈에 부응하기 위해 판매하는 상품들이 늘어나게 되고 C그룹에 속하는 상품들은 계속해서 증가한다.
전통적으로 소홀히 취급되어 왔던 파레토 분포상에서 긴 꼬리에 해당하는 틈새 상품도 기업의 매출에 매우 큰 영향력을 발휘할 수 있게 되었다.
추천 시스템을 통해서 긴 꼬리에 해당하는 다품종 소량 생산품들을 필요한 소비자들에게 적절하게 추천을 할 수 있게 되었다.
'사소한 다수와 중요한 소수가 문제의 원인으로 우리 주변에서 일어나는 많은 현상의 80%는 20%의 중요한 원인 때문에 발생한다는 것'
상위 20% 고객이 전체 수익의 80%를 올려 준다.
20%의 우수한 사원이 회사 전체 매출의 80%를 이끈다.
회사 핵심 제품 20%가 전체 매출의 80%를 담당한다. 등
‘80%의 사소한 다수가 20%의 핵심 소수보다 더 뛰어난 성과를 창출한다는 것’
개별 매출액은 작지만 이들을 모두 합하면 히트상품 못지 않은 매출을 올릴 수 있는 틈새상품의 영역을 말하는 것
기존에는 파레토법칙과 같은 수백만개씩 팔리는 상품을 개발하려는 사고방식이었다면 앞으로는 기존 패러다임에서 사소한 것으로 간주되었던 나머지 80%가 점점 부각될 것이다라는 것이 핵심이다.

추천 시스템 분류

시나리오에 따른 분류

연관된 아이템 추천

현재 소비되고 있는 아이템과 연관된 아이템을 추천
개인화 아이템 추천
소비중인 아이템이 없더라도, 개인의 관심사를 찾아 소비할 만한 아이템을 추천

피드백 종류에 따른 분류

Explicit feedback(명시적 피드백) 추천

명백한, 외재적인 피드백
별점, 좋아요/싫어요 등

Implicit feedback(암시적 피드백) 추천

은영중인, 내재적인 피드백
뉴스 클릭 수, 검색 기록, 페이지 유지 시간 등

추천 알고리즘

추천 시스템은 보통 개인의 취향에 맞춰 상품이나 콘텐츠를 추천해주는 알고리즘을 생각할 수 있지만, 사용자 개인에 대한 정보가 없는 경우에는 인기도 기반 추천/조회수 기반 추천/평점 기반 추천 등을 이용할 수 있다.

인기도 기반 추천

말 그대로 가장 인기있는 아이템을 추천하는 것을 의미한다.
하지만 "인기"는 추상적인 개념이라 이를 평가할 수 있는 지료로 좋아요/싫어요 수, 리뷰 수, 평균 평점 등을 사용할 수 있다.

조회 수 기반 추천 (Most Popular)

사용자는 뉴스를 볼 때 핫한 이슈이면서도 최근 소식을 보기를 원한다.
따라서, 조회수와 날짜를 조합한 점수를 만들면 사용자에게 최근에 작성된 따끈따끈하고 핫한 뉴스를 추천할 수 있다.
아래는 IT 뉴스 서비스 웹사이트인 'Hacker News'와 소셜 뉴스 웹사이트인 'Reddit'에서 사용하는 뉴스 추천 알고리즘이다.
Hacker News의 점수화 알고리즘
score=pageviews1(age+2)gravity\text{score} = \frac{pageviews-1}{(age + 2)^{\text{gravity}}}
pageviews:해당 뉴스의 조회수, 1을 빼는 이유는 기사 작성자의 조회수를 제거하기 위함
age:뉴스 업로드 날짜로부터 현재까지 지난 기간(Hours)를 의미
gravity:age가 커질수록 분모를 얼마나 더 크게 증가시킬 것인지 설정하는 상수
Hacker News에서는 gravity 값을 1.8로 설정
조회수가 높을수록 점수가 높아지지만, 시간이 지남에 따라 오래된 뉴스는 조회수가 높더라도 낮은 점수를 갖게 된다. 그리고 중렬 상수가 클수록 시간의 흐름에 더 많은 영향을 받게 된다.
조회수와 중력 상수 값에 따른 변화

평점 기반 추천 (Highly Rated)

평점은 점수를 세분화하여 다양한 아이템 간의 비교를 용이하게 한다는 점에서 좋은 지표지만, 평가받은 빈도를 고려하지 못 한다는 단점이 있다.
각각 5번과 500번의 평가를 받은 두 아이템의 평점이 같은 5점일 때, 우리는 두 개의 5점을 다르게 받아들일 것이다.
충분히 많으 수의 평가를 받은 아이템에 더 신뢰가 갈 것이다.
이처럼 평점뿐만 아니라 신뢰성을 함께 고려하는 것이 중요하다.
게임 플랫폼 'Steam'의 게임 랭킹 알고리즘
게임의 순위를 매길 때 평균 긍정률(avg rating)을 사용한다.
리뷰 수가 충분히 많은 경우에는 두번째 텀이 0으로 수렴하게 되면서 평균 긍정률을 거의 그대로 점수에 반영한다. (로그함수에 마이너스를 취함으로써 리뷰 수가 높아지면 0에 수렴한다.)
하지만 리뷰 수가 적은 경우에는 두번째 텀이 점수를 보정하는 역할을 한다.
평점이 0.5보다 낮은 경우, 두번째 텀이 음수가 되면서 점수를 높게 만들고,
반대로 평점이 높은 경우 두번째 텀이 양수가 되면서 낮게 보정해준다.
0.5는 Steam에서 사용하는 점수가 0 또는 1이라 이 둘의 가운데 값인 0.5를 사용한 것이다.
Steam Rating Formula
score=avg rating(avg rating0.5)2log10(# of reviews)\text{score} = \text{avg rating} - (\text{avg rating} - 0.5) \cdot 2^{-\log_{10}(\# \text{ of reviews})}
avg rating=긍정 리뷰 수전체 리뷰 수\text{avg rating} = \frac{\text{긍정 리뷰 수}}{\text{전체 리뷰 수}}
Movie Rating Formula
score=avg rating(avg rating3.0)2log10(# of reviews)\text{score} = \text{avg rating} - (\text{avg rating} - 3.0) \cdot 2^{-\log_{10}(\# \text{ of reviews})}
avg rating=전체 평점의 합전체 리뷰 수\text{avg rating} = \frac{\text{전체 평점의 합}}{\text{전체 리뷰 수}}

Content-Based Filtering: CBF

추천하고자 하는 분야의 도메인 지식을 활용해 추천하는 방식
카카오톡 선물하기
사용자가 과거에 좋아했던 아이템들의 특징을 분석하여, 유사한 특징을 가진 새로운 아이템을 추천한다.
성별/연령별로 많이 팔리는 상품들을 모아 추천에 활용
추천 과정
1.
특징 추출
각 아이템의 고유한 속성을 벡터 형태로 표현한다.
영화라면 벡터 = [액션: 1, 코미디: 0, 드라마: 1] 처럼 다룰 수 있다.
2.
사용자 프로필 생성
사용자가 평가하거나 좋아한 아이템의 벡터들을 평균 또는 가중 평균하여 사용자 프로필을 만든다.
사용자 프로필 벡터는 사용자가 선호하는 특성을 나타낸다.
3.
유사도 계산
추천할 아이템과 사용자 프로필 간의 유사도를 계산한다.
일반적으로 코사인 유사도(Cosine Similarity)를 사용한다.
4.
추천 제공
유사도가 높은 아이템을 사용자에게 추천한다.
장점
개인화 - 사용자의 고유한 선호를 기반으로 하기 때문에 맞춤화된 추천이 가능하다.
새로운 사용자 문제 해결 - 사용자가 선호도를 제공하면 즉시 추천이 가능하다.
단점
새로운 아이템 문제 - 사용자가 기존에 평가한 적 없는 새로운 아이템은 추천하기 어렵다.
편향 - 사용자가 선호했던 카테고리에만 국한되어 다양성이 부족할 수 있다.

Knowledge-Based Filtering: KBF

사용자가 과거에 선호했던 아이템(예: 영화, 책, 음악 등)의 특성을 기반으로 새로 추천할 아이템을 선택하는 방식
사용자의 명시적인 요구사항과 도메인 지식을 활용하여 적합한 아이템을 추천하는 방식
사용자 선호도뿐 아니라 전문가의 지식이나 아이템의 특성과 사용자의 요구사항 간의 관계를 정의하여 추천한다.
상품 페이지 하단에 같은 카테고리에 있는 인기 상품 추천
추천 시스템이 도메인 지식과 규칙(예: "A라는 속성을 가진 상품은 B 속성도 함께 있어야 한다")을 이용해 추천을 제공한다.
추천 과정
1.
요구사항 정의
사용자가 특정한 요구를 명시적으로 입력하거나, 기존의 구매/선호 데이터를 바탕으로 요구사항을 추론한다.
여행 추천에서는 "해변 근처 호텔"과 같은 조건이 요구사항이 된다.
2.
규칙 및 제약 적용
도메인 지식을 바탕으로 사용자 요구사항에 맞는 필터링을 적용한다.
"이용 가능한 방이 있는 호텔 중 가격이 $100 이하" 같은 규칙.
3.
아이템 추천
요구사항과 규칙을 만족하는 아이템들만 추천 리스트에 포함한다.
장점
설명 가능성 - 추천 결과에 대한 이유를 명확히 설명할 수 있다.
복잡한 요구사항 처리 - 사용자 요구사항이 복잡한 경우에도 적합하다.
새로운 사용자 문제 해결 - 사용자의 과거 기록이 없어도 요구사항만으로 추천 가능하다.
단점
규칙 설계의 복잡성 - 도메인 지식을 모델링하는 데 많은 시간과 노력이 필요하다.
확장성 부족 - 규칙이 너무 세밀하거나 고정적일 경우 추천의 유연성이 떨어진다.

Collaborative Filtering: CF

협업 필터링(Collaborative Filtering)은 많은 사용자로부터 수집한 구매 패턴이나 평점을 기반으로 하여 다른 사용자에게 콘텐츠를 추천해 주는 방법
사용자들 간의 협업 데이터를 활용하여 추천을 제공하는 방식
"같은 아이템을 좋아하는 사람들은 다른 아이템도 비슷하게 좋아할 가능성이 높다"는 가정에 기반하여 추천을 수행한다.
집단 지성의 개념과 매우 유사하다고 볼 수 있다.

Memory-Based Algorithm

과거의 데이터(메모리)에 직접 접근하여 유사성을 계산하고, 이를 기반으로 예측이나 결정을 내리는 방법
자주 쓰이는 Similarity(유사도)
코사인 유사도 (Cosine Similarity)
* 평균 제곱 차이 유사도 (Mean Squared Difference Similarity)
피어슨 유사도 (Pearson Similarity)
user와 item의 데이터를 직접적으로 연관시키고 추천하기 때문에 설명성이 높고 적용이 용의하다.
히지만, 추천 결과를 생성할 때마다 많은 연산이 필요하다.
→ sparse한 data인 경우 성능이 저하되고(cold start 문제) 쉽게 확장할 수 없다.
User-Based Collaborative Filtering
비슷한 평가 패턴을 가진 사용자들을 찾아 그들의 평가 정보를 기반으로 새로운 추천을 생성하는 방식
: 사용자
: 아이템(영화), 특정 영화의 평점 데이터를 포함
: 사용자가 각 영화에 대해 평가한 평점
첫 번째 사용자는 Sherlock에 대해 평점 2를 부여.
빈 칸 (NA): 해당 사용자가 평가하지 않은 아이템 (≒ 예측해야 할 대상)
sim(u, v)
사용자 간의 유사도
유사도 계산을 통해 각 사용자가 다른 사용자와 얼마나 비슷한지를 나타내는 값이 포함
예측된 평점
원본 데이터에서 빈칸(NA)으로 나타난 부분에 대해 예측된 평점이 계산됨.
다섯 번째 사용자가 셜록을 평가하지 않았지만, 유사한 사용자의 평가 데이터를 기반으로 3.51로 예측되었다.
r^u,j=rˉu+vN(u)sim(u,v)×(rv,jrˉv)vN(u)sim(u,v)\hat{r}_{u,j} = \bar{r}_u + \frac{\sum_{v \in N(u)} \text{sim}(u, v) \times (r_{v,j} - \bar{r}_v)}{\sum_{v \in N(u)} |\text{sim}(u, v)|}
N(u)N(u): 사용자 u와 유사도가 높은 이웃 사용자들의 집합
rv,jr_{v,j}: 사용자 v가 아이템 j에 부여한 평점
rˉv\bar{r}_v: 사용자 v의 전체 평점의 평균
여기서 사용자 uuvv의 유사도는 다음과 같이 계산된다.
sim(u,v)=iIuv(ru,irˉu)(rv,irˉv)iIuv(ru,irˉu)2×iIuv(rv,irˉv)2\text{sim}(u, v) = \frac{\sum_{i \in I_{uv}} (r_{u,i} - \bar{r}_u)(r_{v,i} - \bar{r}_v)}{\sqrt{\sum_{i \in I_{uv}} (r_{u,i} - \bar{r}_u)^2} \times \sqrt{\sum_{i \in I_{uv}} (r_{v,i} - \bar{r}_v)^2}}
IuvI_{uv}: 사용자 u와 v가 모두 평가한 아이템들의 집합
ru,ir_{u,i}: 사용자 u가 아이템 i에 부여한 평점
rˉu\bar{r}_u: 사용자 u의 전체 평점의 평균

Model-Based Algorithm

수집된 데이터를 학습하여 예측 모델을 구축하고, 이를 통해 새로운 데이터에 대한 예측이나 결정을 내리는 방법
수집된 데이터를 기반으로 통계적 모델이나 머신러닝 모델을 학습하여 사용자와 아이템의 잠재 요인을 추정한다.
학습된 모델을 활용하여 사용자가 상호작용하지 않은 아이템에 대한 평점을 예측하거나, 선호도를 기반으로 아이템을 추천한다.
잠재 요인(Latent Factor) 협업 필터링 방법은 현재에도 자주 쓰이는 방법
user와 item 간의 평점 행렬 속에 숨어 있는 잠재 요인 행렬을 추출하여 내적 곱을 통해 사용자가 평가하지 않은 항목들에 대한 평점까지 예측하여 추천하는 방법
행렬 분해(Matrix Factorization)라는 방법을 통해 큰 다차원 행렬을 차원 감소시키는 과정에서 행렬에 포함되어 있는 잠재 요인을 추출할 수 있다.

Memory-Based vs Model-Based

특징
메모리 기반 알고리즘
모델 기반 알고리즘
데이터 활용 방식
과거 데이터 직접 활용
데이터 학습 후 모델 활용
유사도 계산
사용자/아이템 간 유사도
잠재 요인 기반 유사도
실시간 업데이트
용이
모델 재학습 필요
확장성
제한적
우수
예측 정확도
중간
높음
설명력
높음
낮음
메모리 기반 알고리즘은 단순하고 직관적이지만, 데이터 희소성 문제와 확장성에 한계가 있다.
반면, 모델 기반 알고리즘은 복잡한 패턴을 학습하여 높은 예측 정확도를 제공하지만, 모델 학습에 시간이 소요되고 추천 결과의 해석이 어려울 수 있다.

Hybrid Recommender System

컨텐츠 기반 추천시스템과 협업 필터링을 결합한 모델
두 가지 알고리즘을 모두 적용하여 아이템마다 가중평균을 구해 랭킹을 구하는 방법
한계 개선
콘텐츠 기반 필터링의 한계
사용자의 기존 선호도에만 의존하므로 추천의 다양성이 부족할 수 있다.
아이템의 특징을 정확하게 추출하기 어려운 경우가 있다.
협업 필터링의 한계
신규 사용자나 아이템에 대한 정보가 부족한 경우 추천이 어려운 Cold Start 문제가 발생한다.
데이터가 희소한 경우 추천의 정확도가 떨어질 수 있다.

가중치 혼합(Weighted Hybrid)

여러 추천 알고리즘의 결과에 가중치를 부여하여 최종 추천을 생성하는 방식
계산식
r^u,i=k=1Kwkr^u,i(k)\hat{r}_{u,i} = \sum_{k=1}^{K} w_k \cdot \hat{r}_{u,i}^{(k)}
r^u,i\hat{r}_{u,i}: 사용자 uu에 대해 아이템 ii의 최종 예측 평점
r^u,i(k)\hat{r}_{u,i}^{(k)}: 알고리즘 kkii에 대한 예측 평점
wkw_k: 알고리즘 kk에 할당된 가중치 (wk=1\sum w_k = 1)
KK: 결합된 알고리즘의 총 개수
계산 과정
1.
각 알고리즘(kk)의 결과를 독립적으로 계산.
2.
알고리즘 별 가중치(wkw_k)를 설정 (성능에 따라 동적 설정 가능).
3.
가중치 기반 합산을 통해 최종 추천 생성.
각 알고리즘의 신뢰도나 성능에 따라 가중치를 설정하며, 이를 통해 다양한 알고리즘의 장점을 조합할 수 있다.
콘텐츠 기반 필터링 결과에 70%, 협업 필터링 결과에 30%의 가중치를 부여하여 결합할 수 있다.

스위칭(Switching)

상황이나 사용자 특성에 따라 적절한 추천 알고리즘을 선택하여 적용하는 방식
조건부 함수
r^u,i={r^u,iCBFif cold start for user u,r^u,iCFotherwise.\hat{r}_{u,i} = \begin{cases} \hat{r}_{u,i}^{CBF} & \text{if } \text{cold start for user \(u\)}, \\ \hat{r}_{u,i}^{CF} & \text{otherwise.} \end{cases}
r^u,iCBF\hat{r}_{u,i}^{CBF}: 콘텐츠 기반 필터링(Content-Based Filtering)의 결과
r^u,iCF\hat{r}_{u,i}^{CF}: 협업 필터링(Collaborative Filtering)의 결과
구현 과정
1.
사용자 상태 (예: 신규 사용자, 평가 데이터 부족 등)를 분석.
2.
조건에 따라 알고리즘 선택.
3.
선택된 알고리즘을 실행하여 추천 생성.
신규 사용자에게는 콘텐츠 기반 필터링을, 기존 사용자에게는 협업 필터링을 적용할 수 있다.

캐스케이드(Cascade)

한 추천 알고리즘의 결과를 다른 알고리즘의 입력으로 사용하여 단계적으로 추천을 개선하는 방식
단계적 필터링
C1=Top-NCF(r^u,i),C2=RankCBF(C1)\mathcal{C}_1 = \text{Top-N}_{CF}(\hat{r}_{u,i}), \quad \mathcal{C}_2 = \text{Rank}_{CBF}(\mathcal{C}_1)
C1\mathcal{C}_1: 협업 필터링(CF)을 통해 생성된 상위 N개의 후보군
C2\mathcal{C}_2: 콘텐츠 기반 필터링(CBF)을 사용해 후보군을 재정렬한 최종 추천
필터링 과정
1.
첫 번째 알고리즘에서 상위 N개 후보를 선정 (C1\mathcal{C}_1).
2.
두 번째 알고리즘이 후보군을 세밀히 평가.
3.
최종 추천 리스트(C2\mathcal{C}_2) 생성.
초기 알고리즘이 후보 아이템을 선정하고, 후속 알고리즘이 이를 정교하게 필터링하거나 순위를 매긴다.
협업 필터링으로 후보 아이템을 선정한 후, 콘텐츠 기반 필터링으로 최종 추천을 생성할 수 있다.

피처 보강(Feature Augmentation)

한 알고리즘의 출력을 다른 알고리즘의 입력 특징으로 사용하여 추천의 정확도를 높이는 방식
특징 수식
fu=gCF(Ru),r^u,i=hCBF(fu,xi)\mathbf{f}_{u} = \mathbf{g}_{CF}(\mathcal{R}_{u}), \quad \hat{r}_{u,i} = h_{CBF}(\mathbf{f}_{u}, \mathbf{x}_{i})
fu\mathbf{f}_{u}: 협업 필터링으로 생성된 사용자 u의 특징 벡터
Ru\mathcal{R}_{u}: 사용자 u의 평가 기록
xi\mathbf{x}_{i}: 아이템 i의 콘텐츠 특징 벡터
hCBFh_{CBF}: 콘텐츠 기반 필터링 함수
생성 과정
협업 필터링으로 사용자 특징 벡터 생성 (fu\mathbf{f}_{u}).
콘텐츠 기반 필터링이 이를 입력으로 사용해 추천 생성.
알고리즘 간의 상호 보완 효과를 극대화할 수 있다.
협업 필터링으로 사용자 프로필을 생성하고, 이를 콘텐츠 기반 필터링의 입력으로 사용할 수 있다.