Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[개념부터 실습까지] 추천 시스템 입문편

[개념부터 실습까지] 추천 시스템 입문편

안녕하세요!
데이터리안 추천 시스템 팀입니다.

본 슬라이드는 인프런에 서비스 중인 '[개념부터 실습까지] 추천 시스템 입문편'의 강의 자료입니다.
강의가 궁금하시다면 아래 링크를 참고해 주세요 :)
https://www.inflearn.com/course/추천-시스템-입문편

자료에 대한 문의는 [email protected] 으로 해 주시길 바랍니다.

데이터리안

April 30, 2020
Tweet

More Decks by 데이터리안

Other Decks in Technology

Transcript

  1. 튜토리얼 목표 1. 추천 시스템에 대한 기초적인 지식 전달 a.

    추천 알고리즘의 분류 및 평가 방법에 대한 지식 2. 간단한 영화 추천 시스템 만들어 보기 a. MovieLens 영화 평점 데이터 소개하기 b. 영화 평점 데이터 탐험적 분석하기 (EDA) c. 영화 장르를 이용해 개인 평점 예측하기
  2. 튜토리얼 대상 1. 추천 시스템이 처음인 분 2. 서비스 기획자

    3. 영화 평점 데이터를 다뤄보고 싶은 분 등 추천 시스템에 관심이 있거나, 영화 콘텐츠 자체에 흥미가 있으신 분들에게 추천합니다.
  3. 추천 시스템 이 서비스들의 공통점은 무엇일까요? 넷플릭스 영화 수 만

    편 유튜브 영상 수 억 편 쿠팡 상품 수십 만 개
  4. 정보 필터링 • 정보의 양이 폭증함에 따라 정보 소비자가 "원하는"

    정보를 얻는데 시간과 노력이 많이 필요 • 정보 소비자에게 원하는 정보를 쉽게 얻도록 도와주는 분야 • 정보 필터링의 대표적인 분야 • 검색 • 추천 시스템
  5. 추천 시스템 • 정보 소비자가 "원하는" 정보를 찾아 소비자에게 추천하는

    시스템 • 검색과의 차이점 • 검색은 소비자가 관심사를 표현하는 "검색"이라는 행위를 해야함 (active) • 추천은 특별한 행위 없이도 정보 전달이 가능 (passive)
  6. 추천 시스템 분류 시나리오에 따른 분류 - 연관된 아이템 추천

    - 현재 소비되고 있는 아이템과 연관된 아이템을 추천 - 개인화 아이템 추천 쿠팡에서 탐사수 검색 시 상품 하단에는 연관 상품을 추천
  7. 추천 시스템 분류 시나리오에 따른 분류 - 연관된 아이템 추천

    - 개인화 아이템 추천 - 소비중인 아이템이 없더라도, 개인의 관심사를 찾아 소비할 만한 아이템을 추천 유튜브 고도의 개인화 추천 마켓컬리 개인화 추천이 거의 없음
  8. 추천 시스템 분류 피드백 종류에 따른 분류 - 명시적 피드백을

    사용하는 추천 시스템 - 영화 평점 / 좋아요, 싫어요 와 같이 소비자가 “명시적으로" 자신의 선호를 표현한 데이터 - 암시적 피드백을 사용하는 추천 시스템
  9. 추천 시스템 분류 피드백 종류에 따른 분류 - 명시적 피드백을

    사용하는 추천 시스템 - 암시적 피드백을 사용하는 추천 시스템 - 웹 페이지 접속 기록(상품), 음악 청취 기록과 같이 소비자가 명시적으로 표현하지는 않았지만, 선호를 보여주는 피드백
  10. 추천 시스템 분류 업데이트 주기에 따른 분류 - Offline 추천

    시스템 (정적 추천 시스템) - 특정 시점의 데이터를 사용해 추천 결과를 계산하는 방식 - Online 추천 시스템 (동적 추천 시스템) - 지속적으로 사용자의 데이터를 받아 추천 결과를 업데이트 하는 방식
  11. 추천 시스템 분류 - 시나리오에 따른 분류 - 연관된 아이템

    추천 - 개인화 아이템 추천 - 피드백 종류에 따른 분류 - 명시적 피드백 / 암시적 피드백 - 업데이트 주기에 따른 분류 - Offline 추천 시스템 (정적 추천 시스템) - Online 추천 시스템 (동적 추천 시스템) 현업에서는 다양한 추천 로직이 섞인 하이브리드 추천 시스템을 많이 사용
  12. 추천 알고리즘 Knowledge-Based Filtering 추천하고자 하는 분야의 도메인 지식을 활용해

    추천하는 방식 ex. 성별/연령별로 많이 팔리는 상품들을 모아 추천에 활용
  13. 추천 알고리즘 Content-Based Filtering 추천하려는 아이템의 콘텐츠 정보를 분석하거나, 정리된

    메타 정보를 활용해 콘텐츠별로 특징 정보를 만들고 이를 활용해 추천 ex. 상품 페이지 하단에 같은 카테고리에 있는 인기 상품 추천 오늘의 집에서 의자 상품을 클릭 맨 하단에 의자/스툴 카테고리의 인기 상품을 보여줌
  14. 추천 알고리즘 Collaborative Filtering 소비자들의 소비 이력을 사용해 소비하지 않은

    새로운 아이템을 추천 ex. 클릭 이력을 바탕으로 소비자가 다음으로 클릭할 만한 상품을 추천 당근마켓 기술블로그: https://medium.com/daangn/딥러닝-개인화-추천-1eda682c2e8c “저희는 피드(feed)라고 부릅니다. 비슷하게 첫 화면을 탐색하는 피드 관련된 서비 스인 페이스북, 인스타그램, 유튜브 등은 이미 개인화된 추천으로 피드 탐색을 더 욱 흥미있게 해주고 있습니다”
  15. 추천 알고리즘 평가 방법 오프라인 평가 사용자의 아이템에 대한 선호

    기록과 추천 시스템이 추천한 결과를 비교하여 추천 품질을 평가 특징 - 별다른 비용 지출 없이 수집된 데이터만 이용하여 평가 가능 - 여러 모델을 동시에 평가할 수 있음 - 선호 기록이 기존에 사용하고 있는 추천 모델에 영향을 받을 수 있으므로, 실제 사용자의 만족도와 평가 결과가 다를 수 있음
  16. 추천 알고리즘 평가 방법 온라인 평가 만들어진 추천 시스템을 직접

    사용자에게 노출시켜 사용자의 반응을 수집 하여 평가 특징 - 실제 사용자의 만족도를 측정한다는 측면에서 정확한 방식 - 비용이 비싼 평가 방식 (사용자의 만족도 감소 가능성 등)
  17. 아티클 함께 읽기 [카카오AI리포트]내 손안의 AI 비서, 추천 알고리듬 카카오의

    AI 추천 플랫폼, ‘토로스(TOROS)’ https://brunch.co.kr/@kakao-it/72
  18. MovieLens 영화 평가 데이터 무비렌즈에서 제공하는 영화 평가 데이터 https://movielens.org/

    - 데이터 다운로드: http://files.grouplens.org/datasets/movielens/ml-latest-small.zip
  19. MovieLens 영화 평가 데이터 지금부터 여러분이 해야하는 일 - 분석을

    위한 환경 세팅 (Microsoft Azure) - 데이터 다운로드 및 분석 환경에 업로드 - 주피터 노트북 단축키에 익숙해지기
  20. MovieLens 영화 평가 데이터 MovieLens 영화 평가 데이터 탐험하기 (EDA)

    데이터 분석 경험이 있는 분들은, 강의를 듣기 전에 스스로 분석을 해 보세요. 이번 시간에는... - Pandas, Seaborn 등 데이터 분석에 많이 사용하는 파이썬 패키지 소개 - movies.csv, ratings.csv 데이터를 뜯어 보며 MovieLens 영화 평가 데이터 파악하기 - Python lambda 표현식, Pandas apply, 정규표현식 등 데이터 분석에 유용 하게 쓰이는 도구 학습
  21. Movies 데이터 EDA 데이터 분석 경험이 있는 분들은, 강의를 듣기

    전에 스스로 분석을 해 보세요. - 데이터 정제하기 - movies 테이블의 title 컬럼에서 개봉연도 뽑아오기 - movies 테이블의 genres 컬럼 정제하기 - Seaborn을 사용해 시각화하여 데이터를 이해하기 - 데이터에 가장 빈번하게 나타나는 개봉연도는 언제일까? - 코미디 장르는, 어떤 장르와 함께 출현할까? MovieLens 영화 평가 데이터
  22. MovieLens 영화 평가 데이터 Ratings 데이터 EDA 데이터 분석 경험이

    있는 분들은, 강의를 듣기 전에 스스로 분석을 해 보세요. - Ratings 데이터의 기초 통계량 보기 - 데이터에는 몇 명의 사용자가 들어있을까? - 데이터에는 몇 개의 영화가 들어있을까? - 사람들은 평균적으로 몇 점을 줄까? - 사람들은 평균적으로 몇 개의 영화에 대한 평점을 기록했을까? - 어떤 영화를 제일 많이 봤을까? - 평점의 분포 보기
  23. Ratings 데이터에 나의 평가 데이터 붙이기 - timestamp 컬럼 가공

    - my-ratings.csv 에 나의 평점 기록하기 - MovieLens ratings.csv에 나의 평점 이어 붙이기 나의 영화 평가 데이터 [옵션]
  24. 영화 추천 시스템 추천 시스템 개발 프로세스 요약 1. 데이터

    분석으로 평점 패턴 찾기 2. 추천 알고리즘 개발 3. 모델 평가 평가 결과가 좋은 모델을 최종 선택
  25. 영화 추천 시스템 평가 방법 - RMSE (Root Mean Squared

    Error) = RMSD(Root Mean Square Deviation) 수식 출처: https://en.wikipedia.org/wiki/Root-mean-square_deviation
  26. 영화 추천 시스템 평가 방법 - train test split 전체

    데이터를 학습을 위한 데이터, 평가를 위한 데이터로 나누어 측정
  27. 영화 추천 시스템 만들기 (1) 전체를 같은 값으로 예측하기 1.

    0.5점으로 예측하기 2. (숙제) 5점으로 예측하기 3. (숙제) 평균으로 예측하기 - 평균 평점 계산은 train 데이터로, 예측과 모델 평가는 test 데이터로 하셔야 합니다.
  28. 영화 추천 시스템 만들기 (2) 사용자, 아이템 평점 기반 예측하기

    1. (숙제) 각 사용자의 평균 평점으로 예측하기 2. (숙제) 각 영화의 평균 평점으로 예측하기 - 각 사용자(영화)들의 평균 평점 계산은 train 데이터로, 예측과 모델 평가는 test 데이터로 하셔 야 합니다. - train에 해당 사용자(영화)에 대한 평점 기록이 전혀 없다면 어떻게 해야 할까요? (예를 들어, test 데이터에는 userid(movieId) 90번 데이터가 있는데, train 데이터에는 없다면요?) - 이 예측 방법은 어떤 가정을 하고 있나요? 예측의 근거를 찾아보세요.
  29. 영화 추천 시스템 만들기 (3) Content-Based Filtering 조 에이미 베스

    메그 마미 코미디 스릴러 액션 기생충 ? 4.5 1 1 0 정직한 후보 3.5 4.0 3.5 1 0 0 매드맥스 4.5 5.0 2.0 0 0 1 나를 찾아줘 5.0 5.0 1.0 5.0 0 1 0 헝거 게임: 판엠의 불꽃 4.0 3.0 4.5 0 0 1 코코 4.0 4.5 4.0 0 0 0 부산행 1.0 0.5 2.0 0 1 1 코미디 스릴러 액션 조 에이미 베스 메그 마미 각 유저의 유저 프로필
  30. 영화 추천 시스템 만들기 (3) Collaborative Filtering 1. 에이미와 다른

    유저들 간의 유사도를 계산한다. 2. 유사도가 높은 k명의 유저들에게서 ‘헝거 게임: 판엠의 불꽃’의 평점을 가져온다. 3. ‘헝거 게임: 판엠의 불꽃’의 평점을 유사도를 이용해 가중평균한다. 조 에이미 베스 메그 마미 기생충 4.5 정직한 후보 3.5 4.0 3.5 매드맥스 4.5 5.0 2.0 나를 찾아줘 5.0 5.0 1.0 5.0 헝거 게임: 판엠의 불꽃 4.0 ? 3.0 4.5 코코 4.0 4.5 4.0 부산행 1.0 0.5 2.0
  31. 조 에이미 베스 메그 마미 코미디 스릴러 액션 기생충 4.5

    1 1 0 정직한 후보 3.5 4.0 3.5 1 0 0 매드맥스 4.5 5.0 2.0 0 0 1 나를 찾아줘 5.0 5.0 1.0 5.0 0 1 0 헝거 게임: 판엠의 불꽃 4.0 3.0 4.5 0 0 1 코코 4.0 4.5 4.0 0 0 0 부산행 1.0 0.5 2.0 0 1 1 장르별 평균으로 유저 프로필 만들기 조의 유저 프로필 구하는 방법 * 조의 평점과, 조가 평점을 준 영화들의 아이템 프로필을 사용해서 계산 • 코미디: (3.5) / 1 = 3.5 • 스릴러: (5.0 + 1.0) / 2 = 3.0 • 액션: (4.5 + 4.0 + 1.0) / 3 = 3.17 코미디 스릴러 액션 조 3.5 3.0 3.17 에이미 베스 메그 마미 각 유저의 유저 프로필
  32. 조 에이미 베스 메그 마미 코미디 스릴러 액션 기생충 4.5

    1 1 0 정직한 후보 3.5 4.0 3.5 1 0 0 매드맥스 4.5 5.0 2.0 0 0 1 나를 찾아줘 5.0 5.0 1.0 5.0 0 1 0 헝거 게임: 판엠의 불꽃 4.0 3.0 4.5 0 0 1 코코 4.0 4.5 4.0 0 0 0 부산행 1.0 0.5 2.0 0 1 1 장르별 평균으로 유저 프로필 만들기 코미디 스릴러 액션 조 3.5 3.0 3.17 에이미 4.5 3.33 2.75 베스 4.0 1.0 2.0 메그 3.5 2.0 2.5 마미 5.0 4.5 각 유저의 유저 프로필 * Cold-Start 문제: 마미는 코미디 장르가 포함되는 영화에 평점을 준 적이 한 번도 없기 때문에, 마미의 유저 프로필 중 코미디 장르에 대한 값은 NaN이 된다. 따라서 오직 코미디 장르만 가진 ‘정직한 후보'에 대한 마미의 예상 평점은 구할 수가 없다.
  33. 조 에이미 베스 메그 마미 코미디 스릴러 액션 기생충 3.25

    4.5 1 1 0 정직한 후보 3.5 4.0 3.5 1 0 0 매드맥스 4.5 5.0 2.0 0 0 1 나를 찾아줘 5.0 5.0 1.0 5.0 0 1 0 헝거 게임: 판엠의 불꽃 4.0 3.0 4.5 0 0 1 코코 4.0 4.5 4.0 0 0 0 부산행 1.0 0.5 2.0 0 1 1 평점 예상하기 코미디 스릴러 액션 조 3.5 3.0 3.17 에이미 4.5 3.33 2.75 베스 4.0 1.0 2.0 메그 3.5 2.0 2.5 마미 5.0 4.5 각 유저의 유저 프로필 조의 코미디 점수 * 기생충의 코미디 더미변수 값 3.5 * 1 조의 스릴러 점수 * 기생충의 스릴러 더미변수 값 3.0 * 1 조의 액션 점수 * 기생충의 액션 더미변수 값 3.17 * 0 기생충에 포함된 장르의 개수 (장르 더미변수 값의 합) 2 3.25 조의 ‘기생충’ 예상 평점
  34. 조 에이미 베스 메그 마미 코미디 스릴러 액션 기생충 3.25

    4.5 2.5 2.75 5.0 1 1 0 정직한 후보 3.5 4.5 4.0 3.5 1 0 0 매드맥스 4.5 5.0 2.0 2.5 4.5 0 0 1 나를 찾아줘 5.0 5.0 1.0 2.0 5.0 0 1 0 헝거 게임: 판엠의 불꽃 4.0 2.75 2.0 3.0 4.5 0 0 1 코코 4.0 4.5 4.0 0 0 0 부산행 1.0 0.5 1.5 2.0 4.75 0 1 1 평점 예상하기 코미디 스릴러 액션 조 3.5 3.0 3.17 에이미 4.5 3.33 2.75 베스 4.0 1.0 2.0 메그 3.5 2.0 2.5 마미 5.0 4.5 각 유저의 유저 프로필
  35. 조 에이미 베스 메그 마미 코미디 스릴러 액션 기생충 4.5

    1 1 0 정직한 후보 3.5 4.0 3.5 1 0 0 매드맥스 4.5 5.0 2.0 0 0 1 나를 찾아줘 5.0 5.0 1.0 5.0 0 1 0 헝거 게임: 판엠의 불꽃 4.0 3.0 4.5 0 0 1 코코 4.0 4.5 4.0 0 0 0 부산행 1.0 0.5 2.0 0 1 1 장르별 평균으로 유저 프로필 만들기 조의 유저 프로필 구하는 방법 * 조의 평점과, 조가 평점을 준 영화들의 아이템 프로필을 사용해서 계산 • 코미디: (3.5) / 1 = 3.5 • 스릴러: (5.0 + 1.0) / 2 = 3.0 • 액션: (4.5 + 4.0 + 1.0) / 3 = 3.17 코미디 스릴러 액션 조 3.5 3.0 3.17 에이미 베스 메그 마미 각 유저의 유저 프로필
  36. 조 에이미 베스 메그 마미 코미디 스릴러 액션 기생충 4.5

    1 1 0 정직한 후보 3.5 4.0 3.5 1 0 0 매드맥스 4.5 5.0 2.0 0 0 1 나를 찾아줘 5.0 5.0 1.0 5.0 0 1 0 헝거 게임: 판엠의 불꽃 4.0 3.0 4.5 0 0 1 코코 4.0 4.5 4.0 0 0 0 부산행 1.0 0.5 2.0 0 1 1 회귀 모델로 유저 프로필 만들기 조 에이미 베스 메그 마미 각 유저의 유저 프로필 독립변수 종속변수
  37. 회귀 모델 조의 실제 평점 조가 평점을 준 영화의 개수

    조의 MSE Σ 조의 예상 평점 2 MSE가 최소값이 되는 절편 와 계수 를 찾는다.
  38. OLS Linear Regression 모델로 유저 프로필 만들기 조의 액션 weight

    * 액션 더미변수 값 조의 스릴러 weight * 스릴러 더미변수 값 조의 코미디 weight * 코미디 더미변수 값 조의 기본 점수 (장르 더미변수 값이 모두 0일 때 조의 점수) 기본 점수 (절편) no genres listed Action Adv entu re Ani mati on Child ren Com edy Crime Doc ume ntary Dra ma Fant asy Film- Noir Horr or IMAX Musi cal Myst ery Roma nce Sci- Fi Thrill er War Wes tern 3.24 1.01 -0.21 0.12 0.65 -0.24 -0.08 0.17 0.38 0.29 0.05 0.33 -0.19 0.36 -0.06 0.19 -0.03 0.14 0.12 0.47 0.31 실습용 Train 데이터(random_state=42) 중 USER 414 의 유저 프로필
  39. 1. 각각의 점으로부터 직선까지의 거리를 잰다. 2. 전반적인 거리가 작아질

    때까지 직선을 이동 최소자승법 조의 실제 평점 조가 평점을 준 영화의 개수 조의 MSE Σ 조의 예상 평점 2 MSE가 최소값이 되는 절편 와 계수 를 찾는다.
  40. 조의 실제 평점 조가 평점을 준 영화의 개수 조의 MSE

    Σ 조의 예상 평점 2 + Regularization Term Linear Model with Regularization MSE가 최소값이 되는 절편 와 계수 를 찾는다.
  41. 조의 실제 평점 조가 평점을 준 영화의 개수 조의 MSE

    Σ 조의 예상 평점 2 + Regularization Term Linear Model with Regularization From Christoph Bishop's book: Pattern recognition and machine learning MSE가 최소값이 되는 절편 와 계수 를 찾는다.
  42. 조의 실제 평점 조가 평점을 준 영화의 개수 조의 MSE

    Σ 조의 예상 평점 2 + Regularization Term Linear Model with Regularization https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.Lasso.html 제 1 정규화 제 2 정규화 MSE가 최소값이 되는 절편 와 계수 를 찾는다.
  43. Linear Model with Regularization Ridge 제 2 정규화 (alpha=1.0) Lasso

    제 1 정규화 (alpha=0.01) sample: user 414 Feature Selection
  44. 마무리 후속 강의에서는 - 특성 추출부터 시작하는 Content-Based Recommendation -

    Collaborative Filtering - Latent Factor Model 등 좀 더 다양한 추천 알고리즘과 특성 추출에 대해서 다룹니다. 기대해 주세요!