2023. 12. 3. 18:01ㆍ빅데이터
고차원이다
-> 사용자의 정보가 많다
Utility Matrix

주요 문제
1. utility matrix의 데이터를 어떻게 수집할까?
Gathering Ratings
- Explicit
- 사람들에게 부탁하기
-> 귀찮아서 잘 안 해줌 - Crowdsourcing: 사람들에게 돈 내고 부탁하기
- 사람들에게 부탁하기
- Implicit
- user들의 행동으로부터 rating 얻기
-> 많이 구매하면 높은 rating 주기
그럼 낮은 rating은 어떻게 주나?
- user들의 행동으로부터 rating 얻기
2. 아는 rating들로부터 모르는 rating을 어떻게 추론할까?
Cold start: 새로운 아이템은 rating이 없고, 새로운 user는 정보가 없다
방법 1) Content-based
: 이전에 유저 x가 높게 평가한 item과 비슷한 item을 유저 x에게 추천하는 방법

profile은 특징들의 집합이다.
어떻게 주요 특징들을 뽑아낼까?
-> TF-IDF: 텍스트 마이닝 기법
TF-IDF
f(ij) : item 혹은 문서 j에서 특징 혹은 용어 i의 빈도수

n(i) : 특징 혹은 용어 i를 언급한 item 혹은 문서의 개수
N: 전체 item 혹은 문서의 개수


높은 TF-IDF score을 가지는 item들로 profile을 구성한다.
Prediction heuristic
: user와 item profile의 Cosine similarity
예)
x: user profile
i: item profile
->

cosine similarity가 높은 item을 유저에게 추천해 준다.
Content-based 방식의 장점과 단점
장점
- 다른 유저들의 데이터가 필요 없다
- 독특한 취향을 가진 유저에게도 추천 가능하다
- 새롭고 유명하지 않은 item도 추천 가능하다
-> No first-rater problem
단점
- 적절한 특징을 찾는 것이 어렵다
- 새로운 유저에게 추천하는 것이 어렵다
-> user profile이 없음 - Overspecialization
: 유저의 content profile 밖의 item들은 절대 추천하지 않는다.
-> 유저가 재밌다고 평가하는 작품과 비슷한 작품들만 추천됨.
방법 2) Collaborative filtering
: 다른 사용자들의 평가도를 활용해서 평가하는 방법
User-User collaborative Filtering
: 유저 x의 평가와 비슷한 평가를 가진 다른 유저들의 평가도를 사용해서 추천하는 방법

비슷한 유저를 어떻게 찾을까?
r(x)을 유저 x의 ratings vector, r(y)을 유저 y의 rating vector라고 할 때,
다음과 같이 평가하였다.

(1) Jaccard similarity measure 사용하기

-> Jaccard simlarity = 2/4 = 1/2
이 방식의 문제점: 평가값은 무시된다.
(2) Cosine similarity measure 사용하기


-> -1부터 1까지의 값을 가진다.
1이면 같은 방향 즉, 1에 가까울수록 비슷한 유저.
벡터의 크기가 아닌 방향의 유사도를 축정 하는 방법이다.
계산하기
-> cos(rx, ry)= 1*1 + 0*0 + 0*2 + 1*2 + 3*0 / 루트(1^2 + 1^2 + 3^2) * 루트(1^2 + 2^2 + 2^2)
이 방식의 문제점: 평가하지 않은 항목은 부정적이라고 평가한다
해결책: row의 평균을 빼준다.
= Person correlation coefficinet
예)

A의 평균은 10/3이므로 빼주면 아래처럼 된다.

그 후 cosine similarity를 구한다.

A, C는 TW에서 SW1으로 갈 때 성향이 달라서 마이너스값이 나오고
A, B는 그런 게 없어서 0에 가까운 값이 나온다.
Item-Item Collaborative Filtering
: 아이템끼리의 유사도에 따라 비슷한 아이템들의 점수를 평균으로
rating이 없는 아이템에게 rating을 줄 수 있는 방법
예)

5번 유저의 1번 영화 rating을 예측하고 싶다.
1) 구하고자 하는 item을 기준으로 cosine similarity를 구한다.
2) 다른 영화들과의 유사도를 비교한다.

3) cosine similarity가 1에 가까운 값을 가지는 3번과 6번을 선택
4) 가중평균을 적용하여 1번 예측

보통 item-item collaborating filter 방식이 user-user 방식보다 성능이 좋다.
-> 유저들은 다양한 취향을 가지는 반면, 아이템은 간단하기 때문이다.
Collaborative Filtering의 장점과 단점
장점
- 어느 종류의 item이든 동작한다.
-> 특징 선택이 필요 없다.
단점
- cold start: 충분한 유저가 필요하다
- sparsity: 같은 아이템에 평가를 준 유저를 찾기 힘들다
- First rater: 평가되지 않은 아이템을 추천할 수 없다.
- popularity bias: 독특한 취향을 가진 아이템은 추천되지 않고
유명한 아이템만 추천되는 경향이 있다.
3. 추론한 방식을 어떻게 평가할까?
Root-mean-square error(RMSE)
: 평가방법
-> 오차에 제곱 후 평균 구해서 루트 씌움

오차 척도의 문제점
- 추천 예측의 다양성이 떨어질 수 있다
- context와 상관없이 추천이 들어올 수 있다
- 시리즈물 같은 경우 중간부터 추천될 수 있다.
- 실용적으로 봤을 땐 평점이 높은 것만 잘 추천해 주면 된다
-> 그러나 RMSE적으로 봤을 땐 안 좋다고 평가된다.
유저 x와 비슷한 k를 찾을 때 LSH를 사용하면
모든 데이터를 하나하나 비교하지 않아도 된다.
'빅데이터' 카테고리의 다른 글
| PageRank (2) | 2023.12.03 |
|---|---|
| Dimensionality Reduction(차원 축소) (2) | 2023.12.03 |
| 군집화 - K-means(colab에서 과제) (0) | 2023.11.29 |
| 추천시스템 - ALS (colab에서 과제) (1) | 2023.11.29 |
| Clustering (0) | 2023.11.25 |