Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 파이썬 머신러닝 완벽 가이드
- 스파르타코딩
- 회귀분석
- 스파르타
- 중회귀모형
- wil
- TiL
- 실전 데이터 분석 프로젝트
- 파이썬 완벽 가이드
- 웹 스크랩핑
- 프로젝트
- 파이썬
- 오블완
- 내일배움
- R
- 파이썬 철저입문
- 티스토리챌린지
- 파이썬 머신러닝 완벽가이드
- 스파르타 코딩
- 내일배움카드
- 프로그래머스
- MySQL
- harkerrank
- 파이썬 철저 입문
- hackerrank
- Cluster
- 미세먼지
- SQL
- 내일배움캠프
- 텍스트 분석
Archives
- Today
- Total
OkBublewrap
추천시스템 (2): 협업필터링 본문
최근접 이웃 기반 협업 필터링
협업 필터링(Collaborative Filtering, CF)이란?
- 사용자들이 아이템과 어떤 상호작용을 했는지에 대한 데이터를 분석하여 추천을 수행하는 방식
- 사용자 간 또는 아이템 간의 유사성을 이용하여 추천하는 방식
- 나와 비슷한 취향을 가진 사용자가 좋아한 아이템은 나도 좋아할 가능성이 높다는 원리
협업 필터링 vs. 콘텐츠 기반 필터링
협업 필터링 | 콘텐츠 기반 필터링 | |
추천 방식 | 유사한 사용자 또는 아이템 기반 추천 | 사용자가 선호하는 아이템의 특징에 기반한 추천 |
주요 데이터 | 사용자-아이템 간의 상호작용 데이터 (평점, 클릭, 구매 이력 등) |
아이템 메타데이터(장르, 키워드, 설명 등) |
사용자 콜드스타트 | 상호작용 이력이 없으면 추천 어려움 | 콜드스타트 문제가 상대적으로 적음 |
아이템 콜드스타트 | 아이템이 충분한 평가를 받아야 가능함 | 아이템의 특징만 있으면 바로 추천 가능 |
추천의 다양성 | 인기 아이템 추천 경향 | 유사한 콘텐츠만 추천되는 문제 발생 (의외성 부족) |
설명 가능성 | 추천 이유를 설명하기 어려움 | 추천 근거를 설명하기 용이함 |
⇒ 콘텐츠 기반 필터링은 아이템의 속성(메타데이터)에 의존한 추천이고, 협업 필터링은 사용자가 직접적으로 선호를 표현한 인터랙션 데이터를 기반으로 잠재된 유사성을 파악하는 방식
전통적인 협업 필터링 vs. 머신러닝 기반 협업 필터링
- 전통적인 협업 필터링 vs. 머신러닝 기반 협업 필터링
: 비슷한 사용자 또는 비슷한 아이템을 찾기 위해 수학적 거리를 계산하는 방식 - 머신러닝(모델) 기반 협업 필터링
: 행렬 분해 또는 딥러닝을 활용하여 사용자와 아이템의 숨겨진 패턴을 학습하는 방식. 잠재요인 협업 필터링이라고 하기도 함 - 공통적으로 사용자 - 아이템으로 구성된 상호작용 행렬을 데이터 사용함
- 추천시스템은 기본적으로 행렬 대부분이 0원소로 구성된 희소 데이터(Sparse Data)
- 희소 데이터를 어떻게 처리하느냐에 따라 연산 효율과 성능 모두 좌우된다.
최근접 이웃 방식 협업 필터링
- 전통적인 협업 필터링의 핵심 = 유사한 사용자 또는 유사한 아이템을 찾는 것
- 코사인 유사도, 피어슨 상관 계수 등으로 유사도를 계산하여 최근접 이웃을 찾아 추천
- 유사도를 계산하는 기준에 따라 사용자 기반 협업 필터링과 아이템 기반 협업 필터링으로 구분
사용자 기반 협업 필터링 (User-Based CF)
- 나와 비슷한 취향을 가진 가까운 사용자를 찾아 추천
- 나와 비슷한 아이템들을 좋아한 사람이 본 다른 아이템을 추천 받음
아이템 기반 협업 필터링 (Item-Based CF)
- 내가 좋아한 아이템과 유사한 아이템을 찾아 추천
- 아이템 간 유사도 계산 → 특정 사용자가 평점을 높게 준 아이템을 기준으로 유사한 아이템 탐색 → 그 아이템을 사용자가 보지 않았다면 추천
- B가 선호하는 아이템(평점이 가장 높은 아이템)과 유사한 패턴을 보이는 아이템을 추천
장점
- 아이템의 메타데이터가 필요 없음
- 새로운 트렌드 반영이 빠름
한계
- 데이터 희소성 문제
- 콜드스타트 문제
- 확장성 문제
- 유사도 기반 추천의 한계
잠재 요인 협업 필터링
배경: 전통적인 협업 필터링인 최근접 이웃 기반 협업 필터링의 한계점을 극복하기 위해 등장했으며, Netflix Prioze 대회에서 처음 등장한 방법으로도 유명함
행렬 분해 기법을 사용해서 사용자와 아이템의 숨겨진 특징을 학습하는 방법
- 사용자와 아이템의 상호작용 데이터를 행렬로 표현 (최근접 이웃 방식과 동일)
- 희소 데이터를 수학적으로 분해하여 숨겨진(잠재적인) 요인들을 추출하는 방식
- 0인 데이터는 불호의 표시가 아니라 잠재적인 선호의 표시다! → 잠재적인 선호도가 얼마만큼일까를 계산해보는 것
행렬 분해란?
- 행렬 A를 2개 이상의 작은 행렬 B, C로 분해하는 것을 의미
- 행렬 분해의 주요 목적
- 차원 축소: 데이터에서 주요 패턴을 학습하여 저차원 공간에 투영
- 데이터 희소성 해결
- 압축 및 정보 추출
동작 방식
- 사용자-아이템 행렬 데이터 생성
- 행렬 분해
- 사용자-아이템 행렬을 두 개의 작은 행렬로 분해
- 사용자 잠재 행렬(U): 각 사용자의 잠재 요인을 나타내며, 사용자가 특정 특징에 얼마나 관심이 있는지를 나타내는 값들이 포함됨
- 아이템 잠재 행렬(V): 각 아이템의 잠재요인을 나타내며, 아이템의 특정 특징에 얼마나 관련되어 있는지를 나타내는 값들이 포함됨
- 사용자 잠재 행렬 * 아이템 잠재 행렬을 최대한 기존 상호작용 데이터와 유사하게 복원하는 것이 목표
- 학습 과정
- 행렬 분해 과정에서 사용자와 아이템 잠재 행렬의 값을 최적화하여 원래 행렬 R의 실제값과 예측값의 차이를 최소화
- 학습이 진행될수록 사용자 잠재 행렬과 아이템 잠재 행렬의 값이 업데이터 되면서 예측 정확도가 높아짐
- 예측값 계산
- 학습이 완료되면, 사용자 잠재 행렬 * 아이템 잠재 행렬을 통해 원래 비어있던 값(0)에 대한 예측을 계산
- 이 때, 잠재 요인 협업 필터링의 목표는 원본 행렬을 완벽히 복원하는 것이 아니라, 학습을 통해 원본 행렬의 패턴을 근사하여 사용자와 아이템 간의 숨겨진 관계를 학습하는 것
- 추천리스트 생성
- 예측값이 계산된 후에는 각 사용자에 대해 예측 평점이 높은 아이템을 정렬하여 추천 리스트를 생성함
주요 행렬 분해 기법
- 특이값 분해
- 교대 최소제곱법
- 비음수 행렬 분해
추천 시스템은 대부분 희소행렬로 구성되어 있기 때문에 ALS를 주로 사용한다!
- 추천시스템: ALS
- 차원 축소, 데이터 근사 → SVD (PCA와 유사한 역할)
- 텍스트 마이닝, 해석 가능성 중요 → NMF (비음수 제약으로 명확한 패턴 발견)
콘텐츠 기반 필터링 vs 잠재 요인 협업 필터링 정리
'Python > 학습용' 카테고리의 다른 글
LLM - Fine-Tuning (0) | 2025.03.21 |
---|---|
추천시스템 (3): 협업필터링 실습 (0) | 2025.03.21 |
LLM - RAG(2) (0) | 2025.03.20 |
LLM - RAG(1) (0) | 2025.03.20 |
연관 규칙 (2): Apriori 알고리즘 (0) | 2025.03.08 |