목차
추천 알고리즘
사용자가 선호할 만한 아이템을 추측하여 적합한 특정 항목을 제공해 주는 기본적인 알고리즘에는
콘텐츠 기반 필터링(Content-based filtering)과 협업 필터링(Collaborative filtering) 이 있다.
콘텐츠 기반 필터링은 '콘텐츠의 특성 자체'를, 협업 필터링은 사용자의 '행동 기록'을 분석하여 추천한다.
콘텐츠 기반 필터링
콘텐츠 기반 필터링은 콘텐츠(아이템)의 특성과 사용자의 선호도를 비교해 추천하는 방식이다.
장점
- 다른 유저의 데이터가 필요하지 않다.
- 추천할 수 있는 아이템의 범위가 넓다. 즉 새로운 아이템이나 인기 없는 아이템도 추천이 가능하다.
- 추천하는 이유를 제시할 수 있다. ex) 아이템의 특징으로 분석하기 때문에 어떤 특징이 추천의 이유가 되었다고 설명이 가능하다.
단점
- 적절한 특징을 찾기가 어렵다.
- 새로운 유저를 위한 추천이 어렵다. ex) 새로운 유저의 데이터가 존재하지 않거나 데이터가 부족하다면 해당 유저에게 추천 시스템을 적용하기 어렵다.
- 선호하는 특성을 가진 항목을 반복 추천한다.
협업 필터링
협업 필터링은 특정 집단에서 발생하는 '유사한 사용행동'을 파악하여, 비슷한 성향의 사람들에게 아이템을 추천하는 기술이다.
성향이 비슷하면, 선호하는 것도 비슷할 것이라는 가정을 전제로 한다.
협업 필터링은 1. 사용자 기반 협업 필터링(User-based CF) , 와 2. 아이템 기반 협업 필터링(Item-based CF)으로 구분된다.
1. 사용자 기반 협업 필터링 : 나와 성향이 비슷한 사람들이 사용한 아이템을 추천해 주는 방식이다.
- ex) 사용자 A가 온라인 몰에서 치킨, 피자 그리고 콜라를 구매하고 B가 치킨과 콜라를 구매했다고 가정할 때, 알고리즘은 구매 목록이 겹치는 이 두 사용자가 유사하다고 판단해, 사용자 B에게 피자를 추천한다.
대표적으로 페이스북, 링크드인 등 대다수의 SNS '친구 추천' 서비스 역시 이와 같은 서비스를 적용한다.
2. 아이템 기반 협업 필터링: 내가 구매하려는 물품과 함께 구매된 경우가 많은 아이템을 추천해 주는 방식이다.
- ex) 공책과 볼펜을 함께 구매하는 소비자가 많다면, 공책을 구매한 사용자에게 볼펜을 추천한다. 이때 두 상품의 특징은 파악하지 않는다.
즉 공책과 볼펜이 사무용품인지, 서로 같이 관용되는 관계인지 등은 고려하지 않는다. 다만 두 제품이 같이 구매된 기록이 많기에 새로운 사용자에게도 추천할 뿐이다.
장점
- 많은 사용자에게서 얻은 기호 정보로 새로운 아이템을 추천한다.
- 직관적으로 이해하기 쉽고 합리적으로 보인다.
단점
- 콜드 스타트(Cold start): 새로운 아이템이나 사용자가 추가되면, 충분한 사용기록이 확보될 때 까지는 적절한 투표를 하기 어렵다.
- 롱테일(Long tail): 인기 편향성의 문제라고도 하며, 사용자가 소수의 아이템만 선호하여 대다수의 비인기 아이템들은 추천을 위한 충분한 정보가 쌓이지 못한다.
- 계산 효율 저하: 협업 필터링은 계산량이 비교적 많은 알고리즘 이기 때문에 사용자 수가 많은 경우 게산이 몇 시간에서 길게는 며칠까지 소요되기도 한다.
아래는 영화를 콘텐츠 기반 필터링을 기반으로 파이썬으로 구현해본 게시글이다.
'ETC' 카테고리의 다른 글
[python] iterable 과 iterator 의 의미와 차이 (0) | 2021.11.03 |
---|---|
[python] turtle, 세마리의 거북이 충돌없이 이동하기 (0) | 2021.10.24 |
영화추천 알고리즘(Movie-Recommender) 파이썬으로 구현해보기 (0) | 2021.10.24 |
[c++] class 에서 멤버 변수를 초기화 하는 세가지 방법 (0) | 2021.10.20 |
[수치해석] [c++,python] LU 분해(LU decomposition) 구현하기 (0) | 2021.10.20 |
[수치해석] [c++,python] 가우스 소거법(Gaussian Elimination) 구현하기 (0) | 2021.10.20 |
댓글