끄적끄적

2025.08.19 추천시스템 & LLM 2회차 본문

[스파르타]내일배움캠프 데이터 분석 트랙/Session

2025.08.19 추천시스템 & LLM 2회차

kminx 2025. 8. 19. 16:24

사용자와 아이템의 상호작용 데이터를 사용하는 협업 필터링에 대해 알아보자.

행렬 연산과 추천 시스템 평가 지표에 대해서 알아보자


💻️ 실습 코드

실습 코드


1️⃣ 협업 필터링

협업 필터링이란 비슷한 취향(상호작용 기록)을 가진 사람은 비슷한 것을 좋아할 가능성이 높다는 가정에 기반한 추천방식이다.

아이템의 콘텐츠를 보지 않고, 사용자-아이템 상호작용 데이터만으로 추천하는 방식으로 상호작용 데이터가 많을수록 추천의 정확도가 향상될 수 있다.

 

 

협업 필터링과 콘첸트 기반 필터링의 차이점은 아래와 같다.

  협업 필터링 콘텐츠 기반 필터링
추천 방식 유사한 사용자 또는 아이템 기반 추천 사용자가 선호하는 아이템의 특징에 기반한 추천
주요 데이터 사용자-아이템 간의 상호작용 데이터
(평점, 클릭, 구매 이력 등)
아이템 메타데이터(장르, 키워드, 설명 등)
사용자 콜드스타트 상호작용 이력이 없으면 추천 어려움 콜드스타트 문제가 상대적으로 적음
아이템 콜드스타트 아이템이 충분한 평가를 받아야 가능함 아이템의 특징만 있으면 바로 추천 가능
추천의 다양성 인기 아이템 추천 경향 유사한 콘텐츠만 추천되는 문제 발생 (의외성 부족)
설명 가능성 추천 이유를 설명하기 어려움 추천 근거를 설명하기 용이함

 

⇒ 콘텐츠 기반 필터링은 아이템의 속성(메타데이터)에 의존한 추천이고, 협업 필터링은 사용자가 직접적으로 선호를 표현한 인터랙션 데이터를 기반으로 잠재된 유사성을 파악하는 방식

 

 

사용자-아이템 상호작용 데이터란?

  • 전체 사용자 ID = 행 인덱스, 전체 아이템 ID = 열 인덱스
  • 상호작용 여부, 평점, 횟수/빈도 등의 값으로 구성할 수 있음

💡 희소 행렬 (Sparse Matrix)

  • 대부분의 원소가 0 또는 비어 있는 값(None, NaN)으로 구성된 행렬
  • 추천 시스템에서는 모든 사용자가 모든 아이템을 소비하지 않기 때문에 대부분의 셀은 빈 값으로 채워짐
    • 메모리 낭비 및 비효율 해결 필요 → Scipy의 csr_matrix와 같은 희소 행렬 전용 자료구조 사용
    • 정보 부족으로 추천이 어려움 → 부족한 정보를 보완하기 위한 모델링 기법(잠재 요인, 딥러닝, LLM) 사용

 

 

📌 협업 필터링 분류

 

🔹 기업 기반 협업 필터링 = 최근접 이웃 방식

상호작용 데이터를 그대로 활용하여 유사한 사용자나 아이템을 찾아 추천하는 협업 필터링
  • 대표 방식
    • 사용자 기반(User-based): 나와 취향이 비슷한 사용자가 좋아한 아이템 추천
    • 아이템 기반(Item-based): 내가 좋아한 아이템과 유사한 아이템 추천
  • 학습 없이 추천이 필요할 때마다 실시간으로 유사도를 계산 혹은 일/주 단위로 상호작용 데이터 업데이트 해서 미리 계산한 결과를 사용

 

🔹 모델 기반 협업 필터링

상호작용 데이터를 학습하여 일반화된 예측 모델을 만든 뒤 추천
  • 대표 방식 : 잠재 요인 분해(Latent Factor Model)
    • 사용자와 아이템을 벡터로 표현하고, 이들 간의 내적으로 선호도를 예측
    • 사용자의 취향과 아이템 특성을 잠재적으로 추정
    • 사용자가 평점은 주지 않았지만 좋아할 가능성이 높은 아이템을 예측 가능
  • 협업 필터링은 기본적으로 상호작용 데이터만 사용하지만, 실무에서는 정확도를 높이기 위해 사용자/아이템 피처도 함께 사용하는 확장 모델들로 발전됨

 

 

📌 최근접 이웃 방식 협업 필터링

과거 데이터를 그대로 활용하여 유사한 사용자나 아이템을 찹아 추천 방식으로 사용자 기반 협업 필터링아이템 기반 협업 필터링이 있다.

 

 

🔹 사용자 기반 협업 필터링 (User-Based CF)

나와 비슷한 취향을 가진 가까운 사용자(이웃)을 찾아 그들이 좋아한 다른 아이템을 추천 받음
Q.
위 그림은 4명의 사용자가 각각의 6개 아이템에 대한 평점 데이터이다. 평점 데이터를 바탕으로 사용자 A와 가장 가까운 사람은?

정답은 B

  • 코사인 유사도 : (A, B) = 0.804, (A, C) = 0.54, (A, D) = 0.51
  • A와 취향이 비슷한 B에게 A가 본 영화 중 평점이 좋은 영화를 추천해주는 방식

 

 

🔹 아이템 기반 협업 필터링 (Item-Based CF)

내가 좋아한 아이템과 유사한 아이템을 찾아 추천

 

⁉️콘텐츠 기반 필터링과 비슷한 것 아닌가요?
- 콘텐츠 기반 필터링 : 슬램덩크를 좋아하는 사용자에게 똑같이 ‘스포츠’ 만화인 테니스의 왕자를 추천
    → 유사함의 기준이 아이템의 속성
- 아이템 기반 협업 필터링 : 슬램덩크를 본 ‘사용자가 많이 본’ 강철의 연금술사를 추천
    → 유사함의 기준이 해당 아이템을 본 사용자가 인터랙션 했는가
Q.
위 그림을 통해 사용자 B에게 아이템을 추천한다고 합시다. 사용자 B가 가장 좋은 평점을 매긴 아이템 다과 유사한 어떤 아이템을 추천하면 될까요?

정답은 아이템 나

  • 유사도 : (다, 가) = 0.982 / (다, 나) = 0.563 / (다, 라) = 0.572 / (다, 마) = 0.291 / (다, 바) = 0.39
  • 유사도는 가 → 라 → 나 순으로 높으나 가와 라는 이미 본 영화이기 때문에 나를 추천

 

 

장점

  • 도메인 지식과 아이템의 메타데이터가 필요 없음
  • 단순하고 직관적이라 빠르게 적용 가능함
  • 비슷한 사용자 A가 이 영화를 좋아했기 때문에 추천 가능하다 등 설명이 가능함

한계

  • 데이터 희소성 문제 : 실제 데이터는 대부분 비어 있는 경우가 많아서 유사도를 계산할 데이터가 부족함
  • 콜드스타트 문제 : 사용자, 아이템 모두 상호작용 기록이 없는 경우 사용할 수 없음
  • 확장성 문제 : 사용자 수와 아이템 수가 많아질수록 유사도 계산 비용이 기하급수적으로 증가함
  • 유사도 기반 추천의 한계 : 추천 이유를 설명할 수 없음

⇒ 데이터가 커지거나 복잡해지면 모델 기반으로 넘어가는 것이 일반적

 

 

📌 잠재 요인 협업 필터링

  • 전통적인 협업 필터링인 최근접 이웃 기반 협업 필터링의 한계점을 극복하기 위해 등장했으며, Netflix Prize 대회에서 처음 등장한 방법으로도 유명함
  • 행렬 분해(Matrix Factorization) 기법을 사용해서 사용자와 아이템의 숨겨진 특징(Latent Factors)을 학습하는 방법

상호작용 없음(0)은 ‘불호’의 표시가 아니라 잠재적인 ‘선호’ 표시일 수 있다. 잠재적인 선호도가 얼마인지를 계산해서 추천하는 방법 = 잠재 요인 협업 필터링

 

이때 행렬 분해란 행렬 A를 2개 이상의 작은 행렬 B, C로 분해하는 것으로 희소 행렬을 해결할 수 있다.

🔹 동작 방식

  1. 사용자-아이템 행렬 데이터 생성 (희소 행렬 형태)
  2. 행렬 분해(Matrix Factorization)
    • 사용자-아이템 행렬을 두 개의 잠재 행렬로 분해
    • 사용자 잠재 행렬(U) : 각 사용자의 잠재 요인을 나타내며, 사용자가 특정 특징에 얼마나 관심이 있는지를 나타내는 값들이 포함됨
    • 아이템 잠재 행렬(V) : 각 아이템의 잠재요인을 나타내며, 아이템의 특정 특징에 얼마나 관련되어 있는지를 나타내는 값들이 포함됨 (*T : 전치 행렬을 의미함)
    • 사용자 잠재 행렬 * 아이템 잠재 행렬을 최대한 기존 상호작용 데이터와 유사하게 복원하는 것이 목표
  3. 학습 과정
    • 초기에는 U와 V를 무작위 값으로 설정한 뒤, 예측값과 실제값의 차이(오차)를 줄이기 위해 최적화를 반복 (ex. 경사 하강법)
    • 학습이 진행될수록 사용자 잠재 행렬과 아이템 잠재 행렬의 값이 업데이트 되면서 예측 정확도가 높아짐 → 숨겨진 패턴 반영
  4. 예측값 계산
    • 학습이 완료되면 U × Vᵀ 를 계산해 비어 있던 셀에 대한 예측 평점을 생성
    • 이 예측 평점은 "사용자 A는 아이템 B를 얼마나 좋아할 가능성이 높은가?"를 의미함 → 실제값과 똑같아 지는 게 아니라 전체 패턴을 잘 근사하는 것을 목표로 함
  5. 추천리스트 생성
    • 예측된 평점 중에서 사용자가 아직 보지 않은 아이템들 중 점수가 높은 순으로 정렬하여 추천 리스트를 생성

 

🔹 주요 행렬 분해 기법

 

어떻게 나누느냐에 따라 다양한 기법이 있다.

 

1. SVD (Singular Value Decomposition)

  • 모든 정방행렬 또는 직사각 행렬을 세 개의 행렬의 곱으로 분해하는 방법 (=선형 대수 기반의 행렬 분해 기법)
  • 장점
    • 수학적으로 가장 정확한 행렬 분해 방법
    • 정방행렬뿐만 아니라 직사각 행렬에도 적용 가능
    • 차원 축소 효과를 가지며 최적의 근사값 제공
  • 한계
    • 결측값(missing values)이 있으면 적용 불가능 (희소 행렬에서는 적용 어려움)
    • 계산량이 많아 대규모 데이터에서는 사용 어려움
    • 보완방법으로 Truncated SVD 사용

 

2. 교대 최소제곱법(ALS, Alternating Least Squares)

  • 행렬을 직접 최적화하는 방법
  • 장점
    • 결측값이 있는 데이터에도 적용 가능
    • 추천시스템에서 대규모 행렬 분해에 최적화
  • 한계
    • 하이퍼 파라미터(잠재 요인 개수 k)에 따라 성능이 달라짐
    • 계산량이 많아 병렬 연산이 필요할 수 있음

 

 

장점

  • 성능 우수 : 희소한 데이터에서도 사용자의 잠재적인 선호를 파악하여 높은 추천 정확도 낼 수 있음
  • 압축 표현 가능 : 사용자와 아이템의 특성을 소수의 잠재 요인으로 표현함으로써 계산 효율성이 높아짐
  • 비선형 관계 학습 가능 : 단순 유사도 기반 접근보다 더 복잡한 사용자-아이템 간의 관계 포착 가능
  • 대규모 데이터에 적합 : SGD, ALS 등의 최적화 알고리즘을 사용하여 대규모 데이터도 학습 가능
  • 예측 기반 추천 : 아직 상호작용하지 않은 아이템에 대한 예측 평점 생성 가능

한계

  • 해석의 어려움 : 잠재 요인이 추상적이기 때문에 추천 이유 설명 어려움
  • 콜드 스타트 문제 : 신규 사용자나 아이템은 상호작용 정보가 없어서 추천 불가능
  • 학습 및 튜닝 필요 : 최적화 과정, 하이퍼파라미터 튜닝 등 모델 개선에 리소스가 많이 필요함
  • 과적합 필요 : 적절한 정규화를 하지 않으면 특정 사용자나 아이템에 과적합 될 수 있음

 

 

최근 추천 시스템의 발전 방향

  • 하이브리드 추천 시스템 : 콘텐츠 기반 + 협업 필터링을 결합하여 장점을 극대화
  • LLM, 강화학습, 멀티모달 추천 등 발전된 형태의 추천 모델 등장

 

 

 

2️⃣ 추천 시스템 평가 지표

💡
오프라인 평가 vs. 온라인 평가
- 오프라인 평가 : 미리 수집된 데이터(과거 사용자 행동 데이터)를 기반으로 모델의 성능을 측정하는 방식. 추천시스템이 제공되기 전에 미리 성능을 테스트하는 데 사용됨
- 온라인 평가 : 실제 사용자 반응(클릭, 구매 등 실시간 행동 데이터)을 바탕으로 추천 시스템의 효과를 측정하는 방식

 

 

추천 품질 관련 지표

1. 정확도 기반 지표

  • 추천된 아이템이 실제로 사용자가 선호하는지 측정하는 평가 방법
  • Confusion Matrix (혼동행렬) 사용

2. 랭킹 기반 지지표

  • 추천된 아이템의 순서가 얼마나 적절한지 평가하는 방법
  • MAP (Mean Average Precision)
    • 여러 사용자에 대해 평균 정밀도를 계산한 지표
    • 추천 순서의 앞부분에 정답이 있을수록 높은 점수
  • MRR (Mean Reciprocal Rank)
    • 정답 아이템이 처음 등장한 순위의 역수 (MRR = 1 / 첫 번째 정답 아이템의 순위)
    • 높은 순위에 정답이 있으면 좋은 점수
  • NDCG (Normalized Discounted Cumulative Gain)
    • 추천 순위에서 정답 아이템의 위치를 중요하게 보는 지표
    • 높은 순위에 중요한 아이템이 있을수록 높은 점수
    • 랭킹의 품질 평가에 적합

3. 다양성 기반 지표 (Coverage)

  • 추천시스템을 통해 얼마나 다양한 종류의 아이템을 추천했는가
    • Coverage : 전체 아이템 중에서 추천에 사용된 아이템의 비율 (추천 아이템 수 / 전체 아이템 수)
    • Novelty : 사용자에게 새로운 아이템을 얼마나 추천했는가
    • Diversity : 추천된 아이템 간의 유사도가 얼마나 낮은가

⇒ 추천 시스템은 단순히 사용자 취향만 만족하는 것이 아니라 안 팔리는 혹은 신규 아이템 판매를 유도하는 등 비즈니스적 접근도 필요함!

 

 

추천 효율성 (시스템 성능 중심)

  • 추천 품질뿐 아니라 얼마나 빠르고 효율적으로 추천했는가도 추천 시스템에서 핵심 지표
    • Latency (응답 속도) : 추천 리스트 생성에 걸리는 시간
    • Throughput (처리량) : 초당 몇 개의 요청을 처리할 수 있는지
    • Memory usage, Scalability 등
💡
실제 기업에서 추천 알고리즘을 선택할 때 정확도가 아주 조금 더 높은 모델보다, 속도나 자원 사용 측면에서 운영 가능한 모델이 선택되는 경우도 많음