데이터 분석 이모저모 ~.~

통계 기반 비개인화 추천 알고리즘 본문

AI/추천시스템

통계 기반 비개인화 추천 알고리즘

jjangoocrush 2025. 12. 7. 22:28

추천 알고리즘의 종류에 대해서 살펴보려고 한다.

종류에는 비개인화 추천 알고리즘, 개인화 추천 알고리즘, Hybrid 추천 알고리즘, 딥러닝 알고리즘 등이 있는데,

제일 쉬운(?) 비개인화 추천 알고리즘 먼저 가져왔다.


 

추천 시스템은 보통 개인의 취향에 맞춰 상품이나 컨텐츠를 추천해주는 알고리즘이라 생각할 수 있지만,

사용자 개인에 대한 정보없이 인기도나 상품 간 연관성을 고려하여 추천해주는 방법인 '비개인화 추천 알고리즘'도 있다.

이러한 비개인화 알고리즘은 주로 사용자의 피드백 데이터가 없을 때 사용한다.

(피드백 데이터에는 리뷰, 평점, 좋아요/싫어요 등의 명시적 피드백 데이터, 클릭수, 체류시간, 검색기록 등의 암묵적 피드백 데이터가 있다)

오늘은 비개인화 추천 중에서 통계 기반 비개인화 추천 알고리즘인, 인기도 기반 추천, 조회수 기반 추천, 평점 기반 추천을 포스팅하려고 한다.

 

 

1. 인기도 기반 추천

 

말그대로 정말 인기있는 상품을 추천하는 것이다.

'인기'는 추상적인 개념이라, 평가할 수 있는 자료로 좋아요/싫어요 수, 리뷰수, 평점 같은 명시적 데이터를 사용할 수 있다.

 

아래는 네이버 쇼핑에서 '두바이 쫀득쿠키'를 검색했을 때 나오는 화면이다. 

디폴트로 나오는 '네이버 랭킹순'이 네이버 내부 알고리즘의 인기도 기반 추천이라고 할 수 있겠다 !

적합도 지수, 인기도 지수, 신뢰도 지수를 종합한 점수에 따라 맞춤 검색 결과를 보여주는데,

서비스에 가장 어울리는 규칙을 찾아야 소비자들의 추천 만족도가 올라간다.

[그림1] 네이버 쇼핑의 '네이버 랭킹순'

 

 

인기도 기반 추천을 뉴스에 적용한다면 '최신 뉴스는 평점 or 조회수가 없어 추천에 포함되지 않는다'라는 한계점이 있다.

뉴스는 핫한 이슈이면서 최근 소식을 보여줘야하는 데 말이다. 이 점을 보완한 것이 조회수 기반 추천이다.

 

 

 

2. 조회수 기반 추천

 

조회수 기반 추천은 조회수와 날짜를 조합한 점수를 만듦으로써 사용자에게 따끈하고 핫한 뉴스를 추천하는 방식이다.

뉴스, 영화, 음악 등을 추천할 때 적합하고, 원조 맛집, 관광지 등 오랫동안 인기를 얻어야 하는 분야에는 적합하지 않다.

 

조회수 기반 추천의 대표적인 알고리즘 Hacker News Algorithm을 소개해보겠다.

[그림2] Hacker News Website

 

$ score = \frac{pageviews -1}{(age + 2)^{gravity}} $

 

pageviews : 게시물에 대한 추천 수, 조회수, 댓글 수 등이 들어갈 수 있다. -1은 작성자 자신의 조회수를 제거하기 위함이다.

age : 현재 시각 - 기사 업로드 날짜. 시간 단위로 표시된다.

gravity : 중력 계수로, 오래된 기사일수록 score 값이 작아지도록 조정하는 상수이다. Hacker News에서는 1.8을 디폴트로 사용한다.

 

조회수가 높을수록 점수는 높아지지만, 시간이 지남에 따라 오래된 뉴스는 조회수가 높더라도 낮은 점수를 갖게 된다.

또한, 중력 상수가 클수록 시간의 흐름에 더 큰 영향을 받게 된다.

 

[그림3] Hacker News Score Graphs

 

[그림3]의 좌측 그래프는 중력 상수는 같지만 조회수가 다를 때, 시간에 흐름에 따라 점수가 어떻게 변하는지 보여준다.

시간의 흐름에 따라 조회수가 낮을수록 점수는 가파르게 하락하는 것을 볼 수 있다.

우측 그래프는 조회수는 같지만 중력 상수가 다를 때의 점수 변화를 보여준다.

시간의 흐름에 따라 중력 상수가 높을수록 점수는 가파르게 하락하는 것을 볼 수 있다.

 

 

3. 평점 기반 추천

 

평점 5점을 받은 아이템 A, B가 있다고 하자. A는 5명, B는 500명이 평가했다고 하면 어떤 걸 더 사고 싶은가?

당연히 충분히 많은 수의 평가를 받은 아이템이 더 신뢰가 갈 것이다.

이처럼 평점뿐만 아니라 신뢰성도 함께 고려하는 것이 평점 기반 추천이다.

 

대표적인 알고리즘으로는 Steam Game Algorithm 이 있다.

[그림4] Steam 내 일부 게임 상세

 

$ score = avgrating - (avgrating - 0.5) * 2^{-log(reviews)} $

 

avgrating : 긍정리뷰수 / 전체리뷰수

reviews : 전체 리뷰수

 

Steam에서 아무 게임이나 들어가면 [그림4]처럼 긍정 비율을 찾아볼 수 있다.

하지만 이 비율은 단순 평균 평점이 아니다. 두번째 텀을 보면 리뷰 수에 따라 점수를 보정하는 것을 알 수 있다.

리뷰 수가 충분히 많은 경우는 [그림 5]와 같이 보정항이 0에 수렴하면서 평균 긍정률이 그대로 점수에 반영하게 된다.

하지만 리뷰 수가 적을 경우, 보정항은 1에 수렴하게 되어 score가 0.5에 가까워지게 된다.

리뷰수가 적은 게임은 평점 신뢰도가 낮기 때문에 0.5(=중립)에 가까워지도록 패널티를 주는 방식이다.

(참고로 Steam에서 사용하는 점수는 0 or 1이다)

 

[그림5] Steam Game Algorithm 보정항 그래프

 

 

 


 

자 쉽쥬 ? 그렇다면 다음 포스팅은 뭐다 ?

??? : 개인화 추천 알고리즘 ~

 

[참고자료]

[입문/초급] 다양한 예제를 통한 추천 시스템 구현

https://news.ycombinator.com/

https://sungkee-book.tistory.com/10

 

 

'AI > 추천시스템' 카테고리의 다른 글

개인화 추천 알고리즘_Content-Based Filtering  (0) 2025.12.27
추천 시스템이란?  (0) 2025.12.06