일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 인과추론 무작위 실험
- Recsys
- CausalInference
- 인과추론
- 인과추론개요
- mathematicalthinking
- 네카라쿠배당토
- recommendation system
- 데이터분석가
- BigQuery
- 잠재적결과
- 글또10기
- SQL
- 베이지안통계
- 빅쿼리
- chatGPT
- 선형대수학
- 실무로통하는인과추론
- 수학적해석학
- 코세라
- Bayesian
- 데이터분석가 코딩테스트
- 독후감
- 데이터분석
- 티스토리챌린지
- 오블완
- 데이터 분석
- DataAnalyst
- 벡터
- 나의서양미술순례
- Today
- Total
Derek 의 데이터 분석 성장기
[추천시스템] 1. 추천시스템(Recommendation System) 개요와 실무 적용 방법 본문
1. 추천시스템 소개
나는 너가 뭘 좋아할지 알고 있다.
추천이란 말은 이제 너무나 우리에게 익숙한 단어입니다. 유튜브, 인스타그램, 쿠팡, 네이버 등 우리가 사용하는 모든 서비스에 적용되어 있는 추천은 유저가 좋아할만한 상품 혹은 컨텐츠를 제안하고 있습니다.
추천시스템이란, 유저 선호도 및 과거 행동 데이터를 바탕으로 개인의 취향에 맞는 관심사를 제공하는 분야를 말합니다. 추천 시스템은 무엇보다 유저와 서비스 제공자에게 모두 이점을 제공합니다.
유저 : 원하는 상품 및 컨텐츠를 찾는 시간을 절약. 본인도 몰랐던 상품이나 컨텐츠를 새로 찾을 수 있는 기회 제공
서비스 제공자 : 유저 맞춤화 상품 제공을 통한 매출 및 서비스 이용 증대
추천시스템은 고객에게 맞춤화된 서비스를 제공합니다. 하지만, 랭킹 시스템이란 것도 존재하는데요! 랭킹 시스템은 말 그대로, 사용자에게 인기가 가장 많은 Top N 개의 상품이나 컨텐츠를 제공하는 것을 의미합니다.
EX) 이번주 인기 상품, 카테고리 별 최대 판매 상품을 의미합니다.
랭킹 시스템 또한 추천시스템과는 다르지만, 유저의 상품 탐색과 발견. 그리고 인기 상품 제공을 통한 매출 및 서비스 이용 증대를 도모할 수 있습니다. 하지만, 랭킹 시스템을 구축할 때는 인기 상품 고정화, Cannibalization(자기시장잠식 = 동종 상품 잠식) 등을 고려해야 합니다.
추천 시스템과 다르게 랭킹 시스템 또한 서비스나 데이터 사이언스 관점에서 굉장히 중요합니다. 도메인 특성 에 맞게 룰베이스 로직을 구축해줘야 합니다.
하지만, 랭킹은 추천과 다르기 때문에 소개에서 더이상 다루진 않을 예정입니다!
2. 방법
RecSys(Recommendation System) 은 크게 위 사진과 같은 계층 구조를 가집니다.
2-1.내용 기반 필터링
2-2.협업 필터링
- 모델 베이스 필터링
- 메모리 베이스 필터링
2-3. 하이브리드 필터링
등의 계층 구조를 가지지만, 이외에도 지식 기반 필터링, 딥러닝, 룰베이스 등 각 목적과 알고리즘 특성에 맞게 방법론을 구축할 수 있습니다.
2-1. Content-Based Filtering(내용 기반 필터링)
컨텐츠 기반 필터링(내용 기반 필터링) 은 아이템의 속성을 분석하여, 새로운 아이템을 추천해주는 방법입니다. 유저 A가 관심을 가진 상품과 가장 비슷한 상품을 추천해주는 방식입니다. 예를 들어, 제가 우마뭉이란 브랜드 상의 제품을 구매 했을 경우에
우마뭉 상의와 비슷한 우마뭉 하의를 추천해주는 방식입니다. 유저 A가 구매한 상품과 유사한 상품을 추천해는 방식으로서 (아이템의 메타태깅 정보) 등을 활용해서 추천을 진행합니다. 중요한 점은 유저 Action LOG 같은 정보를 사용하지 않았다는 점입니다. 뒤에서 설명할 Collaborative FIltering(Item-Based)와 다른 점은 유저의 정보를 사용하지 않았다는 점 입니다.
컨텐츠 기반 필터링은 아이템의 Feature 추출하는데 핵심을 둡니다. TF-IDF, Word2Vec 과 같은 아이템의 간의 유사도(Similarity)를 발견하기 위한 Feature Extraction 방법론이 사용 됩니다. 주로, 뉴스나 책 같은 상품을 추천해주는 도메인에 사용됩니다.
- 장점 : 유저의 선호도나 로그 정보가 필요 없다. 아이템 정보만으로 추천을 가능하게 한다. 만약, 유저 로그가 적은 도메인 및 서비스에서는 컨텐츠 기반 필터링이 적합할 수 있다.
- 단점 : 아이템간의 유사도를 설명할 수 있는 메타 데이터를 구축해야 한다. 책이나 뉴스는 문서 안에 비슷한 Word2Vec 같은 방식을 활용 해야 하나, 메타 데이터 구축이 쉽지 않거나 정확하지 않을 수 있다.
2-2. Collaborative Filtering(협업 필터링)
협업 필터링은 위의 도표 처럼 유저-아이템 간의 관계(User-Item Interaction) 로 부터 상품을 추천하는 방식이다. 사용자 그룹을 형성 해놓고 그들이 구매한 상품, 평가 점수, 선호도를 고려하여 서로 접하지 않은 상품을 추천해주는 방식.
EX) 집단속에서 유저끼리 구매한 상품이 비슷할 때, 그걸 구매하지 않은 유저에게 비슷한 상품을 구매한 유저에게 그 유저가 구매하지 않은 상품을 추천해줌
- 장점 : 내용 기반 필터링 처럼, 아이템 메타 데이터가 필요가 없음.
- 단점
- 1. Cold Start(새로운 유저 or 새로운 아이템) 은 초기 도입시, 데이터가 발생하지 않는다. 이와 같은 상황에서, 새로운 아이템이나 새로운 유저는 적합한 아이템을 추천받기가 힘듦
- 2. Sparsity(희소행렬) 문제가 발생. 위와 같은 데이터 Matrix를 구축할 경우 유저와 아이템 사이에는 경험/구매해보지 못한 상품 데이터가 대부분을 차지한다. 희소행렬이 많게 될 경우, 적합한 상품을 추천받지 못할 수 있음. 대부분의 상품을 구매나 경험해보지 못했기 때문이다. 그리고, 이는 추천시스템 성능 악화 및 불필요한 데이터 연산을 만들게 된다.
쿠팡을 예로 들자면, 쿠팡에 1,000,000 개의 상품이 존재할 경우 유저 A는 999,999 개의 상품을 구매해보지 못했을 가능성이 높고. 이는 희소행렬이 발생하게 됨. - 3.Scalability(확장성) : 유저와 아이템 수가 많아질수록 위와 같은 데이터 Matrix 는 M(유저) * N(아이템)의 수가 많아아 진다. 협업 필터링을 활용할 때, 큰 연산량이 발생하게됨.
- 해결 방법
- Cold Start 유저에게는 위에서 언급한 랭킹시스템(인기상품)을 추천해주는 방식으로 대체 한다.
- 희소행렬을 해결하기 위해 행렬분해 방법등을 활용한다. (링크)
- 구매한 상품에 대한 데이터가 없을 경우라도 Click 이나 Impress 등 다양한 LOG를 활용해서 추천 시스템을 구축할 수 있다.(하지만 성능은 낮을 수 있음)
2-2-1. Memory Based Filtering
위에서 구축한(유저와 아이템 행렬) 로부터 도출되는 유사도 기반으로 아이템을 추천해주는 방식을 의미한다.
여기에는 2가지 방법이 존재한다.
1. User-Based Filtering : 유저간의 선호도(영화 리뷰 점수 or 아이템 구매 이력)을 비교하여 상품을 추천해주는 방식을 Use-Based Collaborative Filtering 이라 부른다. 만약, 유저 A가 [ 아일랜드, 블레이드, 존윅3] 에 대해 [5,4,4] 라고 평점을 줬다고 가정해보자. 유저 B는 [아일랜드, 블레이드, 셜록] 에 대해 [5,4,2] 라고 평점을 줬다. 유저 B는 유저 A와 비슷한 영화 선호도를 가지고 있다. 때문에, 유저 B에게 유저 A가 본 존윅3를 추천해주는 방식이다. 이와 같이 유저간의 유사도를 기반으로 상품을 추천해주는 방식이다.
2. Item-Based Filtering : 위 Used-Based 와는 반대로 아이템 관점에서 추천을 하는 방식이다. 아이템간의 유저 목록을 비교하여 상품을 추천해주는 방식이다. 만약, 영화 투모로우를 시청하고 평가한 유저가 [A,B,C,D] 이다. 투모로우 아이템 관점에서, 투모로우를 시청한 유저의 목록을 비교한다. 영화 존윅3는 유저 [A,B,C,E] 가 시청하고 평가했다. 그렇다면, 유저 D에게 아이템 존윅3를 추천해주는 방식이다.
위 개념이 헷갈릴 수 있지만, 추천의 관점이 유저인가 혹은 아이템 관점인가를 생각해보면 된다.
* 그 외, 협업 필터링과 내용 기반 필터링의 차이
협업은 유저나 상품간의 비슷한 유사도를 기반으로 추천. 반면, Content Based 는 상품간의 유사도를 기반으로 추천해준다.
2-3. Hybrid Filtering(하이브리드 필터링)
콘텐츠 기반 필터링과 협업 필터링은 각 장단점이 있습니다. 때문에 두 방법을 같이 활용하는 방법을 Hybrid Filtering이라고 합니다.
다양한 방법이 있지만, 데이터가 적은 초기단계에는 콘텐츠 기반 필터링으로 하다가 어느정도 데이터가 누적이 되면 협업 필터링으로 변경하는 것으로도 활용하고 있다고 합니다.
뿐만 아니라, 추천 알고리즘의 장점을 결합하여 Layer & Layer 로 구축하는 것 또한 하이브리드 필터링이라 부를 수 있습니다.
2-4. 기타 방법론
그 외에는, 지식 기반 필터링(Knowledge-Based Filtering) : 특정 분야 전문가의 도움을 받아, 그 분야에 대한 전체적인 지식 구조를 만들어서 활용하는 방법 또한 존재합니다.
휴리스틱한 방법을 의미하기도 합니다. 예를 들어 컴퓨터에 대한 추천 시스템을 구축한다고 가정 할 때 전문가 도움을 받아, A 고객이 PC를 구매하는 프로세스에서 PC와 유사한 상품은 모니터, 키보드, 프린터 등 다양할 것 입니다. 그 중에서도, 모니터가 보다 PC 구매에 필수적이기 때문에 모니터를 추천해주는 방식을 적용하고도 합니다.
하지만, 모든 상품에 대해 이런 룰베이스를 적용할 수 없습니다. 하지만, 추천 시스템 구축 이후 도메인 담당자가 휴리스틱한 액션을 Layer 로 구축하는 것은 좋은 방법중 하나일 수 있습니다.
또한, 위 방법 외에도 딥러닝(신경망, CNN, RNN 등)을 활용하여 예측도가 높은 방법으로 상품을 추천해줄 수 있습니다. 또한, 딥러닝은 다양한 입력변수(이미지, 음성)등을 추천 데이터로 활용하는데 유용합니다.
3. 추천에 대한 나의 생각
- 알고리즘
우선, 추천 시스템에는 다양한 방법론과 알고리즘이 있지만, 대표적으로 Matrix Factorization(행렬 분해) 방법이 많이 이용되고 있다. 위에서 구축한 User-Item 간의 행렬에서 잠재행렬을 발견하여 유저에게 상품을 추천해주는 방식이다.
그 외에도 Amazon 에서는 Personaliation 혹은 자체 FM 알고리즘을 구축하여 서비스를 제공하고 있다. 또한 Deep FM 딥러닝 방식도 제공되고 있다. 하지만, 이와 같은 방식들은 대체적으로 위에서 언급한 MF 모델에서 파생되고 파인튜닝 된 방식들이다.
- 생각
추천시스템의 궁극적 목표는 고객이 탐색하고자 하는 상품을 빠르고 정확하게 추천해주고 구매로 전환 시키는 것이다.
위에서 언급한 알고리즘을 알고 응용하는 것은 필수이지만, 어떤 알고리즘을 활용하더라도 위 목표와 문제해결에 부합하지 않는다면 딥러닝이 아무리 성능이 좋더라도, 해당 모델은 유용하지 않을 수 있다.
그리고, Carousel(캐러셀) 별로 추천시스템이 다르게 적용 될 수 도 있고, 위에서 언급한 카니발리즘을 최대한 피해야 한다.
캐러셀이란?
캐러셀(Carousel)은 웹사이트나 앱에서 여러 개의 이미지, 비디오, 텍스트 등의 콘텐츠를 일정한 간격으로 순서대로 보여주는 UI 요소입니다. 일반적으로 웹페이지나 앱의 상단이나 중앙에 배치되며, 사용자는 좌우 화살표나 점(indicator)을 클릭하여 다음 혹은 이전 콘텐츠로 이동할 수 있습니다.
추천과 랭킹시스템을 목적에 맞게 캐러셀 특징 별로 구축을 해야 한다. 궁극적으로 한 페이지가 상품 탐색 > 발견 > 구매로 이어지는 끝없는 회전목마 속에서 유저 경험을 극대화 시키는 것이 추천의 목적이다.
또한, 개인화가 첨가될수 있다. 추천시스템에 더불어 유저 특성별로 개인화된 필터 Layer를 적용하여 한 단계 Depth 있게 추천을 해줄 수 있다.
궁극적으로 추천시스템을 구축하는데 있어서는 하나의 웹/앱 페이지의 큰 나무를 그리고, 나무안에 있는 가지(인기상품, 추천상품, 개인화 상품, 찜하기, 카테고리) 별로 알맞게 알고리즘을 구축하느냐에 성패가 달린 것이라 생각한다.
우리 생활에 추천시스템이 적용되지 않는 분야는 없다. 그만큼 필수적이고, 가장 효과적인 시스템이다. 때문에 추천에 대한 이해도를 갖고 응용할 줄 아는 능력은 중요한 부분이라 생각한다.
* 추천 성능 지표 : RMSE(Root mean Squared Error) : (실제 값 - 예측값) 제곱합 / n 에 루트를 씌운다. 좋은 추천 시스템일수록 실제값과 예측값 차이가 적을수록 성능이 좋다. 또한, Accuracy. 혹은 고객 별로 추천받은 상품과 고객의 LOG 를 기반으로 상품의 매칭 정보를 하나의 Metric 으로 구축할수도 있다. 또한, 대표적인 CTR, CVR, 찜하기 등의 수치를 통해서도 추천 시스템의 성능을 비교해볼 수 있다.
* 기타 참고해보면 좋을만한 링크 : 쿠팡의 추천 변천사, 다른 글, MF, MF 좋은 설명
'Data > 추천' 카테고리의 다른 글
[추천시스템] 2. 인기도 기반 (1) | 2024.03.30 |
---|