검색 vs. 추천

2022. 3. 13. 15:33AI/Machine learning

    목차
반응형

검색 vs. 추천

검색은 query와 docuemnt 사이의 관계를 분석

추천은 user와 item 사이의 관계를 분석

즉, 유사 learning to rank는 검색과 추천 모두에 적용 가능

 

Matrix Factorization

Collaborative Filtering의 대표적인 방법

 

컨텐츠 기반 (content-based systems) <- 이전 방법

characteristic info를 사용한 추천

item간 유사도를 기반으로 추천하는 방법

즉, TF-IDF를 사용함

    item -> vector 화

    item들을 clustering

    어떤 item을 선택한 user에게 동일 cluster 내 item을 추천

 

과거 user의 item 선택 history 가지고 추천하기에 한계가 있음

그러나 user-item interaction 정보가 없어도 추천이 가능함

즉, cold-start 문제는 없음

    item은 가장 처음에도 주어지기 때문

 

item features

    장르, 배우 등

 

interactions

    좋아요 정보 등

    content뿐만 아니라, 지역, 인종, 성별, 나이, 학력 등 배경 기반으로 추천

 

협업 필터링 (CF: collaborative filtering systems)

user-item interactions를 사용한 추천

    분류와 regression과 유사한 개념

 

user-item interaction 정보가 비슷한 다른 user가 선택한 item을 추천

user나 item 자체의 특성을 추천에 사용하지 않음

    그래서 user-item interaction이 많이 필요

    user-user, item-item, user-item의 유사도 계산에는

        KNN, pearson correlation 등이 사용됨 

 

CF의 문제

cold-start problem

    충분한 item interaction data가 있어야 추천 가능

    즉, 새로운 user나 새로운 item은 추천하기 어려움

sparsity

    수많은 user와 item을 표현하는 matrix는 sparse함

    CF는 sparsity가 0.97 이하일때 잘 작동한다는 말이 있음

    즉, 일정 개수 이상의 interaction이 있는 user와 item만 사용하는 방법도 있음

diversity

     user의 history로 추천해서 비스한 item만 추천 할 수 있음

 

 

hybrid

혼합 사용하여 추천

content-based와 CF 둘다 장단점이 있기에 이 둘을 혼합하여 사용

 

        CF recommender ----+
                           |
                           +--> combiner -> recommend
                           |
        Content based  ----+
        recommender

user-item interaction

    explicit feedback

        평점, 별점

 

    implicit feedback

        user의 행동 기록

        ex. item에 대한 click 기록

 

        직접적인 item의 선호 정도를 알 수 없기에 implicit이라고 함

        그러나 data 량이 비교가 안되게 많기에 최신 추천 system은

        implicit feedback data를 통해 추천하는 뱡향으로 발전

 

CF의 학습

user-item matrix 형태의 data로 학습

아래 ex.는 explicit data이고 rating 값이라고 가정

 

    users\item    Item1  Item2  Item3  Item4
         User1    5      1      3      5
         User2    ?      ?      ?      2
         User3    4      ?      3      ?


        ?인 곳들을 채우는 것이 CF의 목표
        -> matrix completion

    implicit인 경우 0 혹은 1

    users\item    Item1  Item2  Item3  Item4
         User1    1      1      1      1
         User2    0      0      0      1
         User3    1      0      1      0

CF 방식
    memory-based method
    model-based method

 

memory-based method

user-item matrix를 그대로 모두 활용하여 user가 특정 item에 줄 rating을 예측

user-item matrix가 주어지고 특정 user가 아직 interaction 안 한, item에 대한 rating을 예측

 

algorithm

user i의 평균 예측 점수 구함

user i와 가장 유사한 K명 추출

다른 user들이 item j에 대해 매긴 점수를 weighted sum

user i와 위에서 계산한 weighted sum을 통해 예측

 

    users\item    Item1  Item2  Item3  Item4  Item5  Item6
         User1    4      3                    5
         User2    5             4             4
         User3    4             5      3      4
         User4           3                           5
         User5           4                           4
         User6                  2      4

 

Neighborhood model

user 사이의 similarity를 계산

평점 자체에 선호와 비선호가 구분되어 있는 Explicit Dataset에 적합

 

Pearson correlation으로 계산

두 user의 rating 정보로 계산

        rXY = ∑i=1~n (Xi - Xhat)(Yi - Yhat)
                    ------------------------------------
          sqrt(∑i=1~n (Xi - Xhat)^2) sqrt(∑i=1~n (Yi - Yhat)^2)

            Xhat: x user의 값(ex. rating) 평균

        1 ~ -1의 관계

        r이 1에 가까울수록 X = Y의 관계
            : 유사 관계

        r이 -1에 가까울수록 X = -Y의 관계

cosine similarity

평균 rating을 계산하지 않아도되기에, Pearson 보다 효율적

그러나 너무 높거나 낮은 점수에 대해서는 유사도가 잘 계산이 안 됨

 

        similarity(A,B) 
            =  A B      ∑i=1~n Ai x Bi
             -------  = --------------
            |A| x |B|  sqrt(∑i=1~n Ai^2) x sqrt(∑i=1~n Bi^2)

 

model-based method


    user-item matrix를 통해 model을 학습하고 예측하는 방법
    matrix factorization같은 model-based 방식이 유명함

 

rating matrix는 보통 rating 정보가 없어서 sparse matrix임

MF는 행렬 분해를 통해 빈칸을 채울 평점을 예측하는 방법

user와 item간의 rating 정보를 나타내는 rating matrix를 user latent matrix와 item latent matrix로 분해하는 기법

 

latent factor의 크기에 따라 설명력이 낮은 정보의 삭제 및 설명력이 높은 정보의 유지 방향으로 matrix를 생성

 

Truncated SVD 를 통해 full SVD행렬에서 일부 벡터를 삭제

 

latent factor models

user와 item을 latent factor(잠재요인)으로 추출

특정 user가 item과 얼마나 가까운지 정보를 측정

 

 

영화의 특징의 feature space가 있고,

사람들이 이 feature space에 map 되어 있음 (그런데, 사람은 해당 feature space의 feature set이 아니기에 사실 map이 불가능)

 

User와 item을 f 차원의 잠재공간으로 분해

latent factor는 item과 user 간의 hidden feature

latent factor는 user와 item간의 pattern으로 찾음

 

 

X 행렬의 행은 사용자의 수와 동일 열은 프로그래머에 의해 설정되는 잠재 요인

Y 행렬의 행은 잠재요인, 열은 item의 수

 

matrix X와 matrix Y에 임의의 값을 할당하고 훈련을 ㅅ기킴

훈련 시 GD로 훈련

 

반응형

'AI > Machine learning' 카테고리의 다른 글

언어모델  (0) 2022.03.13
Matrix factorization 접근법  (0) 2022.03.13
Content based filtering, collaborative filtering  (0) 2022.03.13
정규화  (0) 2022.03.12
코사인 유사도(cosine similarity)  (0) 2022.03.06