0Pricing
Learn AI with Python · 강의

협업 필터링: 사용자 기반과 항목 기반

사용자 유사도, 항목 유사도, 이웃 방법, 평점을 위한 코사인 유사도를 다룹니다.

협업 필터링: 사용자 기반과 항목 기반은(는) CoddyKit의 무료 Learn AI with Python 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Learn AI with Python 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.

협업 필터링이란 무엇인가요

협업 필터링(CF)은 많은 사용자의 행동에서 학습하여 아이템을 추천합니다. 핵심 아이디어는 과거에 같은 선택을 한 사람들이 앞으로도 같은 선택을 하는 경향이 있다는 것입니다. 아이템 설명은 필요하지 않고 상호작용 기록만 있으면 됩니다.

사용자-아이템 행렬

CF는 사용자-아이템 행렬에서 시작합니다. 행은 사용자, 열은 아이템이며 각 셀에는 평점이 들어가거나, 평점을 매기지 않았다면 비어 있습니다. 각 사용자가 평가하는 아이템의 수가 적기 때문에 이 행렬은 대개 매우 희소합니다.

import pandas as pd

matrix = ratings.pivot_table(
    index="user_id", columns="item_id", values="rating"
)

CF의 두 가지 방식

  • 사용자 기반: 나와 비슷한 사용자를 찾아 그들이 좋아한 것을 추천합니다.
  • 아이템 기반: 내가 좋아한 아이템과 비슷한 아이템을 찾아 추천합니다.

두 방식 모두 행(사용자) 또는 열(아이템) 사이의 유사도 측정값에 의존합니다.

코사인 유사도

코사인 유사도는 크기는 무시하고 두 평점 벡터 사이의 각도를 측정합니다. 값이 1에 가까우면 취향이 매우 비슷하고, 0에 가까우면 서로 관련이 없다는 뜻입니다.

from sklearn.metrics.pairwise import cosine_similarity

filled = matrix.fillna(0)
user_sim = cosine_similarity(filled)  # user x user

사용자 기반 예측

어떤 아이템에 대한 사용자의 평점을 예측하려면, 비슷한 사용자들이 해당 아이템에 매긴 평점을 유사도로 가중한 가중 평균을 계산합니다. 더 비슷한 이웃의 평점이 더 큰 영향을 줍니다.

예측 공식

예측 평점 = 해당 아이템을 평가한 이웃을 대상으로 (유사도 * 이웃 평점)의 합 / 유사도의 합입니다. 먼저 각 사용자의 평균을 빼는 평균 중심화를 적용하면 일반적으로 평점을 높게 또는 낮게 매기는 사용자의 차이를 보정할 수 있습니다.

import numpy as np

def predict(sims, ratings_for_item):
    mask = ~np.isnan(ratings_for_item)
    if sims[mask].sum() == 0:
        return np.nan
    return np.dot(sims[mask], ratings_for_item[mask]) / sims[mask].sum()

이웃 선택(k)

모든 사용자 대신 유사도가 가장 높은 상위 k명의 이웃만 사용하십시오. 이렇게 하면 유사하지 않은 사용자로 인한 잡음을 줄이고 예측 속도를 높일 수 있습니다. k는 조정 가능한 하이퍼파라미터입니다.

아이템 기반 유사도

아이템 기반 CF는 사용자 행이 아니라 아이템 열 사이의 유사도를 계산합니다. 사용자가 이미 좋아한 아이템과 가장 비슷한 아이템을 추천합니다.

item_sim = cosine_similarity(filled.T)  # item x item

아이템 기반 방식이 더 안정적인 이유

아이템 간 관계는 천천히 변합니다. 두 영화 사이의 유사도는 대략 일정하게 유지됩니다. 반면 사용자 취향과 사용자층은 더 빠르게 변합니다. 따라서 아이템 기반 유사도는 미리 계산해 재사용할 수 있고, 더 안정적이며 확장 가능한 추천을 제공할 수 있습니다. 아마존이 이 방식을 유명하게 선호했던 이유도 여기에 있습니다.

콜드 스타트 문제

CF는 아직 평점이 없는 새 사용자나 새 아이템을 처리할 때 어려움을 겪습니다. 비교할 대상이 없기 때문입니다. 일반적인 해결 방법으로는 새 사용자에게 몇 개의 평점을 요청하거나 콘텐츠 기반 방법으로 대체하는 방식이 있으며, 이 방법은 뒤에서 다룹니다.

추천 생성

사용자가 아직 평가하지 않은 모든 아이템에 점수를 매기고, 내림차순으로 정렬한 다음 상위 N개를 추천 결과로 반환합니다.

scores = {item: predict_for(user, item)
          for item in unrated_items(user)}
top_n = sorted(scores, key=scores.get, reverse=True)[:10]

빠른 확인

협업 필터링 지식을 테스트해 보십시오.

복습

사용자-아이템 행렬에 CF를 구축하고, 코사인 유사도를 계산하고, 이웃의 유사도에 따른 가중 평균으로 평점을 예측했습니다. 또한 아이템 기반 CF가 사용자 기반보다 더 안정적인 이유도 살펴보았습니다. 다음 주제는 SVD를 사용한 행렬 분해입니다.

자주 묻는 질문

“협업 필터링: 사용자 기반과 항목 기반” 강의는 무료인가요?

네 — “협업 필터링: 사용자 기반과 항목 기반” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Learn AI with Python 강의 전체를 잠금 해제할 수 있습니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.

“협업 필터링: 사용자 기반과 항목 기반”에서 뭘 배우나요?

사용자 유사도, 항목 유사도, 이웃 방법, 평점을 위한 코사인 유사도를 다룹니다. 브라우저에서 직접 실행하는 실습 코드로 Learn AI with Python을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Learn AI with Python을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Learn AI with Python은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.

“협업 필터링: 사용자 기반과 항목 기반” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Learn AI with Python 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Learn AI with Python 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 협업 필터링: 사용자 기반과 항목 기반
  2. SVD를 활용한 행렬 인수분해
  3. 콘텐츠 기반 필터링
  4. 하이브리드 시스템과 평가 지표
← Learn AI with Python(으)로 돌아가기