끄적끄적
2025.08.18 추천시스템 & LLM 1회차 본문
추천 시스템 개요와 장바구니 분석, 콘텐츠 기반 추천에 대해 알아보자.
💻️ 실습 코드
1️⃣ 추천 시스템
추천 시스템이란 수많은 선택지 중에 어떤 것을 선택하면 좋을지 의사결정을 도와주는 기술로 넷플릿스, 쿠팡 등 다양한 기업에서 관심을 가지고 있는 분야다.
추천 시스템의 3요소는
1. 입력(데이터 입력):
추천 알고리즘이 무엇을 바탕으로 추천할지 판단 가능하게 데이터를 입력하는 단계

- 명시적 데이터 vs 암시적 데이터
- 명시적 데이터: 사용자가 직접 선호도를 표현한 데이터 (ex. 평점, 좋아요, 리뷰 등)
- 암시적 데이터: 사용자의 행동을 통해 선호도를 유추할 수 있는 데이터 (ex. 조회기록, 시청/청취 시간 등)
- 콜드스타트 문제: 추천 시스템에서 데이터가 부족해 정확한 추천을 하기 어려운 상황
- 사용자 콜드스타트 문제: 신규 사용자의 데이터 부족으로 개인화 추천 어려움
- 아이템 콜드스타트 문제: 새로운 아이템의 평가 데이터 부족으로 추천 어려움
- 시스템 콜드스타트 문제: 신규 플랫폼의 사용자&아이템 데이터 부족으로 초기 추천 기능 성능 저하
2. 프로세스(추천 설계):
추천 알고리즘이 작동하는 단계로, 입력된 데이터를 기반으로 어떤 것을 추천할지 알고리즘이 판단하는 과정
인기 아이템일 수록 더 많이 추천되는 인기 편향이 발생하지 않도록 추천 다양성을 강화하는 것이 좋다.

3. 출력(결과 제시):
알고리즘이 판단한 결과를 사용자가 실제로 보게 되는 형태로 표현하는 단계
추력 방식에 따라 추천 효과가 달라질 수 있기 때문에 A/B 테스트를 통해 어떤 방식이 효과적인지 실험
추천 시스템 알고리즘은 크게 3가지가 존재한다.

- 휴리스틱 기반 추천
- 사람이 미리 정해둔 규칙이나 자주 함께 등장하는 항목을 기반으로 추천하는 방식
- 기존 추천 알고리즘
- 사용자의 과거 행동이나 아이템 속성을 활용해, 규칙이 아닌 데이터 기반으로 추천하는 방식
- 딥러닝 기반 추천 알고리즘
- 사용자 행동을 깊게 학습하거나 이미지·텍스트 등 다양한 정보를 결합해 추천하는 방식
이때, 최신 알고리즘이라고 무조건 선호되는 것이 아니라, 상황에 따른 선택이 중요하다.
2️⃣ 장바구니 분석
장바구니 분석이란 연관성에 기인한 새로움을 찾는 분석이다.
A를 샀을 때 B도 살 호가률이 높다면 B를 추천하는 방식으로 진행되는데 과연 얼마나 많은 사람이 그런 행동을 했을 때, 연관이 있다고 판단할까?
| 용어 | 설명 |
| 지지도 (Support) | 특정 규칙이 얼마나 자주 발생하는지 = 규칙의 일반성 |
| 신뢰도 (Confidence) | X를 구매한 사람 중 Y도 함께 구매한 비율 = 규칙의 신뢰성 |
| 향상도 (Lift) | X와 Y의 관계가 정말로 유의미한지, 또는 단순히 우연에 의한 것인지 평가 |
- 향상도 해석
- 향상도 = 1 : X와 Y는 서로 독립적이다. 즉, X를 구매한다고 해서 Y를 구매할 가능성이 높아지지 않는다.
- 향상도 > 1 : X와 Y는 양의 상관관계를 가진다. X를 구매하면 Y를 구매할 확률이 증가한다.
- 향상도 < 1 : X와 Y는 음의 상관관계를 가진다. X를 구매하면 Y를 구매할 확률이 감소한다.
장점:
- 이해와 해석이 매우 직관적
- 데이터가 적어도 사용 가능하고 복잡한 모델 없이 규칙 생성 가능
- 실제 마케팅/프로모션 전략에 바로 활용 가능
- 콜드 스타트 문제에 대응 가능해 초기 추천 시스템에 적합
단점
- 개인화된 추천이 불가능 (모든 사용자에게 동일한 규칙 적용)
- 시간의 흐름(구매 순서, 시점 등)을 반영하지 못함
- 설정값에 따라 결과가 크게 달라지며 아이템 수가 많아질수록 규칙 수가 폭증 (계산 비용 증가)
- 맥락(날씨, 요일, 상황 등)을 고려하지 않음
💡
장바구니 분석은 추천 시스템의 입문 단계로 적합한 추천 방식 추천이 왜 발생했는지 쉽게 설명할 수 있고, 데이터가 적어도 활용할 수 있다는 장점이 있다.
하지만 개인화가 어렵고 시계열이나 맥락 정보를 반영하기 어렵다는 점에서 고도화된 추천 시스템에는 한계가 있다.
3️⃣ 콘텐츠 기반 필터링
콘텐츠 기반 필터링은 아이템의 특징을 분석해서 사용자에게 비슷한 콘텐츠를 추천하는 방법이다.
콘첸트 기반 필터링 흐름
- 각 아이템의 특징 추출 (텍스트, 태그 등)
예: 장르, 키워드, 설명, 카테고리 등 - 특징을 벡터화 (TF-IDF, Word2Vec, BERT 등)
→ 컴퓨터가 비교 가능하도록 수치화 - 사용자가 좋아한 아이템들의 벡터 평균 생성
→ “사용자 취향 벡터” 생성 - 다른 아이템들과 유사도 계산
→ 가장 비슷한 콘텐츠를 추천
이때 특징을 벡터화하는 것이란 아이템의 특징을 수치로 변환하는 과정으로 TF-IDF와 임베딩을 사용할 수 있다.
📌 TF-IDF (Term Frequency - Inverse Document Frequency)
- 문서에서 단어(키워드)의 중요도를 측정하는 기법
- 특정 단어가 문서 내에서 자주 등장하지만(Term Frequency) 모든 문서에서 흔히 등장하는 단어라면 중요도가 낮음(Inverse Document Frequency)을 반영하는 방식
⇒ 특정 문서에서 많이 등장하지만, 다른 문서에서는 드문 단어일수록 중요한 단어로 간주 (단어의 중요도를 벡터에 반영, But 의미를 반영하진 않음) - 특징
- 간단하고 빠르게 구현 가능하며, 어떤 단어가 중요해서 추천되었는지 해석 가능해 설명 가능성이 높음
- 작은 데이터셋에서도 작동하고 학습이 불필요해 효율적인 추천이 가능함
- 의미 반영이 불가하기 때문에 유사도 계산에 있어서 한계가 있고, 대부분의 값이 0인 희소 벡터가 되기 때문에 계산 비효율성이 증가함
- 사용자별 개인 취향을 반영하기 어렵고 OOV(Out of Vocabulary) 문제가 발생함
📌 임베딩 (Embedding)
- 학습을 통해 데이터 간 의미적 관계를 유지하면서, 각 항목을 연속적인 벡터 공간에 표현하는 과정
- 단순한 숫자 변환이 아니라 유사한 데이터끼리 가깝게 배치
- 임베딩의 차원을 너무 낮게 설정하면 충분한 정보를 학습할 수 없고, 너무 높기 설정하면 과적합(overfitting) 위험 발생
🔹Word2Vec
- 단어를 ‘의미 있는 벡터 공간’에 매핑하는 임베딩 기법
- 단어들이 함께 등장하는 문맥(Context)을 학습해, 의미적으로 비슷한 단어들이 가까운 벡터로 매핑됨
- 사용 방식
- 사전 학습(pretrained) : 빠르고 일반적 의미 반영할 수 있지만 맥락 반영이 어려움
- 직접 학습(custom) : 도메인 특화 의미 반영 가능하지만 많은 말뭉치 필요하고 학습 과정에서 리소스가 필요함
- 특징
- 의미를 반영한 추천 가능하며 유사도를 계산할 수 있음 (예: 유사한 강의명, 설명 간 거리 계산)
- 비정형 텍스트 기반 추천에 효과적
- OOV 문제가 발생할 수 있고 사용자 맞춤형 벡터 표현은 어려움
- 학습데이터가 많아야 품질이 높아짐
🔹BERT 등 LLM 기반 임베딩
- 문맥(Context)을 반영하는 동적 임베딩
- BERT 등의 LLM 기반 임베딩 모델은 동일한 단어라도 문맥에 따라 다른 벡터를 생성
- Word2Vec은 ‘밤’이라는 단어가 항상 동일한 벡터로 표현되는 반면 BERT는 ‘군밤’에서의 밤과 ‘밤바다’에서의 밤을 다른 의미로 벡터화 가능
- 단어뿐 아니라 전체 문장의 의미를 반영한 문장 임베딩도 가능
- Self-Attention 기반 구조 : 문장 전체를 동시에 이해하면서 각 단어의 의미를 문맥 속에서 해석
- 검색, 유사도 계산, 자연어 이해 등에 강력한 성능을 보임
📌 정적 vs 문맥 임베딩 비교
| 항목 | Word2Vec (정적) | BERT 등 (문맥 기반) |
| 벡터 고정 여부 | 항상 동일한 벡터 | 문맥 따라 동적 벡터 생성 |
| 문맥 반영 | X | O |
| 추천/검색 정확도 | 낮음 | 높음 (특히 문장/문서 단위) |
| 학습 필요 여부 | 직접 학습 or 사전 모델 사용 | 사전 모델 사용 권장 |
- 학습량이 적당하고, 문맥보단 단어 간 연관이 중요한 경우(예: 제품명, 진단코드 등)와 같은 도메인 특화 데이터나 빠르고 가벼운 모델이 필요한 경우 Word2Vec을 사용할 수 있음
- LLM의 발전에 따라 BERT 등 문맥을 반영할 수 있는 대형 임베딩 모델이 선호되는 추세
임베딩은
추천시스템에서 단순한 데이터 변환이 아니라, 사용자와 아이템 간의 관계를 학습하는 핵심 기술
LLM에서 텍스트 데이터를 숫자로 변환하고 의미적 관계를 학습하는 핵심 요소
이렇게 임베딩된 벡터들은 사용자가 이전에 좋아한 콘텐츠와 비슷한 아이템을 찾아주기 위해 ‘비슷한 정도(유사도)’를 계산해야 한다.
이를 위해 코사인 유사도, 유클리디안 거리. 자카드 유사도가 상황에 맞게 사용된다.

- 코사인 유사도 vs 유클리디안 거리
→ 코사인 유사도는 방향만 고려, 유클리디안 거리는 크기까지 고려. - 코사인 유사도 vs 자카드 유사도
→ 코사인 유사도는 연속형 벡터 비교, 자카드 유사도는 태그(이진값) 기반 비교. - 유클리디안 거리 vs 자카드 유사도
→ 유클리디안 거리는 거리(절대값 차이), 자카드 유사도는 공통 요소 비율.
💡콘텐츠 기반 필터링
1. 아이템 속성과 아이템에 대한 사용자 선호 속성(콘텐츠) 데이터를 만든다.
2. Feature 를 적절하게 벡터화 한다.
3. 유사도를 계산해 유사한 아이템을 추천한다.
장점
- 개인의 취향 반영 : 사용자의 과거 기록을 기반으로 개인화된 추천
- 아이템 콜드 스타트 문제 없음 : 신규 사용자라도 콘텐츠 기반으로 추천 가능
- 추천 이유 설명 가능 : 어떤 특징이 비슷해서 추천했는지 설명할 수 있음
단점
- 콘텐츠 정보 의존 : 콘텐츠 정보가 부실하거나 누락되면 추천 어려움
- 취향 확대 어려움 : 사용자가 선호하던 범위 내에서만 추천이 반복됨 (Serendipity 부족)
- 사용자 콜드 스타트 문제 : 사용자의 로그(선호 콘텐츠)가 없으면 사용자 벡터 생성 불가 → 미리 선호 취향 받기
- 넷플릭스에 처음 가입했을 때 관심 있는 콘텐츠 클릭
⇒ 콘텐츠 자체에 집중하기 때문에 개인화에 강하고 설명이 가능하지만, 새로운 취향을 발견하는 데 한계가 있음. 이후 나올 협업 필터링 등 다른 모델과 결합한 하이브리드 방식 도입 추세
'[스파르타]내일배움캠프 데이터 분석 트랙 > Session' 카테고리의 다른 글
| 2025.08.19 추천시스템 & LLM 2회차 (8) | 2025.08.19 |
|---|---|
| 2025.08.18 추천시스템 & LLM 1회차 (과제) (1) | 2025.08.18 |
| 2025.07.09 Pandas 실무 기초 세션 4 (5) | 2025.07.09 |
| 2025.07.09 머신러닝 세션 4 (3) | 2025.07.09 |
| 2025.07.07 데이터 크롤링 세션 3 (5) | 2025.07.09 |