콘텐츠 기반 필터링 | [토크On세미나] 추천시스템 분석 입문하기 2강 – 컨텐츠 기반 모델 (유사도 함수, Tf-Idf) | T아카데미 17634 좋은 평가 이 답변

당신은 주제를 찾고 있습니까 “콘텐츠 기반 필터링 – [토크ON세미나] 추천시스템 분석 입문하기 2강 – 컨텐츠 기반 모델 (유사도 함수, TF-IDF) | T아카데미“? 다음 카테고리의 웹사이트 https://you.experience-porthcawl.com 에서 귀하의 모든 질문에 답변해 드립니다: you.experience-porthcawl.com/blog. 바로 아래에서 답을 찾을 수 있습니다. 작성자 SKplanet Tacademy 이(가) 작성한 기사에는 조회수 6,061회 및 좋아요 101개 개의 좋아요가 있습니다.

Table of Contents

콘텐츠 기반 필터링 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 [토크ON세미나] 추천시스템 분석 입문하기 2강 – 컨텐츠 기반 모델 (유사도 함수, TF-IDF) | T아카데미 – 콘텐츠 기반 필터링 주제에 대한 세부정보를 참조하세요

이번 과정에서는 추천시스템의 전반적인 내용에 대해 알아보고, 컨텐츠기반 및 협업필터링 모델에 대해 학습합니다. 이후 ‘Goodbooks-10k’ 데이터를 이용한 추천시스템 분석 방법에 대해 알아봅니다.
▶ 동영상 학습 전에 \”사전 학습자료\” 자료를 꼭 읽어보신 후 필요한 선수지식과 SW를 설치하시기 바랍니다.
▶ 이번 과정 캐글 노트북 환경에서 진행하였습니다.
https://www.kaggle.com/zygmunt/goodbooks-10k
▶ 강의자료는 T아카데미 홈페지를 참고해 주시기 바랍니다.

콘텐츠 기반 필터링 주제에 대한 자세한 내용은 여기를 참조하세요.

카카오 AI추천 : 카카오의 콘텐츠 기반 필터링 (Content-based …

콘텐츠 기반 필터링은 아래 그림에 표현된 것과 같이, 사용자가 소비한 아이템에 대해 아이템의 내용(content)이 비슷하거나 특별한 관계가 있는 다른 …

+ 여기에 자세히 보기

Source: tech.kakao.com

Date Published: 3/24/2022

View: 8732

추천 시스템 – 컨텐츠 기반 필터링이란? (CBF) – Today I Learned.

컨텐츠 기반 필터링은 ‘내용(Content)’에 알맞는 아이템을 추천해주는 것입니다. 유저 X가 아이템 Y를 구매했다면, Y와 비슷한 아이템을 추천해주는 …

+ 더 읽기

Source: western-sky.tistory.com

Date Published: 6/10/2022

View: 7781

[추천시스템] 3) 컨텐츠 기반 필터링(Contents-based Filtering)

아이템에 대한 프로필 데이터를 이용해 과거에 사용자가 좋아했던 아이템과 비슷한 유형의 아이템을 추천하는 시스템을 컨텐츠 기반 필터링이라고 …

+ 더 읽기

Source: abluesnake.tistory.com

Date Published: 5/15/2021

View: 1498

추천시스템02. 콘텐츠기반 필터링(content based filtering) 구현

콘텐츠 기반 필터링(content based filtering). 사용자가 특정 아이템을 선호하는 경우, 그 아이템과 ‘비슷한’ 콘텐츠를 가진 다른 아이템을 추천 …

+ 여기에 더 보기

Source: pearlluck.tistory.com

Date Published: 12/24/2021

View: 7594

추천시스템: 컨텐츠 기반 필터링 :: 빨간연필

컨텐츠 기반 필터링은 사용자가 과거에 경험했던 아이템 중 비슷한 아이템을 현재 시점에서 추천하는 것입니다. Information Retrieval과 Machine …

+ 여기에 표시

Source: skyeong.net

Date Published: 1/4/2022

View: 3446

추천 시스템 1 — 기본 개념과 콘텐츠 기반 추천 구현 – 김희규

콘텐츠 기반 추천은 기존에 사용자가 선택한 컨텐츠와 비슷한 컨텐츠를 추천하는 방법입니다. 예를 들어 사용자가 토이 스토리 1을 봤다면, 비슷한 애니메이션인 토이 …

+ 자세한 내용은 여기를 클릭하십시오

Source: heegyukim.medium.com

Date Published: 8/18/2021

View: 5177

컨텐츠 기반 시스템 & 협업 필터링 (Content-based Systems …

컨텐츠 기반 시스템 & 협업 필터링 (Content-based Systems & Collaborative Filtering). r4v3n-k 2019. 12. 22. 14:34. 반응형. 데이터 간 유사도.

+ 더 읽기

Source: movefast.tistory.com

Date Published: 9/10/2021

View: 2191

TF-IDF를 활용한 컨텐츠 기반 필터링 (Content-based Filtering)

컨텐츠 기반 필터링이란 유저가 선호하는 아이템을 기반으로 해당 아이템과 유사한 아이템을 추천하는 것을 말합니다. 위의 그림을 보면, 유저가 “빨간 원 …

+ 여기를 클릭

Source: casa-de-feel.tistory.com

Date Published: 4/20/2022

View: 6393

2. Content-based Filtering(콘텐츠 기반 필터링)

Content-based Filtering(콘텐츠 기반 필터링). 유저가 좋아하는 아이템의 특성을 기반으로 유사한 아이템을 추천해준다. 예를 들여 영화에서도 유사한 장르나 줄거리 …

+ 자세한 내용은 여기를 클릭하십시오

Source: potato-potahto.tistory.com

Date Published: 1/30/2021

View: 392

주제와 관련된 이미지 콘텐츠 기반 필터링

주제와 관련된 더 많은 사진을 참조하십시오 [토크ON세미나] 추천시스템 분석 입문하기 2강 – 컨텐츠 기반 모델 (유사도 함수, TF-IDF) | T아카데미. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

[토크ON세미나] 추천시스템 분석 입문하기 2강 - 컨텐츠 기반 모델 (유사도 함수, TF-IDF) | T아카데미
[토크ON세미나] 추천시스템 분석 입문하기 2강 – 컨텐츠 기반 모델 (유사도 함수, TF-IDF) | T아카데미

주제에 대한 기사 평가 콘텐츠 기반 필터링

  • Author: SKplanet Tacademy
  • Views: 조회수 6,061회
  • Likes: 좋아요 101개
  • Date Published: 2021. 1. 24.
  • Video Url link: https://www.youtube.com/watch?v=g2-z0saMteA

카카오 AI추천 : 카카오의 콘텐츠 기반 필터링 (Content-based Filtering in Kakao)

카카오 서비스 사용자들의 아이템(콘텐츠 또는 상품) 소비 패턴을 살펴보면, 기존에 소비한 아이템과 유사한 아이템을 소비하는 경우를 쉽게 찾아볼 수 있습니다. 예를 들면, 브런치의 특정 작가의 글을 연속해서 보거나, 멜론에서 한 장르의 음악을 많이 듣는다거나, 카카오웹툰, 카카오페이지에서 같은 장르의 작품을 많이 감상한다거나, 선물하기 서비스에서 특정 브랜드의 상품을 자주 구매하는 경우가 여기에 해당됩니다.

이렇게 소비 패턴이 뚜렷하다면 아이템의 정보를 활용해 추천하는 콘텐츠 기반 필터링(Content-based filtering) 방식이 효과적일 수 있습니다. 이번 글에서는 콘텐츠 기반 필터링에 대해서 알아보고, 카카오의 서비스에서 어떻게 적용이 되어 있는지 소개하고자 합니다.

콘텐츠 기반 필터링

콘텐츠 기반 필터링은 아래 그림에 표현된 것과 같이, 사용자가 소비한 아이템에 대해 아이템의 내용(content)이 비슷하거나 특별한 관계가 있는 다른 아이템을 추천하는 방법을 말합니다. 아이템의 내용은 아이템을 표현할 수 있는 데이터를 지칭하는데, 아이템 카테고리, 아이템 이름과 같은 텍스트 데이터, 이미지 데이터가 주로 사용됩니다. 다른 사용자의 아이템 소비 이력을 활용하는 협업 필터링(Collaborative filtering) 과는 주로 사용하는 데이터가 다르다는 차이점이 있습니다.

아이템이 유사한지 확인하려면 아이템의 비슷한 정도(유사도, similarity)를 수치로 계산할 수 있어야 합니다. 유사도 계산을 위해서 일반적으로 아이템을 벡터 형태로 표현하고 이들 벡터 간의 유사도 계산 방법을 많이 활용합니다.

아이템을 잘 표현할 수 있는 벡터를 만드는 데 널리 사용되는 방법으로는 (1) 원 핫 인코딩(One-hot encoding), (2) 임베딩(Embedding)이 있습니다.

원 핫 인코딩(One-hot encoding)은 아이템의 카테고리와 같은 범주형 데이터(categorical feature)를 표현하는 간단한 방법으로, 표현해야 하는 범주의 개수를 크기로 갖는 벡터를 만들어 데이터를 1과 0으로 표현하는 방법입니다. 아래 그림처럼 4가지의 아이템의 색상 데이터를 표현하고자 한다면, 그림 오른쪽처럼 특정 색상만 1의 값을 갖고 나머지는 0의 값을 갖는 벡터를 만들 수 있습니다.

표현하는 범주형 데이터의 종류에 따라 0과 1 대신 다양한 실숫값을 사용하기도 합니다. 예를 들어, 텍스트 데이터의 경우는 등장하는 단어를 각각의 범주로 생각하고 각 단어의 중요도나 빈도를 반영하기 위해 TF-IDF 가중치(weight)를 계산해 1 대신 넣기도 합니다.

카테고리와 같은 간단한 범주형 데이터의 경우 원 핫 인코딩(One-hot encoding)으로 표현이 가능하지만, 표현해야 하는 데이터 범주의 영역이 넓거나 이미지와 같이 복잡한 데이터인 경우는 데이터를 고정된 크기의 벡터로 표현하는 임베딩(Embedding) 방법을 많이 사용합니다. 벡터의 크기가 고정되어 있어 다루어야 하는 데이터의 크기가 늘어나더라도 상대적으로 적은 크기의 데이터를 통해 표현이 가능하고 딥러닝을 활용한 텍스트, 이미지 모델을 적용해 좋은 품질의 벡터를 얻을 수 있습니다.

텍스트 데이터의 경우는 Word2Vec 모델이 제일 널리 알려지고 사용되는 텍스트 임베딩 모델입니다. Word2Vec으로 각 단어의 임베딩 벡터를 학습하고, 텍스트에 등장하는 단어의 벡터를 합하거나 TF-IDF 가중 합산을 하는 방식으로 많이 활용되고 있습니다. 이후에 텍스트에 등장하는 단어 사이의 순서를 고려하기 위한 CNN, RNN 모델들이 제안되었고, 최근에는 BERT와 같은 대규모 텍스트 모델을 임베딩 모델로 활용하기 위한 다양한 연구가 등장했습니다.

이미지 데이터의 경우는 ImageNet 데이터의 카테고리 분류를 위해 미리 학습된 모델을 바탕으로 실제 사용할 데이터에 대해 파라미터 미세 조정(Fine-tuning)을 수행한 다음, 분류 레이어(classification layer)의 입력으로 들어가는 보틀넥 피처(Bottleneck feature)를 이미지 임베딩으로 사용하는 방법이 일반적입니다. 인물 사진이나 쇼핑과 같은 일부 도메인에서는 레이어 구조를 수정해 카테고리 분류 대신 유사, 동일성 여부를 직접 판별하는 샴 네트워크(Siamese network), 삼중항 네트워크(Triplet network)를 적용하는 방법도 있습니다.

이렇게 표현된 아이템 벡터는 내적(Dot product), 코사인 유사도(Cosine similarity), 피어슨 상관 계수(Pearson correlation coefficient)와 같은 다양한 벡터 유사도 측정 방식을 통해 아이템 유사도를 측정하는 용도로 사용됩니다. 측정된 유사도를 바탕으로 사용자가 최근 소비한 아이템과 유사한 아이템을 추천하면 콘텐츠 기반 필터링을 통한 추천이 됩니다.

콘텐츠 기반 필터링은 아이템 정보만 있으면 추천이 가능하기 때문에 소비 이력이 없는 새로운 아이템에 대한 추천이 바로 가능하다는 장점이 있습니다. 하지만 충분한 소비 이력이 쌓인 아이템에 대해서는 협업 필터링에 비해 추천 성능이 밀린다는 인식이 보편적입니다. 이런 이유로, 콘텐츠 기반 필터링은 추천 대상 아이템이 빠르게 바뀌는 상황이나 소비 이력이 적은 아이템에 대해, 협업 필터링을 보완하는 용도로 많이 활용됩니다.

카카오웹툰에서의 콘텐츠 기반 필터링

콘텐츠 기반 필터링을 통한 추천 로직은 카카오의 많은 서비스에 이미 적용이 되어 있습니다. 이번 단락에서는 카카오웹툰의 연관 작품 추천 영역에 적용된 콘텐츠 기반 필터링 로직을 소개하겠습니다.

아래 화면은 카카오웹툰에서 작품을 열람하기 위해 작품 리스트에서 작품을 클릭하면 진입하게 되는 작품 홈 영역입니다. 작품 홈 영역 상단에는 해당 작품을 본 사용자가 볼 만한 다른 작품을 추천해 주는 연관 추천 영역(“A 작품과 비슷한 작품들” 영역)이 있습니다. 사용자는 좌우로 추천 리스트를 스와이프 해 다른 작품을 탐색하고 열람할 수 있습니다. 여기에 제공되는 추천에 콘텐츠 기반 필터링을 활용하고 있습니다.

새로운 작품이 추가되면, 콘텐츠 기반 필터링을 위해 아래와 같은 데이터 준비 작업을 실시간으로 진행합니다.

작품 줄거리 텍스트 데이터를 바탕으로 작품 텍스트 임베딩을 생성합니다. 텍스트 임베딩에는 카카오가 보유한 다양한 텍스트 데이터로 사전에 학습한 한국어 임베딩 모델을 사용합니다.

사전에 다양한 이미지를 사용해 학습 시켜 둔 이미지 모델을 사용해 작품 대표 이미지의 임베딩을 생성합니다.

카카오브레인에서 개발한 웹툰 그림체 추출 모델을 사용해 작품 대표 이미지의 그림체 임베딩을 생성합니다.

특정 작품에 대한 연관 추천 결과를 계산할 때, 미리 준비해둔 콘텐츠 기반 필터링을 위한 데이터를 사용합니다. 앞서 얘기했듯이 콘텐츠 기반 필터링의 장점과 단점이 있기 때문에 이것만으로 추천 결과를 계산하지는 않고 다양한 모델로 얻은 추천 결과를 함께 사용합니다.

먼저, 앞서 알아본 3가지 임베딩을 통해 찾은 유사한 작품들 이외에도 협업 필터링과 같이 다른 방법으로 학습한 임베딩을 사용해 각각 유사한 작품 상위 K개를 추출합니다.

예를 들어, 위의 그림과 같이 “슬” 작가님의 <슬프게도 이게 내 인생>이라는 작품 대상으로 추천 결과를 계산한다면, 협업 필터링, 텍스트, 그림체, 이미지 임베딩을 가지고 각각 유사도가 높은 작품을 추려내고 이 유사한 작품들을 <슬프게도 이게 내 인생> 작품의 연관 추천 대상으로 선정합니다.

이후에는 선정한 유사 작품들을 멀티암드 밴딧(multi-armed bandit) 알고리즘을 통해 사용자가 추천받은 작품을 열람할 확률을 최대로 만들 수 있도록 순서를 조정해 사용자에게 노출합니다. 멀티암드 밴딧(multi-armed bandit) 알고리즘은 사용자가 열람하는 이벤트를 실시간으로 받아 열람 확률 최대화를 계속해서 진행합니다. 이로 인해 사용자는 항상 최근 인기도와 작품 내용 모두를 반영한 최신 추천 결과를 받을 수 있습니다.

마치며

이번 글에서는 다양한 추천 영역에서 활용되고 있는 콘텐츠 기반 필터링의 기본적인 아이디어와 카카오웹툰 연관 추천 영역에 적용된 사례를 살펴봤습니다.

카카오웹툰에서는 텍스트, 이미지와 같은 기본적인 임베딩 모델은 물론, 웹툰 도메인에 맞게 만든 그림체 추출 모델을 만들어 추천 대상을 다양하게 준비해두고 콘텐츠 기반 필터링, 협업 필터링, 멀티암드 밴딧 등 여러 알고리즘을 결합시킨 로직으로 추천 결과를 만들고 있습니다. 이 글이 콘텐츠 기반 필터링의 실제 적용 사례를 이해하는 데 도움이 되었길 바랍니다.

함께 하면 좋은 글

추천 시스템 – 컨텐츠 기반 필터링이란? (CBF)

컨텐츠 기반 필터링

코로나로 인해 오프라인보다는 온라인 구매가 더 많아지고 있습니다.

온라인 마켓의 장점은 ‘시간과 공간’에 제한되지 않는다는 것 같습니다.

문을 열고 닫는 시간도, 물건을 진열한 매장도 필요 없으니까요.

또한 사용자에게 구매할 가능성이 높은 제품을 ‘추천’해 줄 수도 있습니다.

이번 포스팅에서는 추천 시스템을 구현하는 방법 중 하나인 컨텐츠 기반 필터링에 대해 정리해보려고 합니다.

1. 컨텐츠 기반 필터링

추천시스템은 Utility Matrix에 기반하고 있습니다.

Utility Matrix는 어떤 유저가 어떤 아이템들을 구매했는지를 나타낸 행렬입니다.

컨텐츠 기반 필터링은 ‘내용(Content)’에 알맞는 아이템을 추천해주는 것입니다.

유저 X가 아이템 Y를 구매했다면, Y와 비슷한 아이템을 추천해주는 것이죠.

영화를 예를 들면 어떤 유저가 ‘인셉션’과 ‘인터스텔라’에 좋은 평점을 주었습니다.

그럼 두 영화의 공통적인 특징을 뽑아낸 뒤 그에 맞는 영화를 추천해주는 방식입니다.

예를 들어 두 영화 모두 SF영화이고 감독은 크리스토퍼 놀란이므로

놀란 감독의 SF장르 신작인 ‘테넷’을 추천할 수 있습니다.

유저가 좋아한 아이템들을 뽑아낸 목록을 Item Profile이라고하고,

Item Profile로부터 공통된 특징을 뽑아낸 결과가 User Profile입니다.

결국 User Profile의 특징에 기반한 아이템을 추천해 주는 것이죠.

Item이 영화라면, 감독, 제목, 배우 등이 있고

Item이 텍스트라면, 문서 내에 있는 중요한 키워드들로 구성될 수 있습니다.

2. 컨텐츠 기반 필터링의 장점

컨텐츠 기반 필터링의 장점은 크게 4가지입니다.

1. 다른 유저의 데이터가 필요하지 않다.

2. 개인의 독특한 취향을 고려한 추천이 가능하다.

3. 새로운 아이템이나 대중적이지 않은 아이템도 추천할 수 있다.

4. 사용자에게 추천하는 이유에 대한 설명이 가능하다.

1번,2번,3번은 개인의 취향을 기반으로 ‘내용’ 중심 추천을 하기 때문에 가능합니다.

특히 1번의 경우 Cold-Start problem과 Sparsity problem으로부터 자유롭기 때문입니다.

Cold-Start Problem는 협업 필터링에서 새로운 아이템이 추가되었을 때, 평가한 사람이 없어 추천이 어려운 문제고

Sparsity Problem는 모든 유저들이 모든 아이템에 대해 평가하지 않기 때문에 발생하는 문제입니다.

하지만 컨텐츠 기반 필터링은 개인의 평가에 기반하기 때문에 해당되지 않는 장점이 있습니다.

3번을 협업 필터링으로 구현 시 문제점으로 언급되는 No first-rater problem 문제가 있습니다.

협업 필터링은 타인의 평가 데이터가 필요한 데,

아무도 평가하지 않은 Item은 추천할 수 없는 문제입니다.

반면, 컨텐츠 기반 필터링은 아무도 평가하지 않은 새로운 아이템과 인기 없는 아이템이라도

해당 Feature들만 뽑아낼 수 있다면 추천이 가능한 것이죠.

그리고 왜 추천하는지 설명할 수 있는 것도 장점입니다.

Item Profile을 뽑아낼 때 구성한 Feature들로 설명해주면 되기 때문입니다.

3. 컨텐츠 기반 필터링의 단점

1. Feature를 뽑아내기 어려운 데이터들이 존재한다.

2. 처음 유입된 유저에 대해서는 추천할 수 없다.

반면 단점은 Feature들을 뽑아내기 어려운 Item들이 있습니다.

음악 같은 경우 종류가 너무 다양하기 때문에 공통된 Feature를 찾기가 어렵습니다.

이미지도 공통된 특징을 뽑아내기가 어려운 편에 속합니다.

또한 새로운 유저에 대해서는 추천이 어렵습니다.

주변 유저 평가는 영향을 받지 않지만,

아예 처음 유입된 유저는 무엇을 좋아하는지 모르기 때문에 추천할 수 없는 문제가 있습니다.

이상으로 추천시스템을 구현하는 방식 중 하나인 컨텐츠 기반 필터링에 대해 정리해보았습니다.

다음 포스팅에서는 협업 필터링에 대해 정리해보겠습니다. 🙂

[추천시스템] 3) 컨텐츠 기반 필터링(Contents-based Filtering)

지난 추천시스템 2편에서는 추천시스템을 구축하기 위해 필요한 데이터의 종류와 대표적인 추천알고리즘을 간단하게 알아보았습니다. 본 포스팅에서는 널리 쓰이는 추천시스템 중 하나인 컨텐츠 기반 필터링에 대해 알아보겠습니다.

컨텐츠 기반 필터링(Contents-based Filtering)

아이템에 대한 프로필 데이터를 이용해 과거에 사용자가 좋아했던 아이템과 비슷한 유형의 아이템을 추천하는 시스템을 컨텐츠 기반 필터링이라고 합니다. 핵심은 사용자가 이전에 높은 평점을 주었던(좋았다고 평가했던) 아이템 A와 유사한 아이템 A’를 찾는 것 이죠. 물론 이 아이템 A’는 사용자가 과거에 경험하지 않았던 아이템이어야 합니다.

예를 들어, 사용자가 영화 캡틴마블을 재밌게 보았다면 캡틴 마블에 대한 설명을 바탕으로 성격이 유사한 영화 블랙 위도우를 추천하는 것이죠.

컨텐츠 기반 필터링의 분석 절차

1. 이미지, 음성, 태그, 상품 설명서, 리뷰 등과 같은 아이템의 설명으로부터 아이템의 특징을 추출 합니다.

이때 아이템의 설명을 알고리즘(모델)이 이해할 수 있는 형태인 벡터로 변환합니다.

2. 알고리즘을 이용 하여 과거에 좋게 평가했던 아이템 A와 유사한 아이템들을 선별 합니다.

만약 군집화 알고리즘 이용한다면, 아이템들을 몇 종류의 군집으로 나눈 후 아이템 A와 동일한 군집에 있는 아이템 A’, B, C, D를 추천할 아이템 후보로 선정하는 것이죠.

여기서 아이템 사이의 유사성을 무엇으로 파악하고(어떤 특징을 사용할 것인지), 어떻게 계산할지가 컨텐츠 기반 필터링의 핵심이라고 할 수 있습니다.

3. (사용할 수 있는 데이터에 평점이 있는 경우) 추천할 아이템 후보 중에서도 평점이 높을 것으로 예상되는 일부 아이템 A’과 B를 우선적으로 추천 합니다.

컨텐츠 기반 필터링의 장단점

장점

다른 사용자들의 데이터가 없어도 추천이 가능 추천을 제공받는 사용자의 컨텐츠 이용내역만 있으면 됩니다.

새로 추가된 아이템, 평점이 없는 유명하지 않은 아이템도 추천이 가능 아이템의 설명만 있다면 다양한 아이템이 후보군이 될 수 있습니다.

추천을 하는 근거를 설명할 수 있음 아이템의 설명(feature)을 이용해 아이템간의 유사성을 계산하기 때문에 어떤 특징이 유사성의 근거가 되는지 파악할 수 있습니다.

단점

아이템의 설명을 구성하는 과정에서 주관성이 개입될 수 있음 사용자 A는 영화 X를 흥미진진하다, 박진감 넘친다고 평가할 수 있지만, 반대로 사용자 B는 동일한 영화를 두고 폭력적이라고 평가할 수 있습니다.

사용자가 과거에 좋아했던 아이템을 제공하지 않으면 추천이 어려움 때문에 몇몇 동영상서비스 플랫폼에서는 사용자가 서비스를 이용하기 전, 이전에 보았던 영상에 대한 평가를 받습니다. 이 과정이 어렵다면 사용자의 단순 프로필(성별, 나이, 지역 등)을 이용하여 비차별적인 매스마케팅식으로 아이템을 제공하고, 이후에 사용이력이 쌓이면 그때부터 개인화 추천을 시도할 수도 있습니다.

아이템 속성 정보 간의 연관성을 바탕으로 하기 때문에 사용자가 이미 알고 있거나, 알고 있는 것과 유사한 아이템만을 주로 추천하는 문제점 지나치게 특정된 아이템들 만을 추천하여 사용자의 다양한 취향을 반영할 수 없습니다. 필터 버블(Filter bubble) : 개인화 추천으로 생긴 정보편식 현상으로, 사용자가 제한된 주제와 관점을 가진 정보만을 접하게 되는 것을 말합니다. 필터링된 정보만을 취득하여 다양한 생각들을 알 수 없게 되고 스스로 가치판단을 할 수 없게 된다는 문제가 있습니다.

유사 컨텐츠를 찾는 방법

앞서 컨텐츠 기반 필터링의 분석 절차에서 유사성을 무엇으로 파악하고 어떻게 계산하는지 가 핵심이라고 짚었는데요, 다양한 아이템들 사이에서 유사한 아이템을 찾기 위해 벡터간 유사도 계산을 이용할 수 있습니다.

출처: https://intellifysolutions.com/blog/similarity-distance-measures-2/

코사인 유사도(Cosine Similarity) : 두 점 사이의 각도를 측정한 지표로, 값이 작으면 두 데이터가 가까이 있다 = 유사하다는 의미입니다.

: 두 점 사이의 각도를 측정한 지표로, 값이 작으면 두 데이터가 가까이 있다 = 유사하다는 의미입니다. 유클리드 거리(Euclidean Distance) : 두 점 사이의 거리를 측정한 지표로, 값이 작으면 두 데이터가 가까이 있다 = 유사하다는 의미입니다.

: 두 점 사이의 거리를 측정한 지표로, 값이 작으면 두 데이터가 가까이 있다 = 유사하다는 의미입니다. 맨하탄 거리(Manhattan Distance): 두 점 사이의 거리를 측정하되, 수평-수직으로만 이동하는 거리를 구합니다.

이외 유사도의 종류와 파이썬을 활용해 아이템 벡터간 유사도를 계산하는 방법은 유사도의 종류와 파이썬 구현 포스팅을 참고해주시길 바랍니다.

이렇게 구해진 벡터간 유사도(거리)를 이용 해 k-근접이웃 알고리즘, DBSCAN과 같은 군집화 알고리즘을 적용 하면 유사한 아이템들을 찾을 수 있습니다. 사용자가 좋아했던 아이템이 속하는 군집을 찾고, 그 군집에 같이 포함된 다른 아이템들을 추천해 주는 방식이죠.

이상으로 컨텐츠 기반 필터링의 개념과 분석 절차 및 장단점, 유사 컨텐츠를 찾는 방법에 대해 알아보았습니다. 사람들의 다양한 취향을 만족시킬 수 있는 컨텐츠가 쏟아져 나오는 만큼, 컨텐츠를 제공하는 플랫폼과 플랫폼 사용자 모두 적절한 컨텐츠를 알아서 찾아주는 알고리즘이 절실하게 필요하겠죠. 엄청나게 복잡한 모델이 아니더라도 유사성만 판정해도 되기 때문에 컨텐츠 기반 필터링은 여러 플랫폼에서 여전히 널리 쓰이고 있다고 합니다.

다음 포스팅에서는 컨텐츠 기반 필터링과 함께 보편적으로 쓰이는 협업 필터링에 대해 알아보겠습니다. 🤗

참고

Beginners Guide to learn about Content Based Recommender Engines

https://ko.wikipedia.org/wiki/%ED%95%84%ED%84%B0_%EB%B2%84%EB%B8%94

추천시스템02. 콘텐츠기반 필터링(content based filtering) 구현

728×90

콘텐츠 기반 필터링(content based filtering)

사용자가 특정 아이템을 선호하는 경우, 그 아이템과 ‘비슷한’ 콘텐츠를 가진 다른 아이템을 추천해주는 방식

굉장히 단순한 아이디어. 요즘엔 자주 사용하지 않는다.

예를 들어 사용자가 a가 itemA 영화에 높은평점을 주었을떄,

그 영화가 스릴러 영화고, 봉준호 감독이라면

이와 깉이 봉준호 감독의 다른 스릴러 영화를 추천해주는 것이다.

데이터셋 : https://www.kaggle.com/tmdb/tmdb-movie-metadata?select=tmdb_5000_movies.csv

목적 : 콘텐츠 기반 필터링으로 사용자에게 비슷한 영화를 추천해준다

1. 데이터준비

2. 데이터전처리

사용할 컬럼 정리

vote_averages(평점평균), vote_count(평점 카운트), popularity(인기도), title(영화제목) 등등

평점 전처리

현재 영화평점의 평균평점이 불공정하게 처리되어 있다.

그래서 데이터를 제공해준 imdb에서 제안한 weight rating으로 평점을 다시 처리한다.

아예 공식을 제공해주고 있어서 그 값을 적용해서 새로운 score컬럼 값을 생성한다.

콘텐츠 기반 필터링을 위한 컬럼추출

사용자가 특정 아이템을 선호하는 경우, 그 아이템과 ‘비슷한’ 콘텐츠를 가진 다른 아이템을 추천해주는 방식

이때 ‘비슷함’의 기준을 장르와 키워드로 분석할 수 있다.

그런데 장르와 키워드의 값은 list안에 dict이 포함된 구조이다.

근데 이걸 string으로 변환해주어야하기 떄문에 ast 패키지 안에 있는 literal_eval로 변환시킨다.

바뀐 내용이 없어보이지만, 이제 genres안에 있는 값들을 dict형식으로 되어 있어서 key를 가지고 뽑아올 수 있따.

그리고 그 값을 string으로 변환하는것 까지 lambda를 apply해서 장르와 키워드 값을 변형한다.

3. 콘텐츠 기반 필터링추천

장르 벡터화

장르를 기준으로 필터링할 경우 (즉, 유사한 장르를 추천해주는 경우)

일단 장르 들은 띄어쓰기가 구분된 한 문자열로 저장이 되어 있는데

이 문자열을 숫자로 바꿔서 벡터화 시켜야한다.

python scikit learn에 있는 CountVectorizer를 사용한다.

참고 >> CountVectorizer

pip install sklearn

유사도값 추출 (코사인유사도)

이제 장르를 기준으로 유사도값을 계산한다.

4. 영화추천 사용자 함수 생성

그리고 이 장르기반의 유사도를 기준으로 영화를 추천해주는 사용자 함수를 정의한다.

그래서 영화 제목을 검색(?)하면 유사한 장르의 영화를 추천해주게 된다.

실제로 avatar를 보았다고 했을때, 이와 유사한 영화에 대한 결과이다.

SF나 판타지, 액션어드벤처 장르으 영화들이 추천 된 걸 볼 수 있다.

출처

https://lsjsj92.tistory.com/565?category=853217

반응형

추천시스템: 컨텐츠 기반 필터링

컨텐츠 기반 필터링이란?

컨텐츠 기반 필터링은 사용자가 과거에 경험했던 아이템 중 비슷한 아이템을 현재 시점에서 추천하는 것입니다. Information Retrieval과 Machine Learning의 중간 지점 정도라고 생각할 수 있습니다. 즉, 컨텐츠 기반 추천시스템은 정보(아이템)를 찾는 과정과 과거 정보를 활용해서 유저의 성향을 배우는 문제라고 볼 수 있습니다. 아래 그림에서 볼 수 있듯이, 협업필터링과는 개념이 다릅니다.

출처: Designing of Recommendation Engine for Recyclable Waste Mobile App

가령, 웹사이트, 블로그, 뉴스를 구독하고 있는 고객에서 비슷한 컨텐츠의 게시글(item)을 찾아서 추천해 주는 모델을 생각해 보시면 됩니다. 하지만, 컨텐츠 기반 추천시스템은 계속 편향적으로 유저에게 아이템을 추천하는 경우가 많으니 모형을 개발할때 주의해야 합니다.

컨텐츠 기반 추천시스템 구조

컨텐츠 기반 추천시스템을 위와 같은 구조로 생각해 볼 수 있습니다. 위의 구조에서 컨텐츠 분석, 유저 프로필 파악, 유사 아이템 선택 과 관련해서 조금 자세히 알아보겠습니다.

컨텐츠 분석 – 텐트와 같은 비정형 데이터로부터 관련 있는 정보를 얻는 작업이라고 할 수 있습니다. 가령 feature extraction, vector representation 등의 작업을 수행해야 합니다.

– 텐트와 같은 비정형 데이터로부터 관련 있는 정보를 얻는 작업이라고 할 수 있습니다. 가령 feature extraction, vector representation 등의 작업을 수행해야 합니다. 유저 프로필 파악 – 유저가 선호하는 아이템과 취향을 파악하는 과정입니다. 머신러닝 등 알고리즘을 통해 유저 데이터를 일반화 하는 과정입니다.

– 유저가 선호하는 아이템과 취향을 파악하는 과정입니다. 머신러닝 등 알고리즘을 통해 유저 데이터를 일반화 하는 과정입니다. 유사 아이템 선택 – 아이템 중 가장 적절하게 매팅하는 아이템을 선택하는 과정입니다. Cosine 유사도 등을 이용하여 유저의 기존 선택과 가장 관련 있는 아이템이 무엇인지 선정하는 과정 입니다.

컨텐츠 기반 추천시스템에서 중요한 것

컨텐츠의 내용을 분석하는 아이템 분석 알고리즘 – 콘텐츠를 유형별로 Clustering하는 기술, Machine Learning, 텍스트 형태로 된 데이터로부터 전처리 과정을 거쳐서 TF-IDF으로 가중치를 부여하는 기술, 아이템-아이템 간 유사도를 계산하는 Cosine 유사도 등을 적절히 활용할 수 있어야 함.

– 콘텐츠를 유형별로 Clustering하는 기술, Machine Learning, 텍스트 형태로 된 데이터로부터 전처리 과정을 거쳐서 TF-IDF으로 가중치를 부여하는 기술, 아이템-아이템 간 유사도를 계산하는 Cosine 유사도 등을 적절히 활용할 수 있어야 함. 성능을 높일 수 있는 적절한 컨텐츠를 사용 – 음악 추천을 위해 음악과 관련된 정보를 활용하고, 뉴스 기사 추천을 위해 뉴스 내용을 활용하는 것. 유저의 관심사를 표현할 수 있도록 정보를 추출해야 함.

컨텐츠 기반 추천시스템의 장점

다른 유저의 데이터가 필요하지 않다.

추천할 수 있는 아이템의 범위가 넓다. 즉 새로운 아이템이나 인기 없는 아이템도 추천이 가능한다.

추천하는 이유를 제시할 수 있다. 아이템의 features로 컨텐츠를 분석하는 것이 가능하기 때문에, 특정 feature가 추천의 이유가 됐다고 설명이 가능하다.

컨텐츠 기반 추천시스템의 단점

적절한 features를 찾기가 어렵다.

새로운 유저를 위한 추천이 어렵다. 특, 유저 프로필이 존재하지 않거나 데이터가 매우 부족한 경우에 해당 유저에게 추천시스템을 적용하기 어렵다.

선호하는 특성을 가진 항목을 반복 추천한다. 즉 추천시스템이 overspecialization되는 경향이 있으며, 유저의 다양한 취향을 반영하기 어렵다.

음악 사이트 판도라(Pandora)의 추천 시스템 예시

신곡이 출시되면, 음악을 분석하여 장르, 비트, 음색 등 400여 항목 체크 (features extraction)

유저로부터 ‘like’를 받은 음악의 특색과 해당 유저의 프로파일 준비 (profile learner)

음악의 특징과 사용자 프로필을 바탕으로 선호하는 음악 추천(filtering component)

반응형

컨텐츠 기반 시스템 & 협업 필터링 (Content-based Systems & Collaborative Filtering)

반응형

데이터 간 유사도

– 모든 데이터는 벡터 로 표현 가능

– 일반적으로 내적 을 이용해서 데이터간 유사도를 측정

– 내적을 쓰는 이유: 각도를 이용하는데, 예를 들어 0도면 서로 같고 180도면 서로 다르다. 이를 위해 cosin 각도가 활용되므로 내적을 사용하는 것

– 데이터는 많은 것도 문제가 되나 차원(데이터 테이블의 컬럼)이 높은 것도 분석에 문제가 된다. 차원이 높을 수록 내적에 시간이 많이 걸린다.

고차원 데이터 처리하기

– Locality Sensitive Hashing: 비슷한 데이터를 확률적으로 높게 같은 bucket 에 있게하는 방법으로, 기존의 해쉬기법과 달리 비슷한 데이터끼리는 같거나 가까운 bucket 에 둔다는 점에서 차이가 있다.

– Clustering: 비슷한 데이터끼리 군집화 (서로 다른 클러스터는 서로 다른 데이터라고 볼 수 있다.)

– Dimensionality Reduction: 유사도 측정에 관련 없는 데이터를 제거하는 방법

예시: A와 B를 구매한 고객 X 가 있을 때, 고객 Y 가 A를 구매할 경우 B 를 추천하는 경우 여기서 데이터는 고객 X 로부터 수집된 것이다.

필터링의 필요성

– 웹 상에서는 제품에 대해 거의 제로 비용으로 정보를 제공한다.

– 선택지가 많은 것은 사람에게 복잡함을 주기 때문에 추천 시스템으로 필터를 해줄 필요가 있다.

– Long Tail : 주목받지 못하는 아이템이 그래프 상에서 표현된 모양을 일컫는 용어

가로 축은 등수이고, 세로 축은 인기도일 때 실제 상품이 많아 등수 축은 훨씬 긴 범위를 가지는 반면 인기도 축은 훨씬 짧은 범위를 가진다. 따라서, 상품이 많아 주목받지 못하는 아이템이 주목받는 아이템보다 훨씬 많다. 적분 시 위 그림의 노란색 부분이 더 크다.

추천 유형

– Editorial and hand curated: 전문가의 평가로 추천하는 시스템. (ex: 좋아하는 것의 목록, 필수 아이템 목록)

– Simple aggregates: 대중에게 인기 있는 것을 추천. (ex: 탑 10, 가장 인기있는 것, 최근 업로드한 것)

– Tailored to individual users: 각 개인에게 특화된 추천 – Personalized Recommendation – (ex: 아마존, 넷플릭스, … 등)

공식적인 모델

– Utility function : X가 S를 대상으로 매기는 등급, u: X x S → R

X = set of Customers

S = set of Items (추천 대상)

R = set of ratings (예시: 평점)

– R 는 전체적으로 순서있는 집합이다.

유틸리티 행렬(Utility Matrix)

– 일반적으로 sparse matrix (빈칸이 많음) 라서, 연산을 용이하게 하기 위해 빈 셀에 값을 유추해서 저장해놓는다.

핵심 문제

– 행렬에 대해 알려진 등급(ratings)들을 모은다.

Explicit Feedback: 명확한 유저의 의견을 반영하는 방식 (예시: 평점) → 실제로 잘 동작X

Implicit Feedback: 암시적인 의견을 반영하는 방식 (예시: 물건 구매/장바구니 행위 자체)

– 알려진 사람(ones)들로부터 모르는 등급(ratings)들을 유추한다. 주로 모르는 등급들에 관심이 많다. 이미 알려져 있는 것에는 흥미가 없다.

– Utility Matrix U is Sparse → 대부분 사람들은 많은 아이템에 평점을 남기지 않는다.

– Cold Start : 어떤 데이터도 없이 시작하는 것 (ex: 새로 개봉한 영화, 새로 가입한 사용자)

– 추천 시스템에 대한 3가지 접근법

Content-based : 아이템 내용을 기반으로 추천

Collaborative : 여러 대상을 이용해서 필터링

Latent factor based : 확실하지 않으나 존재하는 기준이나 카테고리 또는 요소를 이용(잠재 변수 기반)

– 유추하는 방식을 평가 = 추천 방식의 성능과 성공을 평가

컨텐츠 기반 추천 시스템(Content-based Recommendations)

– 주 아이디어: 고객 X에 의해 높게 등급이 매겨진 이전 아이템들과 유사한 아이템을 고객 X에게 추천

예시1: 이전 영화에 나온 배우, 디렉터가 출연한 영화 또는 장르가 유사한 영화 추천

예시2: 웹사이트, 블로그, 뉴스에서 유사한 컨텐츠를 가진 다른 사이트 추천

– Plan of Action

– 아이템 프로필(Item Profiles) : 각 아이템에 대해 프로필을 생성

profile = set (vector) of features

예시1: 영화 – author, title, actor, director, …

예시2: 텍스트 – 문서에서 중요한 단어들의 집합

– 예시 2에서 중요한 특징(feature)을 선택하는 방법

보통 텍스트마이닝에서는 TF-IDF 를 사용 (단어 빈도 수 / 단어가 나온 문서 빈도 수)

TF-IDF = Term frequency / Doc Frequency

Term -> Feature

Document -> Item

f : 문서 j에서 단어 i가 사용된 횟수, max f : 문서 j에서 가장 많이 사용된 단어의 사용 횟수

TFij = f / max f : 문서 j에서 단어 i의 빈도 수

ni : 단어 i를 사용한 문서의 개수, N : 전체 문서의 개수

IDFi = log(N/ni) : 단어 i를 사용한 문서의 빈도 수

Doc Profile = TF-IDF 가 가장 높은 단어들의 집합

– 사용자 프로필(User Profile)

등급을 준 아이템 프로필들의 평균에 가중치한 것

분산(Variation): 아이템들의 평균 등급의 차이에 의한 가중치

– 예측 귀납(Prediction heuristic): 사용자 프로필 x 와 아이템 프로필 i 가 주어졌을 때, u(x, i) = cos(x, i) 이다. 여기서 cosin 은 방향이 중요함을 의미한다. 얼마나 좋아하는지가 아닌 좋아하는 그 자체(방향성)에 의미를 둔다.

– 장점

다른 사용자에 대한 데이터를 필요로 하지 않는다. (No cold-start or sparsity problems) 독특한 취향을 가진 사용자에게 추천할 수 있다. (일반적이지 못한 사용자들) 새롭거나 인기가 없는 아이템을 추천할 수 있다. (No first-rater problem) 설명을 제공할 수 있다. (추천된 아이템의 내용적인 특징을 리스팅하는 것)

– 단점

유사도에 필요한 특징(feature)을 선택하기 힘들다. (이미지, 영화, 음악 등) 새로운 유저에게 추천하는 것이 힘들다. (사용자 프로필을 만드는 법에서 막힘) 너무 특화된 것들만 추천할 수 있다. (Overspecialization) 예를 들어, 사용자의 컨텐츠 프로필 외의 아이템을 추천하지 않거나, 다양한 흥미를 가진 사람들이 있을 수 있는데 하나만 추천하는 경우가 해당된다. 다른 사용자의 질적 판단을 이용하지 않는다.

협업 필터링(Collaborative Filtering)

[User-user collaborative filtering]

– 사용자를 고려하는 방식으로, 취향이 비슷한 집단에서 누군가 선호한 아이템을 아직 접하지 않았다면 고객에게 그 아이템을 추천

– N = 고객 x의 등급 부여 방식(ratings)과 유사한 방식(ratings)을 가진 다른 사용자의 집합

– 집단 N 에서 사용자들의 등급 부여 방식을 기반으로, 고객 x가 매긴 등급을 측정(유추)

– 유사한 사용자를 찾는 법 (데이터간 유사도 측정 방식)

rx = 고객 x의 아이템별 등급(ratings)을 원소로 갖는 벡터

자카르드 유사도 측정법(Jaccard similarity measure) : 교집합 크기 / 합집합 크기 문제: 특정 등급을 무시할 수 있다.

[ Jaccard ]

코사인 유사도 측정법(Cosine similarity measure) : cos(rx, ry) = rx*ry / (|rx|*|ry|) 두 유저의 rating vector 를 내적한 결과를 벡터의 길이의 곱들로 나눔. 단, 여기서 평가되지 않은 경우는 0점을 주어 계산 문제: 누락된 등급을 음수로 표현할 수 있다.

[ cosine ]

피어슨 상관 계수 (Pearson correlation coefficient) Sxy = 고객 x와 y 모두에 의해 등급이 매겨진 아이템들 (추가 이론은 위키피디아 참고)

– 유사도 측정 항목(Similarity Metric)

[ 예제 ]

직관적으로 봤을 때 원하는 것: sim(A,B) > sim(A,C)

자카르드 유사도: ⅕ < ½ A와 B의 합집합 크기(총 컬럼 개수 5개, HP1, HP2, HP3, TW, SW1)는 5, 교집합 크기는 1 A와 C의 합집합 크기(총 컬럼 개수 4개, HP1, TW, SW1, SW2)는 4, 교집합 크기는 2 코사인 유사도: 0.386 > 0.322 → 빈 칸(0)을 처리하지 못해서 A와 C의 반대 성향을 잡지못함

해결책: 빈 등급을 음수값으로 맞춰놓고, 행의 평균을 빼고 코사인 유사도를 측정하면 피어슨 상관 계수와 동일한 결과를 낸다. 0.092 > -0.559

A행의 평균은 10/3 이다.

– 등급 예측(Rating Predictions) → 유사도 측정 항목을 어떻게 활용하는가?

rx = 고객 x의 등급들의 벡터

N = 아이템 i를 등급매겼던 고객 x와 대부분 유사한 k명의 고객들의 집합

rxi = 고객 x가 아이템 i에 매긴 등급 = 특정 집단(N)이 아이템 i에 준 점수들의 평균

[Item-Item collaborative filtering]

– 아이템은 고객(user)들의 등급으로 표현된다. 벡터의 각 원소가 각 유저가 매긴 등급(rating)

– 알고리즘

아이템 i와 유사한 다른 아이템들을 찾는다. 유사한 아이템에 대한 등급을 기반으로 아이템 i에 대한 등급을 평가한다. 동일한 유사도 측정 항목과 user-user 모델에서와 같이 예측 함수를 사용할 수 있다.

– rxj = 고객 x가 평가한 아이템 j의 등급

– Sij = 아이템 i와 j의 유사도

– N(i;x) = 아이템 i와 유사한 고객 x에 의해 평가된 아이템들의 집합 (음수인 유사도는 제외)

위의 식으로 아이템 i의 등급을 예측 (다른 고객의 정보가 필요없음)

고객 5가 등급을 매긴 영화들 중 1번 영화와 유사한 영화들을 탐색한 다음,

등급이 없는 영화에 대해 점수를 몇 점 줄 것인지 예측, 왼쪽 sim(1, m)는 1번 영화와 m번째 영화와의 유사도

– CF: Common Practice

아이템 i와 j의 유사도 Sij 를 정의

k개의 가장 가까운 이웃 선택

N(i; x) = 고객 x에 의해 등급이 매겨진 아이템 i와 가장 유사한 아이템들

가중치된 평균으로 등급 rxi를 측정

b: bias로, 유저별 개인차 또는 아이템별 개인차를 의미한다.

u: 전체 등급의 평균

[비교 분석: Item-Item vs User-User]

– 실제로, item-item이 user-user보다 협업 필터링이 더 잘 동작하는 것으로 관찰되어왔다.

– 그 이유는 사용자가 아이템보다 개인차가 더 크기 때문이다.

[협업 필터링 장단점]

– 장점: 어떤 종류의 아이템이든지 잘 동작한다. 특징을 선택할 필요가 없다. (No feature selection, only rating vector)

– 단점:

Cold Start: 시스템에서 맞출만한 충분한 고객들이 필요하다. Sparsity: 사용자 또는 등급 행렬 (user/ratings matrix)는 대부분 비어있다. 동일한 아이템을 등급을 매긴 고객을 찾기가 힘들다. First rater: 이전에 등급이 매겨지지 않은 아이템을 추천할 수 없다. (새로운 아이템이나 독특한 아이템들) Popularity bias: 인기 있는 아이템만 추천하는 경향이 있다. 독특한 취향을 가진 누군가에게 추천할 수 없다.

– 하이브리드 방법: 둘 이상의 다른 추천을 구현하거나 예측을 결합하는 방법으로, 보통 선형 모델을 사용한다.

예시: 컨텐츠 기반에 협업 필터링을 추가한 방법: 새로운 고객이나 아이템에 대해서(cold start) 프로필을 활용하고 그 외는 협업 필터링을 이용하는 방식

Remarks & Practical Tips

– 평가(Evaluation) : 알려진 등급들을 가지고 예측한 것을 비교한다. (Dataset, Testset 분리)

Root-mean-square error (RMSE)

Precision at top 10 – 퍼센트로 상위 10개만 뽑기

Rank Correlation – 랭크의 유사도 (시스템과 고객의 완전한 랭킹 사이의 스피어맨 상관 관계)

– 또 다른 접근법: 0/1 모델

Coverage: 얼마나 추천가능한가, 예측할 수 있는 시스템에서 아이템과 사용자의 수

Precision: 예측의 정확도

Receiver operating characteristic (ROC): false positive 와 false negative 사이의 Tradeoff 곡선 → 의학영역에서 많이 사용

– 오류 측정 항목(Error metrics)

문제: 정확도에 대한 초점이 강할수록 요점을 놓칠 때가 있다. Prediction Diversity: 예측 다양성 Prediction Context: 예측 상황 Order of predictions: 예측 순서

– 실제로, 높은 등급을 예측하기 위해 주의해야만 한다. RMSE 는 높은 등급에 대해서는 잘 동작하나 아닌 것들에 대해서는 안좋게 동작하는 방법에 불리할 수 있다.

– 복잡도/속도(Complexity/Speed): k명의 가장 유사한 고객들을 찾는 것은 비용이 비싸다. 런타임 상에 수행하기에는 미리 계산해야 함.

– 해결책: 고차원에서 가장 가까운 이웃을 탐색하는 방법 (LSH), 클러스터링, 차원 축소

– 팁

변덕스러운 알고리즘이 잘 동작하려는 노력때문에 데이터 크기를 줄이려고는 하지 말 것

큰 데이터에 대해서는 단순한 방법이 최고다.

데이터를 더 추가하는 것 → 더 많은 데이터가 더 나은 알고리즘을 이기기도 한다. (추천 성능 측면에서만)

잠재 요인 모델(Latent Factor Models)

– Latent Factor : 중요한데 존재하지 않는 카테고리(잠재 변수)

예시: 넷플릭스 – 100 만개의 등급(ratings), 2000 ~ 2005 년간의 데이터, 평가 기준 = RMSE

– 로컬 & 전역 효과 모델링 (Modeling local & global effects)

전역 효과 예시 : 평균 영화 등급이 3.7이고, 식스센스의 평점이 평균 보다 0.5 점 높을 때, Joe는 평균 보다 0.2점을 더 낮게 평가한다면, 식스센스는 4점(=3.7+0.5-0.2)일 것이다.

로컬 효과 예시 : local neighborhood (CF/NN) 에서는 Joe 는 영화 Signs 과 비슷한 걸 좋아하지 않는다. → 최종적으로 Joe 는 평점을 3.8점 줄 것이다. (두 영화가 유사하기 때문에 이전의 안좋은 평가를 반영하여 다음 영화의 점수를 예측)

– 협업 필터링(CF): 나온지 꽤 되었고 가장 인기있는 협업 필터링 방법

Item-Item 방법으로, 유사한 영화들의 등급으로부터 모르는 등급을 도출 아이템 i와 j의 유사도 Sij 를 정의 k개의 가장 가까운 이웃을 선택, 그리고 등급을 계산

N(i; x) = 고객 x에 의해 등급이 매겨졌던 아이템 i와 가장 유사한 아이템 집합

rxj = 아이템 j에 대해 고객 x가 매긴 등급

그러나 실제로 bias 를 추가하여 아래와 같이 계산

Problems/Issues 2번은 고객 간의 공통성을 놓치고 있다는 의미

해결책은 RMSE 를 최대한 낮춰주는 경우의 가중치 Wij가 가장 좋다.

– Interpolation Weight Wij

가중치된 평균보다 가중치된 합을 사용 ( 아이템 i와 그것의 이웃 j 사이의 관계)

표기법 N(i; x) = 영화 i와 유사한 고객 x에 의해 등급이 매겨진 영화들의 집합 Wij = interpolation weight 가중치 모델은 고객 x에 의존적이지 않으며, 영화 쌍(pairs) 사이에서 상호작용하는 것 오류 측정 항목: 학습 데이터에서 SSE를 최소화하는 가중치 찾기

가중치 설정 Wij 는 영화 i를 평가했던 모든 다른 고객과 고객 x를 기반으로 학습되거나 측정된다.

– 최적화를 통한 추천

목표는 좋은 추천 기능을 하는 것 → RMSE 사용 → 낮을 수록 더 나은 추천

고객이 보지 못한 아이템에 대해 추천을 하는 것 → 실제로는 어려움

알려진 등급(user, item)에 대해 잘 작동하도록 시스템을 구축하는 것 → 모르는 등급을 잘 예측할 수 있다. 목표 함수(objective function) 정의 → 최적화 문제를 해결 학습 데이터에서 SSE를 최소화하는 가중치 찾기, 가중치를 벡터로 생각하자

함수 최소화하는 단순한 방법 어떤 점 y 에서 시작 → 미분 계산 그래프에서 움직이는 방향은 미분의 반대 방향 미분 값이 0인, 최저점 도달(converged)할 때까지 반복 기울기가 작을 수록 움직이는 간격이 작아야 한다. 안그러면 값이 그래프를 벗어날 수 있음

object function 을 가중치 Wij 로 미분해서 미분값이 0이 되는 가중치를 탐색

그러나 실제 w를 찾기는 어려우므로 이전 W와의 차이가 0인 새로운 W를 탐색

– 가중치는 유사도를 사용하지 않음. 둘은 다르다. 유사도는 명시적으로 이웃 아이템들 사이에 내부 관계에 대해 설명하는 것

– Latent Factor Models → Singular Value Decomposition

SVD: 다시 곱해도 원래대로 (노란 부분을 원복) 잘 나오도록 벡터를 분해하는 것

가정: 노란 부분을 잘 원복하면 흰색도 원복이 된다.

factor는 많을수록 정확하게 맞출 수 있으나, overfitting 이 발생할 수 있다. 이는 예측 실패율을 높인다.

위의 경우 등급 행렬(rating matrix R)을 Q*Pt 의 곱으로 근사할 수 있다.

Factor들의 곱으로 등급매기기(Ratings) 아이템 i에 대해 고객 x의 등급이 없으면 어떻게 측정하는가?

Q의 2번째 행과 Pt의 5번째 열을 내적

엔트리가 없을 때는 SVD는 정의되지 않는다. 행렬 P, Q를 찾기 위한 구체적인 방법을 사용해야 한다.

(그냥 SVD는 동작X) → 엔트리가 있는 값들(not missing data)만 가지고 오류의 최솟값을 찾는다.

반응형

TF-IDF를 활용한 컨텐츠 기반 필터링 (Content-based Filtering)

안녕하세요! 오늘은 TF-IDF를 활용한 컨텐츠 기반 필터링에 대해 알아보겠습니다.

1. 컨텐츠 기반 필터링이란?

2. Item Profile

3. TF-IDF를 활용하는 방법

4. User Profile

5. Item Profile과 User Profile을 이용하여 추천

6. 컨텐츠 기반 필터링의 장단점

1. 컨텐츠 기반 필터링이란?

컨텐츠 기반 필터링이란 유저가 선호하는 아이템을 기반으로 해당 아이템과 유사한 아이템을 추천하는 것을 말합니다.

위의 그림을 보면, 유저가 “빨간 원”과 “빨간 삼각형”을 좋아한다고 했으면 이 유저에게 “주황 원”과 “빨간 사각형”을 추천해줍니다.

그 이유는 유저가 좋아하는 아이템을 통해 User Profile을 만들면 “빨간색”, “삼각형”, “원”이 나옵니다.

그래서 주황색이지만 원 모양을 가진 “주황 원”을 추천해주고, 사각형이지만 빨간색을 가진 “빨간 사각형”을 추천해주는 것입니다.

이러한 추천 방식을 컨텐츠 기반 필터링이라고 말하며, 이 방법이 어떻게 이루어지는지 알아보도록 하겠습니다.

2. Item Profile

추천 대상이 되는 아이템들에 대해서 Profile을 만들어야 합니다.

영화를 추천해주는 시스템일 경우, 영화라는 아이템의 Profile을 만들어야 하고 이는 아이템이 가진 속성으로 구성되어 있습니다.

영화의 경우 감독, 제목, 출연 배우, 장르 등이 영화가 가진 속성에 해당합니다.

이 다양한 속성들을 가장 편리하게 표현할 수 있는 방법은 벡터로 표현하는 것입니다.

다른 예시로, 문서는 여러 단어들로 이루어져 있고 이 중, 중요한 단어들이 문서를 대표할 수 있습니다.

이때, 단어의 중요도를 알아내는 가장 많이 쓰이는 기본적인 방법이 TF-IDF입니다.

3. TF-IDF 활용

TF란 Term Frequency의 약자로, 특정 단어가 특정 문서에 등장하는 횟수를 말합니다.

w는 특정 단어를 뜻하고 d는 특정 문서를 뜻합니다.

$$ TF(w,d) = freq_{w,d} $$

IDF란 Inverse Document Frequency의 약자로, 전체 문서 중 특정 단어가 등장한 문서의 비율의 역수를 말합니다.

$$ IDF(w) = log \frac{N}{n_{w}} $$

TF-IDF는 TF에 IDF를 곱한 값입니다.

$$ TF-IDF(w,d) = TF(w,d) \times IDF(w) $$

TF가 크다는 것은 특정 단어가 특정 문서에 많이 등장했다는 것이고 IDF가 크다는 것은 전체 문서 중에서 특정 단어가 등장한 문서가 적다는 말입니다.

따라서, TF-IDF가 크다는 것은 특정 단어가 특정 문서를 대표하는 중요한 단어라고 생각할 수 있는 것입니다.

예시를 통해 알아보겠습니다.

위의 표는 문서 d1~d4에 단어 w1~w6가 나타난 빈도 TF를 나타낸 표입니다.

이 표를 이용해 IDF를 구하고 TF-IDF를 구한 표는 아래와 같습니다.

이제 Item Profile을 구했으니 유저에게 아이템을 추천해주기 위해서 User Profile을 구해야 합니다.

4. User Profile

User Profile은 유저가 선호하는 아이템의 벡터를 통해 구합니다.

User Profile을 구하는 방식은 Simple 방식과 Variant 방식이 있습니다.

Simple 방식은 유저가 선호한 Item Vector들의 평균 값을 사용합니다.

Variant 방식은 유저가 아이템에 내린 선호도로 Normalize하여 평균한 값을 사용합니다.

아이템 \( I = {i_1, … ,i_n} \) 가 존재하고, 해당 아이템에 대한 선호도는 \( r_{u,i} \),

아이템 i에 대하여 TF-IDF를 통해 얻어진 벡터를 \( V_i \) 라고 할때,

Simple 방식과 Variant 방식을 통해 유저의 프로파일 벡터를 구하는 수식은 다음과 같습니다.

Simple

$$ U = \frac{\sum_{i=1}^n V_i}{n} $$

Variant

$$ U = \frac{\sum_{i=1}^n r_{u,i}V_i}{\sum_{i=1}^n r_{u,i}} $$

만약 유저가 문서 d1과 d2를 선호했다면, Simple 방식으로 구한 해당 유저의 프로파일 벡터는 다음과 같습니다.

$$ User\ Vector = \frac{v_{d1}+v_{d2}}{2} $$

User Profile도 구했으니 Item Profile과 User Profile을 이용해서 아이템을 추천하는 방법에 대해 알아보겠습니다.

5. Item Profile과 User Profile을 이용하여 추천

User Vector를 u, Item Vector를 i라고 했을 때, u의 i에 대한 선호도인 \( score(u,i) \)를 구하는 방법은 다음과 같습니다.

$$ score(u,i) = cos(u,i) = \frac{u \cdot i}{\left\vert u \right\vert \cdot \left\vert i \right\vert} $$

코사인 유사도를 통해 구하는 것인데, 코사인 유사도는 두 벡터가 비슷한 방향을 가리킬수록 1에 가까운 값을 가지고, 반대를 향할수록 -1에 가까운 값을 가집니다.

단, 두 벡터의 차원이 같아야 합니다.

User Vector는 Item Vector를 이용하여 구해진 것이므로 둘의 유사도가 클수록 해당 아이템이 유저에게 관련성이 높다고 판단할 수 있고 추천했을 때 선호도가 높을 것이라 기대할 수 있습니다.

6. 컨텐츠 기반 필터링의 장단점

장점

유저에게 추천할 때 다른 유저의 데이터가 필요하지 않아 cost가 적다.

아이템의 유사도만 따지기 때문에 새로운 아이템 또는 인기도가 낮은 아이템을 추천할 수 있다.

추천 아이템에 대한 설명이 가능하다.

단점

아이템의 적합한 속성을 찾고 가공하는 것이 어렵다.

한 분야/장르의 추천 결과만 계속 나올 수 있다. (Overspecialization)

장점이기도 하지만 다른 유저의 데이터를 활용할 수 없기 때문에 유저가 본 것과 비슷한 것만 나오게 된다. (위의 Overspecialization과 비슷)

이렇게 콘텐츠 기반 필터링에 대해 알아봤습니다. 다음은 다른 유저의 데이터를 활용하여 추천을 해주는 협업 필터링에 대해 알아보도록 하겠습니다 : )

Reference

러닝 스푼즈의 “비즈니스 Case와 딥러닝을 활용한 추천시스템 구현” 강의

키워드에 대한 정보 콘텐츠 기반 필터링

다음은 Bing에서 콘텐츠 기반 필터링 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 [토크ON세미나] 추천시스템 분석 입문하기 2강 – 컨텐츠 기반 모델 (유사도 함수, TF-IDF) | T아카데미

  • 추천시스템
  • 유사도함수
  • Word2Vec
  • 협업필터링
  • 평가함수
  • Goodbooks
  • T아카데미
  • Tacademy
  • 티아카데미
  • SK플래닛
  • SKplanet
  • 온라인교육
  • IT 교육
  • 온라인 강좌
  • 토크온
  • 토크ON세미나
  • 세미나
[토크ON세미나] #추천시스템 #분석 #입문하기 #2강 #- #컨텐츠 #기반 #모델 #(유사도 #함수, #TF-IDF) #| #T아카데미


YouTube에서 콘텐츠 기반 필터링 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 [토크ON세미나] 추천시스템 분석 입문하기 2강 – 컨텐츠 기반 모델 (유사도 함수, TF-IDF) | T아카데미 | 콘텐츠 기반 필터링, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

Leave a Comment