일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- FastSpeech2
- CF
- word2vec
- CV
- RecSys
- 백준
- matrix factorization
- SGNS
- 논문리뷰
- Collaborative Filtering
- Noise Contrastive Estimation
- Neural Collaborative Filtering
- Implicit feedback
- wavenet
- Negative Sampling
- Tacotron
- NEG
- TTS
- Item2Vec
- Skip-gram
- ANNOY
- 부스트캠프 AI Tech
- 추천시스템
- Ai
- BOJ
- ALS
- Tacotron2
- Dilated convolution
- Recommender System
- FastSpeech
- Today
- Total
devmoon
추천시스템 도입과 기초 본문
최근 인터넷이 점차 보급되는 것을 뛰어넘어 거의 모든 사용자들이 인터넷 서비스를 사용하고 상품들을 소비한다. 어떤 물건을 구매하기 위해서 직접 가서 상품을 구매하기보다 택배 배송을 서비스해주는 회사인 쿠팡 또는 SSG몰 네이버 쇼핑들을 사용하게 되며 음식을 먹게 될 때도 배민이나 요기요 같은 배달 서비스를 사용한다. 어떤 것을 구매하지 않고 소비할 수 있는 유튜브의 영상 콘텐츠와 웹툰의 만화들도 마찬가지이다.
위의 모든 IT 서비스들의 공통점은 소비할 수 있는 아이템이 매우 많다는 것이고 이에 따라 각 사용자들은 원하는 상품을 찾기 위한 더 효율적인 방법들이 필요해졌다. 먼저 사용자가 상품을 어떤 식으로 찾아 소비하는지에 따라 2가지 방식으로 나누는 것이 가능하다.
- Pull 방식 (Searching)
유튜브의 검색창, 쿠팡의 검색창들을 사용하여 사용자가 직접 상품을 찾아서 소비하는 경우를 말한다. 이런 경우에는 원하는 아이템에 대한 질의(Query)가 서버에 전달되어 처리된 결과들을 사용자에게 보여주는 형식으로 아이템들을 전달할 수 있다. - Push 방식(Recommend)
사용자가 의도를 가지고 직접 검색을 하지 않아도 먼저 데이터베이스에서 사용자가 관심을 가질만한 아이템을 선별하여 보여준다. 유튜브에서 어느정도 시청기록이 있을 때, 첫 시작화면에 연관된 영상들이 많이 보이는 것과 같다.
최근에 들어서 Push 방식인 추천시스템은 더 중요해졌고 그 필요성이 커졌다. 이전과 다르게 소비할 수 있는 상품의 수가 너무 많아졌으며 사용자가 일일이 하나씩 검색해서 찾기에는 너무 많은 시간이 소모되었다. 그보다 원하는 상품을 어떤 키워드를 사용하여 검색을 할지도 어려워지는 상황도 종종 발생하였다.
Long Tail Phenomenon
번역해서 긴꼬리 현상이라고도 불리는 말은 특정 상품 20%가 전체의 매출의 80%를 담당하는 현상에서 발생한 말이다. 사람들에게 인기가 많은 특정 소수의 상품이 많이 팔리는 것을 의미하는데, 추천은 이 문제를 해결하고자 한다. 인기 있는 상품을 추천하는 것도 도움이 될 수 있지만 더 개인화하여 Long Tail에 존재하는 사용자가 좋아할 만한 상품들을 찾아 보여주는 것이 매출을 크게 올릴 수 있다는 것이다.
그 예로, 아마존의 책 판매 현황을 보면 알 수 있는데, 아마존 서점에서 책 판매로 얻은 수익 중 절반 이상이 책 랭킹 13만 위 이상의 책들에서 발생된다고 한다. 이를 보면 각 사용자에게 더 맞는 상품을 추천하여 수익을 올리는 것이 절대 소수가 아님을 알 수 있다.
유튜브에서 Long Tail 추천을 살펴보자면, 내가 자주 보는 영상 제작자의 다른 영상이 인기가 없더라도 그것을 추천하거나 해당 영상과 관련된 다른 영상을 추천해주기도 한다. 특히 그 영상이 인기가 높지 않더라도 사용자에게 보이는 경우가 있으며 요즘에는 흔히 "유튜브 알고리즘"이라고 부르며 추천 시스템이 대중적으로도 많이 알려지게 되었다.
Facebook와 Instagram과 같은 SNS에서는 추천 친구 또는 추천 팔로워에 유명인사들 보다는 내가 알만한 친구들을 추천해주는데 마찬가지로 Long Tail 추천이라고 볼 수 있다. 소수의 많은 인기를 가진 유명인사들이 popular product라면, 팔로워가 많이 없어도 내가 알만한 친구들을 추천해주는 것은 Long Tail에서 추천됨을 알 수 있다.
그렇다면 이제 추천시스템은 과연 어떤 정보들을 사용해서 사용자에게 알맞게 추천을 해주는지 어떻게 추천을 하는지 알아봐야 한다. 추천 시스템에서 사용되는 정보는 크게 3종류로 분류할 수 있다.
- 유저에 대한 정보 : 나이, 성별, 거주지, 사용언어 등
- 아이템에 대한 정보 : 상품분류, 가격, 출시년도 등
- 유저와 아이템간의 상호작용 정보 : ex. 유저가 아이템을 구매했다. 유저가 아이템에 별점을 남겼다.
유저 관련 정보
유저에 대한 정보를 모아 수집하는 것을 유저 프로파일링이라고 한다. 프로파일링으로 생성된 유저 정보는 꼭 추천 시스템에만 반드시 사용되는 것은 아니고, 마케팅과 같은 다른 곳에서도 함께 사용되기도 한다. 유저 프로파일에 저장되는 대표적인 정보로는 식별자 정보(사용자의 고유 ID, 사용하는 디바이스의 ID, 개인정보 활용 동의를 얻고 수집한 브라우저의 쿠키)와 데모 그래픽 정보(성별, 연령, 지역), 유저 행동 정보(무엇을 보고 어떤 아이템에 평점을 남겼는지)들이 있다.
최근 들어 개인정보보호법이 강화됨에 따라 유저 관련 정보를 수집하기 어려워졌다. 성별과 연령정보조차 힘든 경우가 많아 이를 다른 정보들을 사용하여 추정하고 다시 이 추정된 정보를 사용해 추천에 사용되는 경우도 종종 있다. 하지만 딥러닝이 발전하면서 부족한 정보이더라도 더 정교한 추천을 진행할 수 있게 되었다.
아이템 관련 정보
아이템도 유저와 마찬가지로 아이템에 대한 정보들을 모아 수집하는 것을 아이템 프로파일링이라고 하며, 비교적 더 많은 정보들을 가지고 있을 수 있게 된다. 하지만 특별하게 어떤 아이템(상품)인지에 따라 수집되는 정보가 다름에 유의해야 한다. 예를 들어, 음악과 같은 경우 작곡가, 장르, 아티스트와 같은 정보들을 수집한다면 영화에서는 영화의 장르, 출연진, 감독, 평점, 개봉 연도들을 수집하게 된다.
유저 아이템 상호작용 정보
유저가 특정 아이템을 보거나 소비하게 되면 온라인에는 그 모든 기록이 저장된다. 그리고 그 기록들을 사용하여 추천 시스템을 학습시키게 된다. 이처럼 사용자가 어떤 아이템과 상호작용하여 얻은 정보를 유저 아이템 상호작용 정보라고 하며 피드백 데이터라고 부른다.
피드백 데이터는 그 종류에 따라 2가지로 분류가 가능하다. 실제로 사용자가 아이템을 소비했을 수 있지만, 온라인 쇼핑몰에서 검색을 하고 들어와서 상품설명을 보고 다시 나가는 경우가 많다. 이런 경우에는 기록만 남게 된다. 반면에 아이템을 구매하고 직접 평점과 후기를 올려 특정 아이템을 좋아하는지 싫어하는지 명식적으로 보여주는 경우도 있다. 이 관점에서 다음 2가지로 분류된다.
- Explicit Feedback : 사용자가 직접 아이템에 대한 의견을 남겼을 때 (ex. 좋아요, 싫어요, 평점 등)
- Implicit Feedback : ex. 특정 아이템을 클릭했을 때, 동영상을 일정시간 이상 시청한 기록
당연히 모든 사용자가 아이템을 구매하고 평점과 댓글을 남기지 않고, 영화를 보더라도 모두 평점을 매기는 것이 아니기 때문에 Explicit Feedback 데이터보다는 Implicit Feedback에 대한 데이터가 압도적으로 많다. 그렇기 때문에 추천 시스템을 학습하기 위해서는 Implicit Feedback을 잘 활용하는 것이 중요하다.
추천 시스템의 목적
추천을 한다고 하면 사용자에게 관심있어할 만한 아이템들을 추천하거나, 아이템을 기준으로 관련이 많은 사용자들을 매칭 하는 문제로 볼 수 있다. 그렇다면 "관심 있어할 만한"을 평가할 만한 기준이 필요하며 이에 따라 관심도에 대한 점수가 필요해진다. 이 점수는 어떻게 계산되고 사용되는지는 이제 추천 시스템이 풀어야 할 문제이다. 추천 시스템은 결국 유저에게 잘 맞을만한 아이템을 추천하게 되는데 아이템에 대한 순위를 매길 수 있는 랭킹 문제와 선호도를 예측하는 예측 문제로 나누어볼 수 있다.
Ranking
랭킹은 사용자에게 적합할 상위 아이템 K 개를 추천하는 문제로서, 사용자가 아이템에게 매길 정확한 선호도를 구할 필요는 없다. 결국 정확한 값이 아니더라도 대소 관계만 구분하면 되기 때문이다. 이때 사용하는 평가지표는 다음과 같다.
- Precision@K
- Recall@K
- MAP@K
- NDCG@K
Prediction
예측은 사용자가 아이템에게 가질 선호도를 정확하게 예측하는 것을 말하며 흔히 유저와 아이템 행렬의 빈칸을 채우는 문제를 푸는 것을 말한다. 각 빈칸은 유저가 어떤 아이템에 가질 선호도를 말한다. 이때 사용하는 평가지표는 다음과 같다.
- MAE
- RMSE
- AUC
현재는 각 추천문제가 어떤 문제를 풀게 되는지 까지만 소개하고 앞으로 각 평가지표와 추천 시스템에 사용되는 머신러닝 방법론, 딥러닝 방법론에는 어떤 것들이 있는지 심도 있게 살펴보고자 한다. 추천 시스템은 딥러닝의 NLP, CV의 분야와는 다르게 그대로 기업의 수익과 연결되는 경우가 많아 데이터를 잘 활용하여 좋은 추천 시스템을 사용하는 것이 중요하다. 이 때문에 기업에서도 현재 사용하고 있는 추천 시스템을 잘 발표하지 않는 경향도 많아 이전의 방법론부터 배워서 새로운 시각으로 바라보는 것이 중요하다고 느껴진다.
'AI > 추천 시스템' 카테고리의 다른 글
Content Based Recommendation / TF-IDF (0) | 2022.11.02 |
---|---|
연관 규칙 탐색 알고리즘 (2) | 2022.10.24 |
연관 규칙 분석 / support, confidence, lift (0) | 2022.10.22 |
인기도 기반 추천 (조회 / 평점) (0) | 2022.10.20 |
추천시스템의 평가 지표와 Offline/Online Test 방법 (0) | 2022.10.20 |