728x90
2주차 강의에서 배울 추천 시스템 종류
#4. Content-based filtering
▶️ Collaborative filtering vs Content-based filtering
Collabo : ratings of user를 사용하여 유사한 rating을 준 사람들의 rating값에 기반하여 추천
Content : user, item's features를 사용하여 추천
- r(i,j) : 사용자가 해당 아이템을 rating한 경우 (0,1)
- y(i,j) : 사용자가 아이템에 대해 매긴 점수
Examples of user and item features
- User feature (xu(j) for user j)
- 나이, 성별, 나라 본 영화 수 , 각 장르에 대한 평균 점수
- Movie feature (xm(i) for movie i)
- 출시연도, 장르, 리뷰, 평균점수
→ 영화 xm(i)가 사용자 xu(i)에게 추천할 만한지 알아봐야 함
Content-based filtering : Learning to match
- User j가 영화 i에 대해 매길 점수 예측
- vu : 유저들의 feature에 대한 벡터값
- vm : 영화의 feature들에 대한 벡터값
- vju,vjm은 dot product 수행을 위해 길이가 같아야 함 → neural network로 맞춰줄거임
▶️ Deep learning for content-based filtering
Neural network architecture
- user, movie의 input 값들을 Neural network 을 사용하여 동일한 output의 벡터로 만들고 dot product 활용
- rating과 같은 값을 위해선 Regression, 좋아한다 아니다의 여부를 예측하기 위해선 sigmoid 활용하면 됨
- 하지만 xu, xm에 대해 각각 nn을 하기 때문에 파라미터 수가 많아져서 이를 해결해야 함
- vu, vm 간 곱이 실제 y를 얼마나 잘 예측하는 지 거리를 확인하고 여기에 정규화를 입혀서 cost function을 활용
- 그 다음 경사하강법이나 adam등의 optimizer 사용하여 cost를 최소화
Learned user and item vectors
특정 영화와 유사한 영화를 찾기 위해선 두 영화 간 거리가 최소화된 영화를 찾으면 됨
▶️ Recommending from a large catalog
How to efficiently find recommendations from a large set of items?
1. Retrieval
- 그럴듯한 item candidate large list 만들기
- 유저가 최근에 본 10개 영화랑 비슷한 영화 찾기
- 가장 많이 시청한 3개 장르에서 탑10 찾기
- 나라에서 탑 20개 찾기
- 해당 아이템들 combine한 후 중복된 값, 이미 유저가 시청한 값 제거 (100개정도 확보)
2. Ranking
- retrieval list에서 확보한 영화의 feature들과 유저 feature를 활용해서 neural network에 넣어 rating값 등 예측
- 이때 영화에 대한 vm 값을 미리 산출해 놓으면 계산이 빨라짐
- 유저에게 ranked item 노출
▶️ TensorFlow implementation of content-based filtering
#옵션. Principal Component Analysis
▶️ Reducing the number of features
여러개의 Feature 가 있을 때, 새로운 축을 찾아서 적은 변수를 사용하는 것 (차원축소)
- 일반적으론 유사한 분포를 보이는 두개의 feature 중 하나만 고르거나 (e.g. 차의 길이, 높이)
- 두개의 변수를 모두 반영하는 새로운 z 축을 만들어서 해당 변수를 선택하거나 (길이와 높이를 반영한 새 축)
- 여러개의 feature를 가졌어도 2차원으로 축소할 수 있어서 시각화 하기에 좋음 (데이터 압축이나 지도학습 속도 올리는 용으론 x)
▶️ PCA Algorithm
Choose an axis
- Principle component (new axis)를 만들어야 함
- 해당 축과 데이터를 90도로 Project했을 때 해당 데이터들의 variance가 최대치여야 함 (많은 정보를 가져오기위해)
Coordinate on the new axis
- dot product 로 해당 데이터의 좌표와 해당 축에서 length= 1에 해당하는 좌표를 곱하기
- Principle components는 2nd, 3rd가 있으며 서로 90도로 교차해야 함 (3D)
Appoximation to the original data
▶️ PCA in the code (scikit-learn)
- component엔 축 몇개로 둘 것인지 세팅