2022. 3. 13. 14:50ㆍAI/Machine learning
- 목차
Content based filtering
사용자가 높은 평점을 내린 item 중 유사한 item을 추천
ex. 영화추천
genre, actors, directors를 가지고 추천
item에 대해 feature를 추출하여 tem들의 feature간 '유사도'로 추천
문서의 경우 TF-IDF 기법으로 topic을 찾음
유사도 계산
cosine similarity 사용
u(x,i) = cos(x,i) = x ⋅ i
---------
||X|| ||i||
장점
많은 사용자 data가 필요하지 않음
다른 사람이 안 좋아해도 추천 가능
새로운(유사) 제품 추천 가능
왜 좋아하는지 설명 가능 (feature 기반)
단점
특징 추출
cold-start
overfitting
유사 제품만 추천
미경험 제품은 추천 못 함
collaborative filtering
user-user CF
나와 유사하게 item을 평점한 user를 찾아 그 user의 평점으로 나의 평점을 예측
rx = {1,0,4,0,1} # 0은 평점 안 한 것
ry = {4,0,2,3,0}
유사도 계산
Jaccard similarity
교집합의 크기 / 합집합의 크기
평점 정보를 보지 않아 부정확
cosine similarity
세타 방향의 유사도
내각인 경우 유효
90도는 0
둔각인 경우 부정 (반대적 측면으로 유효)
{1, ...} {4, ..} 1*4는 4임
1*4는 negative한 relation이 됨
Pearson correlation coefficient
1*4의 경우 positive가 되게 값을 보정
평점에서 평균을 빼서 계산
rx는 avg=2를 빼서 계산
ry는 avg=3을 빼서 계산
cosine similarity와 유사하나,
평점에서 평균을 뺀 값을 사용함
predictig rating
rxi: 사용자 x가 item i에 대해 매기는 예측값
N: item i에 대해 평점내린 나와 유사한 users
rxi = 1/k ∑ ryi
N 내 user들의 i에 대한 평점의 평균
으로 나의 i 평점을 예측
rxi = ∑ Sxy ryi / ∑ Sxy
분모: weight 합이 1이 되게 함
Sxy: sim(x,y)
사람간의 유사도로 가중치 부여
Item-item CF
이전에는 user의 item들에 대한 score가 feature vector 였다면,
이번에는 item을 user들이 score한 것이 feature vector이다.
user 별로 score가 비슷하게 매겨지는 item을 추천한다.
개개인만의 score를 보고 추천하는 것이 아니다.
사용자 x가 이미 평점을 내린 item 과 유사한 item으로
x가 아이템 i를 좋아할지 안할지를 예측
∑ Sij: sim(i,j) item i와 j의 유사도
item 별 유사도를 계산
item의 feature vector는 각 user들의 rating
즉, item의 space는 user로 구성됨
CF 장점
어떤 item에 대해서도 동작
평점 정보만 있으면 됨 (feature design 필요 없음)
보통 가장 좋은 성능의 기법
CF 단점
cold-start
sparsity
같은 item에 대해 평점을 내린 사용자를 찾기 어려움
cold-start 문제 피하기
사용자 정보 기반 추천
ex. 음악의 경우 좋아하는 장르, 가수 입력 등
'AI > Machine learning' 카테고리의 다른 글
Matrix factorization 접근법 (0) | 2022.03.13 |
---|---|
검색 vs. 추천 (0) | 2022.03.13 |
정규화 (0) | 2022.03.12 |
코사인 유사도(cosine similarity) (0) | 2022.03.06 |
로지스틱 회귀 logistic regression (0) | 2022.03.06 |