어쩌다데싸
AI 추천시스템(Recommender Systems) 시작하기 본문
목차
지금까지 해왔던 분야인 추천 시스템과 LLM 중 앞으로는 추천 시스템에 집중하고 싶어 블로그 초창기에 작성했던 추천 시스템 관련 글을 다시 정리해보려 한다.
본격적인 글 작성에 앞서, 왜 추천 시스템을 선택했는지를 고민해봤다. AI 시장에는 다양한 도메인과 기술이 존재하지만, 모든 분야의 전문가가 되기는 어렵다. 그래서 적어도 오랫동안 지속할 수 있는 특화 분야를 정해야겠다는 생각이 들었다. SI 회사의 특성상 프로젝트마다 도메인과 기술이 다르지만, 다행히도 투입된 프로젝트마다 '추천 시스템'이라는 공통점이 있었다.
일 때문에 흥미를 갖기 시작했지만, 개인적으로도 전공인 경영학과 관련이 있으면서 현재에도, 미래에도 반드시 필요할 것 같은 분야가 추천 시스템이라 생각해 이를 집중적으로 공부해보려 한다.
1. 추천시스템이란?
세상이 발전할수록 우리는 무수히 많은 선택지에 대해 고민하게 되며, 추천시스템은 이렇게 많은 선택지 속에서 다음에 무엇을 하면 좋을지 선택하도록 의사결정을 도와주는 기술이다. '좋다'라는 것은 결국 가치의 문제인데, 가치를 정의하는 법에 따라 다양한 추천 알고리즘이 사용될 수 있다. 단순히 가장 많은 사람들이 구매한 제품을 추천할 수도 있고, 내가 과거에 구매했던 상품과 유사한 상품을 추천할 수도 있다. 각 알고리즘은 속도가 빠른 대신 예측도가 떨어지거나, 추천을 위해 방대한 학습데이터가 필요한 등 장단점이 있을 수 있어 비즈니스 목적에 맞게 알고리즘을 설계하는 것이 중요하다.
2. 추천시스템의 3요소
추천시스템을 구성하는 요소를 먼저 살펴 보자면, 크게 입력(데이터 입력), 프로세스(추천 설계), 출력(추천 결과) 3가지가 있다.
(1) 입력
입력, 즉 추천 알고리즘에 입력될 데이터는 크게 사용자 데이터, 아이템 데이터, 사용자-아이템 상호작용 데이터가 있다. 과거 참여했던 일자리 추천 프로젝트를 중심으로 설명하면 사용자 데이터는 구직자 관련 정보, 아이템 데이터는 구인공고(일자리) 관련 정보, 사용자-아이템 상호작용 데이터는 구직자가 구인공고를 조회 혹은 지원한 정보가 있었다.
사용자와 아이템 데이터는 콘텐츠 정보라고도 하는데 이러한 콘텐츠 정보를 이용하는 추천을 '내용 기반 필터링(content-based filtering)'이라고 부르고, 사용자와 아이템 상호작용 데이터인 인터랙션 정보를 사용한 추천을 '협업 필터링(collaborative filtering)'이라고 부르는데 자세한 내용은 추천 알고리즘에서 설명해보겠다.
(2) 프로세스
입력 데이터를 활용해 추천하는 방법을 정의하는 '프로세스'에는 크게 3가지 방법이 있다. 첫 번째는 개요 추천으로, 개인화 없이 모든 사용자에게 동일한 내용을 제시하는 방법이다. 상품 구매 페이지에서 인기순, 가격 낮은 순, 신규 아이템순 등을 통해 상품을 나열하는 방법이 대표적인 예다. 이 기술은 매우 간단하지만 거의 모든 판매 사이트에서 적용할만큼 보편적인 기술이고, 신규성이 중요한 업종에서는 개인화를 적용하는 것보다 더 높은 성과를 얻을 수도 있다. 하지만 아이템이 바뀌지 않는 경우에는 항상 거의 같은 아이템만 노출되기 때문에 효과적이지 않을 수 있어 상황이나 업종에 맞게 적용해야 한다.
두 번째는 연관 아이템 추천이다. 장보기나 웹툰 같은 콘텐츠를 소비할 때 많이 볼 수 있는 방법인데, '이 상품을 구매한 다른 소비자들이 함께 구매한 상품입니다.'와 같은 문구를 다들 한 번쯤 본 적이 있을 거다. 연관 아이템은 각 아이템 사이의 유사도를 사용해 추천하는 방식으로, 아이템의 콘텐츠 정보를 기반으로 설계(내용 기반 필터링 방법)하거나 사용자 행동 이력을 기반으로 함께 확인하기 좋은 아이템을 유사한 것으로 설계하는 방법(협업 필터링)이 있다. 일반적으로 전자보다는 후자의 방법이 카테고리나 키워드로 표현할 수 없는 아이템의 분위기나 콘셉트를 유사도에 반영한 경우가 많다. 하지만 해리포터 문제 등을 해결하기 위해 인기 아이템의 영향도를 제거해야 하는 경우도 있다.
* 해리포터 문제 : 대다수의 사람들이 좋아하는 아이템의 영향도가 커져 모든 추천 아이템에 해리포터같이 인기 아이템만 노출되는 문제
마지막은 개인화 추천인데, 사용자의 프로필이나 행동 이력을 기반으로 각 사용자에 맞춰 추천하는 것이다. 개인화 추천도 콘텐츠를 기반으로 하는 방법과 인터랙션 데이터를 활용하는 방법이 있으며, 둘을 모두 사용하는 방법도 있다. 일반적으로 사용자와 아이템의 인터랙션을 활용한 개인화 추천 시스템은 사용자의 흥미나 기호를 실시간으로 반영하기 때문에 예측도가 높은 편이라 각 기업에서도 이 데이터를 사용한 추천시스템 개발에 집중하고 있다.
(3) 출력
입력데이터와 추천 프로세스가 설계되었다면, 추천 결과를 어떻게 효과적으로 노출시켜야 하는지를 고민해야 한다. 추천 상품을 웹사이트에 제시하거나 메일로 보내는 등 추천 결과를 사용자가 거부감 없이 받아들이게끔 하는 연구는 필수적이다. 노출 화면 및 방법 뿐만 아니라 시간도 중요한데, 직장인이 많이 사용하는 사이트라면 퇴근 시간 이후인 6시 이후나 점심시간을 노리는 등 추천 결과를 많은 사람들이 관심을 가지게 하기 위해서는 적절한 시점도 함께 예측해야 한다. 추천 결과를 노출시킬 때는 UI/UX 팀과 협업해서 효과적인 노출을 할 수 있도록 해야 한다.
3. 추천 알고리즘 종류
추천시스템 알고리즘은 간단하게 규칙 기반으로 만드는 방법부터 머신러닝을 사용하는 방법 등 매우 다양하다. 어떤 알고리즘이 더 좋다고 단순히 비교하기보다는 현재 추천시스템을 도입하는 상황과 비즈니스 목적 등을 고려해서 추천시스템을 설계해야 하는데, 이를 위해서는 각 알고리즘의 특징에 대해 알아둘 필요가 있다.
앞에서도 언급했던 것처럼 추천 알고리즘은 크게 사용자와 아이템의 상호작용 데이터를 사용하는 협업 필터링(collaborative filtering)과 콘텐츠 정보를 기반으로 추천하는 내용 기반 필터링(content-based filtering)이 있다. (협업 필터링은 협조 필터링이라고도 부른다. 이 블로그에서는 협업 필터링으로 통일한다.)
(1) 협업 필터링
흔히 CF라고 불리는 협업 필터링은 사용자-아이템 상호작용 데이터(구매, 조회 등)를 사용해 새로운 사용자와 아이템의 연관성을 찾는 방법으로, 사용자의 과거 상호작용(행동)데이터가 있어야만 사용할 수 있다. 협업 필터링에는 크게 메모리 기반 방식과 모델 기반 방식 2가지가 있는데, 메모리 기반은 사용자 기반 접근 방식과 아이템 기반 접근 방식으로 또 나뉜다. 협업 필터링에 대한 자세한 내용은 다음 글에서 따로 다뤄보도록 한다.
(2) 내용 기반 필터링
내용 기반 필터링은 사용자의 정보나 어떤 아이템을 좋아하는지를 나타내는 사용자 정보와 아이템을 나타내는 특징의 아이템 정보 간의 유사도를 계산해서 사용자가 좋아할 아이템을 추천하는 방법이다.
예를 들어, 사용자 A가 코미디 영화를 좋아하고 이병헌 감독을 좋아한다고 하면 이병헌 감독의 코미디 영화인 '극한직업'을 추천해주는 셈이다. 이 때, 유사도를 계산하기 위해 사용자 정보와 아이템 정보가 갖고 있는 데이터(변수)가 같아야 유사도를 계산할 수 있다. (사용자 정보에 장르, 감독이 있다면 아이템 정보에도 장르와 감독이 있는 식으로)
(3) 협업 필터링 vs. 내용 기반 필터링
간략하게 내용 기반 필터링 방법과 협업 필터링을 비교해보면 다음 표와 같다.
- 다양성:
- 협업 필터링 : 다른 사용자가 알고 사용하는 아이템을 기반으로 추천할 수 있기 때문에 보다 다양한 아이템을 추천할 수 있다.
- 내용 기반 필터링 : 사용자가 알지 못하는 카테고리나 특징을 가진 아이템은 추천되기 어렵다는 단점이 있다.
- 도메인 지식 취급 비용:
- 내용 기반 필터링: 추천 서비스 운영자가 사용자가 어떤 특징을 중요하게 생각하는지 알고 있어야 더 적절한 추천이 가능하다.
- 협업 필터링: 사용자의 과거 행동 경험을 바탕으로 추천하기 때문에 아이템 자체나 사용자 자체의 속성이 필요하지 않아 비교적 도메인 지식이 없어도 사용 가능하다.
- 콜드 스타트 문제에 대한 대응:
- 콜드스타트 문제는 추천서비스를 운영하면 자주 마주하는 문제인데, 서비스에 사용자나 아이템 관한 정보(사용경험)가 적은 경우, 특히 신규 사용자나 신규 아이템에 관해 적절한 것을 추천하기 어려운 문제를 말한다.
- 협업 필터링: 사용자의 과거 행동 데이터가 없으면 추천할 수 없어 콜드 스타트 문제를 해결할 수 없다.
- 내용 기반 필터링: 아이템의 속성 정보와 사용자의 속성 정보가 있다면 충분한 정보는 아니더라도 추천이 가능하기 때문에 어느 정도는 콜드 스타트 문제를 해결할 수 있다.
- 커버리지 향상:
- 협업 필터링: 한 번도 행동(구매, 조회 등)이 일어나지 않은 상품은 추천되지 않아 서비스 상에서 추천되는 상품에 제한이 생긴다.
- 내용 기반 필터링: 사용자 속성과 관련 있는 아이템이라면 어떤 아이템이든 추천될 수 있기 때문에 추천되는 아이템 범위를 넓힐 수 있다.
- 아이템 특징 활용
- 협업 필터링: 속성 데이터 없이 상호작용 데이터만 사용한다.
- 내용 기반 필터링: 사용자와 아이템 속성을 사용해 추천한다.
- 예측 정확도:
- 협업 필터링: 다수가 사용하는 서비스에서는 협업 필터링이 더 높은 예측 정확도를 갖는다. 사용자의 과거 경험 데이터를 활용해 예측 정확도를 높일 수 있기 때문이다.
- 내용 기반 필터링: 사용할 수 있는 데이터가 한정적이므로 협업 필터링에 비해 예측 정확도가 떨어질 수 있다.
내용 기반 필터링과 협업 필터링의 장단점이 달라, 상황에 맞춰 함께 사용하는 경우도 많다. 실제로 학과 추천 프로젝트를 진행했을 때, 과거 이력이 없는 사용자에게는 우선적으로 내용 기반 필터링 기법을 통해 추천하고 해당 사용자의 기록이 쌓인 후에는 협업 필터링을 사용하는 등을 통해 콜드스타트 문제를 해결하는 방식으로 두 방법을 함께 사용했다.
오늘은 추천시스템을 시작할 때 알면 좋을 내용을 간단하게 정리해보았다. 추천시스템은 머신러닝을 사용한 방법, 딥러닝을 사용한 방법 등 다양한 알고리즘으로 풀어갈 수 있지만 큰 틀은 내용 기반 필터링과 협업 필터링을 벗어나지 않는다. 다음에는 추천시스템에서 보편적으로 사용되는 협업 필터링에 대해 자세히 다뤄볼 예정이다.
< 참조문헌 >
- 가자마 마사히로, 이즈카 고지로, 마쓰무라 유야, 「추천 시스템 입문」, 김모세, 한빛미디어, 2023, p25, p87
'Recommedation System' 카테고리의 다른 글
효과적인 선호도 예측 : DeepFM (feat. Factorization Machine) (5) | 2024.11.02 |
---|---|
추천 알고리즘 : 콘텐츠 기반 필터링(CBF)과 협업 필터링(CF) (3) | 2024.10.26 |
추천시스템(Recommender System) 간단 정리 (0) | 2021.07.16 |