※ 해당 포스팅은 머신러닝 완벽가이드 및 SKK KDT를 수강 후 내용을 요약하기 위함입니다.
1. 추천시스템이란?
2. 추천시스템의 유형
1. 추천시스템이란
추천 시스템은 사용자와 아이템(상품, 컨텐츠 등) 간 데이터의 활용, 사용자의 취향을 고려한 아이템(컨텐츠)를 추천하는 시스템을 통칭한다. 사용자의 선호도 및 과거 행동을 바탕으로 사용자가 흥미를 가질만한 콘텐츠를 제공하는 것 등의 의미를 뜻한다.
2. 추천 시스템의 유형
추천 시스템은 크게 정보 필터링, 연관성 분석, 기타 등으로 분류 할 수 있고 이때 정보 필터링은 콘텐츠 기반 필터링(Content based filtering) 과 협업 필터링(Collaborative Filtering) 방식으로 나뉜다.
기타 방식에는 통계 기반(Best Seller) 추천 시스템이 있고, 협업 필터링 방식은 최근접 이웃(Nearest Neighbor) 과 잠재 요인(Latent Factor) 방식으로 나뉘게 된다.
2.1. 통계 기반 추천 시스템(Best Seller)
손님 : 영화 추천해주세요!
직원 : 지금 예매율은 A 영화가 높아요
손님 : 어떤 영화가 재밌죠?
직원 : 지금 B 영화 시즌 3가 나왔습니다. 시즌 1, 시즌 2 모두 흥행했어요.
위 대화를 보면 손님 개개인 별로 어떤 취향을 추천해주는 것이 아니라 통계를 보고 추천해 주는 것을 볼 수 있다. 즉, 통계 기반 추천 시스템은 개개인의 맞춤 추천을 할 수 없다.
2.2.콘텐츠 기반 필터링 추천 시스템
콘텐츠 기반 필터링 방식은 사용자가 특정한 아이템을 매우 선호하는 경우, 그 아이템과 "비슷한" 콘텐츠를 가진 다른 아이템을 추천 하는 방식이다. 대표적인 예로 '네** 의 영화 랭킹'을 보면 해당 영화와 장르, 감독, 출연 배우, 키워드 등이 유사한 영화를 추천 하는 것이 이와 같은 방식이다.
2.2.1 협업 필터링 방식 추천 시스템
추천 시스템의 초창기에는 콘텐츠 기반의 필터링이나 최근접 이웃 기반 협업 필터링이 주를 이뤘다. 하지만 넥플릭스 추천 시스템 경연 대회에서 행렬 분해(Matrix Factorization) 을 이용한 잠재 요인 협업 필터링 방식이 우승하면서 이것이 주를 이루게 되었다.
협업 필터링 방식의 경우 통계 기반의 추천 시스템과 달리 아직 평가하지 않은 아이템을 예측 평가(Priedicted Rating) 하는 것이다. 이 방식은 사용자-아이템 평점 행렬 데이터에 의지하는데 행(Row)는 개별 사용자, 열(Column)은 개별아이템으로 구성 된다.
사용자-아이템 평점 행렬은 많은 아이템(column)을 가진 다차원, 희소 행렬(Sparse Matrix)의 특성을 가진다.
* 기본적인 레코드 레벨의 형태는 pandas 의 pivot_table(), groupby(), melt 등을 사용하여 "사용자-아이템" 평점 행렬 형태로 변경해야한다.
(1) 최근접 이웃 협업 필터링(Memery 협업 필터링)
사용자의 행동 양식(User behavior)"만"을 기반으로 하여 추천을 수행하는 것이다. 일반적으로 사용자 기반과 아이템 기반으로 세부적으로 나눌 수 있다.
- 사용자 기반은 나와 비슷한 패턴을 지닌 고객이 어떤 행동을 취했는지를 보고, 추천하는 형식이고
- 아이템 기반은 이 상품을 선택한 고객이 어떤 상품을 선택했는지 보는 것이다.
주로 쿠팡과 같은 사이트에서 보면 내가 한 상품을 장바구니에 담으면 이 상품을 담은 사람들이 이런 상품들도 구매했어요 하면서 추천해주는데 이를 아이템 기반의 추천이라고 보면 된다. 사용자 기반 및 아이템 기반 추천 모두 유사도(Similarity)를 측정하여 유사도가 높은 TOP-N을 추출 하여 추천하는 것이다. 이때 사용되는 유사도는 코사인(Cosine) 유사도가 많이 적용 된다.
일반적으로 사용자 기반 보다는 아이템 기반 협업 필터링이 정확도가 높기 때문에 최근접 이웃 협업 필터링의 경우 대부분 아이템 기반의 알고리즘을 적용한다.
(2) 잠재 요인 협업 필터링
사용자-아이템 평점 매트릭스 속에 숨어 있는 "잠재 요인"을 추출해 추천 예측을 할 수 있는 기법이다. 이때 "잠재 요인"은 명확하게 정의 할 수는 없지만 이것을 기반으로 "다차원 희소 행렬인 사용자-아이템 행렬 데이터"를 "저차원 밀집 행렬의 사용자-잠재요인" 행렬과 "저차원 밀집 행렬의 아이템-잠재요인"로 분해하고, 내적을 통해 새로운 "예측" 사용자-아이템 행렬 데이터를 만들어서 사용자가 아직 평점을 부여하지 않은 아이템에 대한 평점을 생성하는 것이 잠재 요인 협력 필터링 알고리즘의 주 내용이다.

여기서 factor들이 어떤 "잠재 요인" 인지는 알 수 없지만, 영화 평점 기반의 경우라 하면 장르별 특성 선호도 등으로 정의 할 수 있다. 잠재 요인 협업 필터링은 숨겨져 있는 '잠재 요인'을 기반으로 분해된 매트릭스를 이용해 사용자가 아직 평가하지 않은 아이템에 대한 예측 평가를 수행하는 것이다. 이때, 다차원 희소 매트릭스를 저차원의 매트릭스로 분해하는 기법을 행렬 분해(Matrix Factorization)이라고 한다.
'ML engineer > ML(Machine Learning)' 카테고리의 다른 글
[추천시스템] 행렬 분해 (0) | 2023.03.30 |
---|---|
[ML] Machine Learning 워밍업 (0) | 2023.03.14 |
댓글