R 기반 맥주 추천 엔진 구현 (Beer Advocate 데이터)

Source

  • Evernote/Technote scraps/R로 구현한 맥주 추천 엔진 from __future__ import dream.md

Summary

이 문서는 Beer Advocate의 공개 데이터를 활용하여 R 언어로 맥주 추천 시스템을 구현한 사례를 다룹니다. 초기에는 통계적 유의성(p-value)을 고려했으나 리뷰 수에 따른 편향 문제로 인해, 최종적으로는 ‘유클리드 거리 기반 유사도’와 ‘정규분포 가중 평균(weighted mean)’ 방식을 채택했습니다. 구현 로직은 두 맥주를 모두 리뷰한 사용자 집단을 추출한 후, 각 리뷰어의 평가 점수 간 거리를 계산하고 이를 정규분포 함수로 가중치 조정하여 유사도 점수를 산출합니다. Coors Light, Sierra Nevada Pale Ale 등을 기준으로 한 테스트 결과, 유사한 스타일이나 평점 패턴을 가진 맥주들이 높은 유사도 점수를 받는 것으로 확인되었습니다.

Key Points

  • 데이터 출처: Beer Advocate (Stanford SNAP 데이터셋 기반)
  • 구현 언어: R (data.table 패키지 활용)
  • 알고리즘 선택: p-value 방식 포기 후, 유클리드 거리 + 정규분포 기반 가중 평균 방식 채택
  • 핵심 로직: 두 맥주를 모두 리뷰한 사용자 추출 -> 리뷰 점수 간 유클리드 거리 계산 -> 정규분포(dnorm)를 이용한 가중치 적용 -> 유사도 점수 산출
  • 테스트 결과: Coors Light는 Bud Light 등 라거 계열과, Sierra Nevada Pale Ale은 IPA 계열과 높은 유사도 보임