HANA : Have A Nice AI

모두를 위한, 하나를 위한 AI

발전중인 AI/추천(Recommendation)

추천 시스템 기본 - 협업 필터링(Collaborative Filtering) - ①

KM-Hana 2021. 8. 8. 17:37

*크롬으로 보시는 걸 추천드립니다*

 

우리 일상생활에 녹아있는 "인공지능(AI)"에는 추천 시스템이 있다는 것을 소개해 드렸습니다

https://kmhana.tistory.com/30

 

Have A Nice AI

 

kmhana.tistory.com

 

이제 부터는 조금 더 알고리즘 측면에서, 추천이 이루어지고 있는지 차근차근 뜯어 보겠습니다

 

가장 추천 알고리즘의 기본은

    1) 협업 필터링(Collaborative Filtering)

       • Memory Based Approach

          - User-based Filtering

          - Item-based Filtering

       • Model Based Approach

          - 행렬 분해(Matrix Factorization)

    2) 콘텐츠 필터링(Contents-Based Filtering)

가 있습니다. 

 

이번 파트에서는 "협업 필터링(Collaborative Filtering) - Memory Based" 부터 소개해 드리겠습니다!

 

   (* 언제든지 부족한 부분 알려주시면 반영하겠습니다 ㅎㅎ 함께 공부해 나아가봐요)


협업 필터링 이란 ?

영화를 추천받고 싶을때 우리는 어떻게 할까요?

   1. 내가 좋아하는 감독, 장르, 키워드의 영화를 찾아본다

   2. 나랑 성향이 비슷한 친구들이 본 영화를 찾아본다

가 대표적인 방법일 것입니다.

 

이 것은 

   1. 내가 좋아하는 감독, 장르, 키워드의 영화를 찾아본다

      ▶ Content Based Filtering

   2. 나랑 성향이 비슷한 친구들이 본 영화를 찾아본다

      협업 필터링(Collaborative Filetering)

라고 할 수 있습니다!

 

  ○ 협업 필터링(Collaborative Filtering) 특징

    • 가정 : 나와 비슷한 취향의 사람들이 좋아하는 것은 나도 좋아할 가능성이 높다

              → 많은 사용자로 부터 얻은 취향 정보를 활용

    • 핵심 포인트 : "많은 사용자들"로 부터 얻은 취향 정보를 활용

      - 사용자의 취향 정보 = 집단 지성 

      - 축적된 사용자들의 집단 지성을 기반으로 추천

      - 예를 들어 : A 상품을 구매한 사용자가, 함께 구매한 다른 상품들

 

협업 필터링 종류

  ○ 협업 필터링(Collaborative Filtering) 대표 접근법 

[https://towardsdatascience.com/various-implementations-of-collaborative-filtering-100385c6dfe0]

      1) Memory-Based Approach

        • 유사한 사용자(Users)나 아이템(Item)을 사용

          - 특징 : 최적화 방법이나, 매개변수를 학습하지 않음. 단순한 산술 연산만 사용

          - 방법 : Cosine Similarity나 Pearson Correlation을 사용함, ( * KNN 방법도 포함됨)

          - 장점 : 1. 쉽게 만들 수 있음

                    2. 결과의 설명력이 좋음

                    3. 도메인에 의존적이지 않음

          - 단점 : 1. 데이터가 축적 X or Sparse한 경우 성능이 낮음

                    2. 확장가능성이 낮음 ( ∵ 데이터가 너무 많아지면, 속도가 저하됨)

       

      2) Model-Based Approach

        • 기계학습을 통해 추천 

          - 특징 : 최적화 방법이나, 매개변수를 학습

          - 방법 : 행렬분해(Matrix Factorization), SVD, 신경망

          - 장점 : 1. Sparse한 데이터도 처리 가능

          - 단점 : 1. 결과의 설명력이 낮음

 

Memory-Based Approach 협업 필터링

  ○ Memory-Based Approach의 대표 방법론

협력 필터링 대표 방법론 - [https://medium.com/@toprak.mhmt/collaborative-filtering-3ceb89080ade]

    • 대표 방법론 1) User-based Filtering 2) Item-based Filtering 

    • User-based Filtering  

      - 특정 사용자(User)를 선택

      - 예시 : SNS에서의 친구 추천 서비스

      1. "평점 유사도"를 기반으로 나와 유사한 사용자(Users)들을 찾음

      2. 유사한 사용자가 좋아한 Item을 추천

      → 해석 : 당신과 비슷한 사용자 "ㄱ"은, "B"영화도 좋아했습니다

 

    • Item-based Filtering  

      - 특정 아이템(Item)을 선택

      - 예시 : 함께 구매한 경우가 많은 상품 - '사이다'와 '콜라'

      1. 특정 Item을 좋아한 사용자들을 찾음

      2. 그 사용자들이 공통적으로 좋아했던 다른 Item을 찾음

      → 해석 : 이 아이템을 좋아한 사용자는, "B"영화도 좋아했습니다       

 

  ○ 유사도 측정 방법

    • 두 방법 모두 유사도(거리)를 측정하여 사용함

    • 거리 측정 방법은 다양함

       - 사용자(행) - 아이템(열) 행렬을 사용함

    • 일반적인 거리 측정 방법론

       - Cosine Similarity

       - Pearson Similarity

       - Euclidean Distance

'클라우디아'와의 거리 - [책 '알고리즘이 당신에게 이것을 추천합니다']

    • Cosine Similarity

$$ sim(u, u') = cos(\theta) =  \frac{R_{u} \cdot R_{u'}}{\left \| R_{u} \right \|\left \| R_{u'} \right \|} = \frac{\sum_{i=1}^{n}R_{ui}\times R_{u'i}}{\sqrt{\sum_{i=1}^{n}(R_{ui})^{2}} \times \sqrt{\sum_{i=1}^{n}(R_{u'i})^{2}}}  $$

       - 사용자 \(u\)와 사용자 \(u'\)가 같은 방향성을 보고 있지는를 평가함

       - 일반적으로 사용되는 유사도

 

    • Pearson Correlation Similarity

$$ sim(u, u') = \frac{\sum_{i=1}^{n}(R_{ui} - \bar{R_{u}})( R_{u'i} -\bar{R_{u'}}  ) }{\sqrt{\sum_{i=1}^{n}(R_{ui} - \bar{R_{u}})^{2}} \times \sqrt{\sum_{i=1}^{n}(R_{u'i} - \bar{R_{u'}})^{2}}}  $$

       - 평균적인 경향성에서 얼마나 차이가 나는지를 기반으로 함

       - Centered Cosine Similarity 라고도 함

       - 평균을 빼므로, 사용자 \(u\)와 사용자 \(u'\)가 함께 사용한 아이템이 꽤나 있어야 함

 

  ○ 유사도를 활용한 추천 Flow

    • "유사도를 계산한 후 우리는 어떻게 아이템(Item)을 추천할 수 있을까?"에 대한 설명 드립니다

https://medium.com/@toprak.mhmt/collaborative-filtering-3ceb89080ade

 

Collaborative Filtering

In this blog, I’ll be covering a recommender system technique called collaborative filtering. So let’s get started. Collaborative…

medium.com

       - 위에 사이트를 참고했습니다

    • User Based Fitering을 기준으로 설명 드립니다. Item Based와의 차이는 유사도(Similarity) 측정에서만 차이가 남

 

    1) User-Item 행렬(Matrix)를 구축

User-Item 행렬 구축

       - 목표 : 4번째 사용자(User)에게 영화를 추천해주기 위해서, 4번째 사용자가 아직 보지 않은 영화의 평점을 예측

 

    2) User간의 유사도 계산

사용자 기반 유사도 측정

            * 유사도 값에 대한 예시는 대략적인 값으로 정확하지 않습니다

 

    3) 예상 아이템의 평점 추론

       - ① 4번째 사용자가 보지 않은 영화들을 본 사용자의 평점을 추출

       - ② 4번째 사용자와의 "유사도" 계산

       - ③ 각 사용자 별 "유사도 x 평점" 계산

$$ sim(u,u') \times R_{u'i} $$

       - ④ 유사도가 반영된 "가중치 평점을 합산" 

$$ \sum_{u'}sim(u,u') \times R_{u'i} $$

       - ⑤ 가중치를 나누어 "평균 평점"을 계산하여, 4번째 사용자의 보지 않은 영화의 평점을 추론

$$ \hat{R_{ui}} = \frac{\sum_{u'}sim(u,u') \times R_{u'i}}{\sum_{u'}\left | sim(u,u') \right | } $$

 

  ○ Memory-based Approach의 장단점

    • 장점

       - 최적화(Optimization)나 훈련(Train)이 필요 없음

       - 쉬운 접근 방식

    • 단점

       - 희소(Sparse)데이터 경우 성능 저하 ( ∵ 비교 대상이 적으면, 성능저하)

       - 확장성에 제한 ( ∵ 비교 대상이 많아지면, 계산량이 증가)

 


마치며

  ○ Part1 에서 다룬 추천 시스템 

    • 협업 필터링(Collaborative Filtiering)의 종류와 그 중 대표 접근법 Memory-Based 을 알아봤습니다

       - 유사도 측정 방법

       - User Based Filtering

       - Item Based Filtering

 

앞으로 "협업 필터링 Part2" 에서는 

  ○ Part2 에서 다룰 예정인 추천 시스템 

    • 협업 필터링(Collaborative Filtiering)의 대표 접근법 Model-Based 을 알아볼 예정입니다

       - Matrix Factorization(행렬 분해)

       - Neural Network(신경망)

    • 협업 필터링(Collaborative Filtiering)의 한계

    • 그 밖의 방법론 소개

다룰 예정입니다!