추천시스템 - LightFM

김수정·2024년 1월 24일
0

공부

목록 보기
2/3

LightFM

LightFM은 추천 시스템을 만들때 사용하는 Python 라이브러리로, 협업 필터링(collaborative filtering)과 컨텐츠 기반 필터링(content-based filtering)의 장점을 결합한 하이브리드 추천 알고리즘이다.

  • LightFM을 왜 사용하는 것일까?
    LightFM을 왜 사용하는지 알기 위해서는 협업 필터링에서 발생하는 콜드 스타트(cold start)문제에 대해 알아야 한다.

  • 콜드 스타트(cold start)란?
    콜드 스타트는 데이터가 없는 상태를 의미하며, 헙업필터링에서 흔히 발생하는 문제이다.
    헙업필터링의 경우 기존의 데이터(사용자의 이전 정보, 상호작용 정보 등)을 기반으로 이루어지기 때문에, 데이터가 없거나 적으면 추천 결과의 신뢰성이 떨어지게 된다. 이러한 현상을 콜드 스타트(cold start)라고 부른다.
    출처 : 신규 고객 대상 머신러닝 도서 추천 시스템 개발 도전기

  • 콜드 스타트(cold start) 해결방법

    1. 초기 프로필 작성
      신규유저, 아이템이 들어온 경우 초기 프로필을 작성하여 데이터를 쌓아두는 방법으로 데이터 부족 문제를 해결할 수 있다.

    2. 하이브리드 필터링
      협업 필터링과 컨텐츠 기반 필터링를 함께 쓰는 방식으로 해결할 수 있다.

즉, LightFM은 새로들어온 데이터를 잘 처리하면서, 개인 맞춤법 추천시스템을 만들기 위해 사용하는 하이브리드 필터링이다.


LightFM의 특징

LightFM은 사용자와 아이템의 메타데이터를 사용하여 추천을 수행하며, 이를 위해 행렬 분해(Matrix Factorization)기법을 사용한다. 사용자와 아이템 각각에 대한 잠재 요인(latent factors)을 학습하여, 이를 기반으로 사용자와 아이템 간의 상호작용을 예측하는 시스템이다.

또한 LightFM은 다양한 형태의 데이터를 처리할 수 있으며, 특히 희소 행렬 형태의 데이터에 최적화되어 있다.

  • 성능 평가
    LightFM의 성능 평가에는 AUC, 정밀도(precision), 재현율(recall)과 같은 여러 지표를 사용하여 추천 시스템의 성능을 평가할 수 있다.

  • 설치 및 사용
    Python의 pip를 통해 쉽게 설치

	pip install lightfm
	from lightfm import LightFM
    from lightfm.datasets import fetch_movielens
    #fetch_movielens 함수는 영화 추천 시스템에 자주 사용되는 공개 데이터셋으로 LightFM 공부에 많이 활용됨 

	# 데이터 로드
	data = fetch_movielens(min_rating=5.0)

	# 모델 생성
	model = LightFM(loss='warp')
	# 훈련 데이터를 사용하여 모델 훈련
	model.fit(data['train'], epochs=30, num_threads=2)

	# 테스트 데이터에 대한 예측 수행
	test_precision = model.predict(data['test'])

행렬 분해(Matrix Factorization)와 추천 시스템

행렬 분해는 추천시스템에서 널리 사용되는 기법 중 하나로, 큰 행렬을 여러 개의 작은 행렬로 분해하여 상관관계를 파악하는 방법이다.

행렬 분해의 기본 개념

  • 행렬구조
    추천시스템에서 사용되는 행렬은 사용자와 아이템 간의 상호작용을 나타낸다.

  • 분해과정
    큰 행렬을 더 작은 두 개의 잠재특징 행렬로 분해한다.
    작은 두 개의 행렬은 사용자의 잠재특징아이템의 잠재특징으로 구성되어 있다. 이들은 사용자의 선호도나 아이템의 속성을 암시적으로 나타내는 요인이다.

분해과정으로 얻은 작은 2개의 행렬의 내적을 통해 원래 행렬을 재구성하고, 예측 평점을 생성한다.

  • 행렬 분해의 의의
    희소행렬(데이터가 적은)에서 유용한 패턴과 관계를 추출할 수 있으며, 잠재요인을 발견 할 수 있다.

잠재 요인(Latent Factors)

잠재 요인(Latent Factors)은 사용자의 행동이나 아이템의 특성을 설명하는 숨겨진(잠재적인) 변수들을 의미한다. 직접적으로 관찰되거나 측정되지 않지만, 사용자의 선호도나 아이템의 특성과 강하게 연관되어 있다.

0개의 댓글

관련 채용 정보