반응형
협업필터링이란
- 많은 유저들로부터 얻은 기호 정보를 이용해 유저의 관심사를 자동으로 예측하는 방법
- 더 많은 유저/아이템 데이터가 축적될수록 협업의 효과는 커지고 추천은 정확해질 것이라는 가정에서 출발
- 예를 들어 “노트북”을 본 유저들이 함께 본 다른 상품을 추천하거나, “노트북”을 구매한 유저들이 구매한 다른 상품들을 추천
- 최종 목적 : 유저 u가 아이템 i에 부여할 평점을 예측하는 것
- 방법
- 유저-아이템 행렬 생성(행렬이 다 채워져있지 않아서 빈칸을 채워야함)
- 유사도 기준을 정하고, 유저 혹은 아이템 간의 유사도를 구할 것
- 주어진 평점과 유사도를 활용하여 행렬의 비어 있는 값(평점)을 예측
- 원리
- 같은 아이템을 구매한 유저 a,b = a와 b는 비슷한 유저
- 이후 유저 a가 아이템c를 구매한다면 유저b에게도 c를 추천
- 똑같이 유저 a가 선호하지 않았다면 똑같이 추천해주지 않음
- 아이템을 가진 속성을 사용하지 않으면서도(컨텐츠 기반은 사용) 좋은 성능을 냄
Neighborhood-based CF(메모리 기반 CF)
- 유저기반 ,아이템 기반 둘로 나뉨
유저 기반 협업필터링(User-based CF, UBCF)
- 두 유저 간 얼마나 유사한 아이템을 선호하는가?
- 유저 간 유사도를 구한 뒤, 타켓 유저와 유사도가 높은 유저들이 선호하는 아이템을 추천
- 아래 사진처럼 B와 유사한 유저는 A이므로 빈칸에 A 유저의 스타워즈 평점과 비슷할 것으로 예측
아이템 기반 협업필터링(Item-based CF, IBCF)
- 두 아이템이 유저들로부터 얼마나 유사한 평점을 받았는가?
- 아이템간 유사도를 구한 뒤, 타켓 아이템과 유사도가 높은 아이템 중 선호도가 큰 아이템을 추천
- 아래 사진처럼 스타워즈랑 비슷한 아이템(영화)는 헐크,아이언맨이므로 그것들의 평점과 비슷할 것이라 예측
Neighborhood-based CF(NBCF)
- 목적 : 유저 u가 아이템 i에 부여할 평점을 예측하는 것
- 위의 유저기반, 아이템기반이 NBCF의 핵심!
- 특징
- 구현이 간단하고 이해가 쉽다
- 아이템이나 유저가 계속 늘어날 경우 확장성이 떨어진다.(Scalability)
- 주어진 평점/선호도 데이터가 적을 경우, 성능이 저하된다(Sparsity)
- 모델 기반 CF로 해결가능
Sparsity
- 주어진 데이터를 활용해 유저-아이템 행렬을 만드는것(실제로 행렬 대부분의 원소는 비어있음)
- NBCF를 적용할려면 적어도 sparisty ratio가 99.5%를 넘지 않는 것이 좋음
- sparisty ratio : 행렬 전체 원소중 비어있는 원소 비율(그럼 99%면 1퍼만 있다는거?)
- 이럴 경우 모델 기반 CF사용해야함
K-Nearest Neighbors CF (KNN CF)
NBCF의 한계
- 위에서 스타워즈에 대한 평점 예측을 위해서는 스타워즈를 평가한 모든 유저($\Omega$)와의 유사도를 구해야함. 이는 유저가 많아질 경우 연산은 늘어나고 성능을 떨어지게 함
KNN 협업필터링
- 아이템을 평가한 모든 유저들 중에 가장 유사한 K명의 유저를 이용해 평점을 예측
- 이렇게하면 유저가 많아져도 K개의 유저만 확인하면 됨
- 하지만 K를 직접 튜닝해야하는 하이퍼 파라미터임!
유사도 측정법
- 두 데이터 간의 유사성을 수량화할 수 있는 실수 값 함수 혹은 척도
- 일반적으로는 거리의 역수 개념을 사용
- 두 데이터 간 거리를 어떻게 측정하느냐에 따라 유사도가 많이 달라짐
- Mean Squared Difference similarity(MSD 유사도)
- 추천시스템에서만 사용됨
- 주어진 유저-아이템 rating에서 전체 아이템(또는 유저)의 개수로 나눠준 것)
- 유클리드 거리에 반비례함
- 둘의 값이 비슷할 수록 msd는 작아지게 되고 msd_sim은 커지게 됨
- 분모가 0이 되는 것을 방지하기 위해 분모에 1이 더해짐(smoothing)
- Cosine similiarity(코사인 유사도)
- 두 벡터의 각도를 이용하여 구할 수 있는 유사도
- 두 벡터가 가리키는 방향이 얼마나 유사한지 의미
- 방향이 비슷하면 1에 가까움, 반대는 -1
- Pearson similarity(피어슨 상관계수와 비슷)
- 각 벡터를 표본평균으로 정규화 하고 코사인 유사도를 구함
- 표본평균으로 정규화하기 때문에 각각의 벡터의 크기차이를 고려할 수 있음.
- 평점에서 1을 기준으로 주는 사람, 3을기준으로 주는 사람의 정도를 같게할 수있음
- 1에 가까우면 양의 상관관계, 0일 경우 독립, -1에 가까울수록 음의 상관관계
- Jaccard Similarity(자카드 유사도)
- 집합의 개념을 사용함
- 코사인,피어슨 유사도와 달리 차원이 달라도 이론적으로 계산 가능
- 두집합이 얼마나 같은 아이템을 공유하고 있는지를 봄
- 두 집합이 모두 같은 아이템이면 1, 같은게 하나도 없으면 0
어떤 유사도를 선택할지는 정해진 것이 없고 데이터마다 도메인마다 다름, 성능에 따라 선택하는 것을 추천
평점 예측
Average
- 위의 사진에서 스타워즈에 대한 평점을 빈칸을 제외하고 계산
- 이렇게 평균내는 것이 유저b가 좋아할까 ? → No, 선호도를 반영해야함
Weighted Average
- 각각 유저의 유사도를 기준으로 가중치평균을 통해 평점을 예측
- 유사도는 다양하지만 코사인 유사도가 가장 유명함
위와 같은 방법들을 Absolute Rating이라고 함. 하지만 이는 한계가 존재
- 유저마다 평점을 주는 기준이 다름(대부분 5를 주는 유저, 대부분 1을 주는 유저 등등
- 이때 평점 절대값을 사용하면 그 유저의 성질을 담을 수 없음
상대적 평점(relative rating)
- 유저의 평균 평점에서 편차를 사용함
- 평균 1인 유저가 5점을 주면 엄청나게 좋게 평가한 것!
- 평점에서 평균 평점을 빼면 deviation을 사용
- 평균보다 얼마나 높게 낮게 평가했는지를 알 수 있음
- 아이템 기반 또한 똑같이 열을 기준으로 계산 가능함
- 대신, 유저u가 평가한 아이템들의 집합으로 고려해야함
Top - N Recommendation
- 협업필터링을 최종 목적은 유저u가 아이템i에 부여할 평점을 예측하는 것
- 추천시스템의 목적은 예측 평점이 높은 아이템을 유저에게 추천하는 것!
- CF에서 구한 평점을 모두 계산하면 그것을 내림차순으로 정렬하여 상위 N개 추천
반응형
'Study > AI' 카테고리의 다른 글
[ML] 머신러닝 프로젝트 사이클 (0) | 2023.05.07 |
---|---|
[AI] 모델 기반 협업필터링 (0) | 2023.04.02 |
[AI] 추천시스템 기초 (0) | 2023.04.02 |
[AI] 다양한 최적화 방법 (0) | 2023.03.26 |
[AI] Recurrent Neural Networks(RNN) (0) | 2023.03.26 |