일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Overfitting
- 딥러닝
- Tensor
- Python
- 파이썬
- 코테
- 협업 필터링
- 분산 시스템
- 알고리즘
- 부스트캠프
- SGD
- selenium
- 추천시스템
- 시각화
- 추천 시스템
- 머신러닝
- 웹스크래핑
- TF-IDF
- recommendation system
- wordcloud
- 백준
- 웹크롤링
- coursera
- pytorch
- 데이터 엔지니어링
- Cosine-similarity
- 프로그래머스
- codingtest
- 코딩테스트
- 데이터
- Today
- Total
개발자식
[Coursera] Recommendation Systems with TensorFlow on GCP_2_TIL 본문
[Coursera] Recommendation Systems with TensorFlow on GCP_2_TIL
밍츠 2022. 8. 10. 22:361. Content-Based Recommendation Systems
- item features를 사용하여 사용자가 이미 좋아한 것과 유사한 새로운 항목을 추천하고, 그들의 이전 행동이나 명시적인 피드백을 기반으로 한다.
- 다른 사용자 또는 다른 사용자 항목 상호 작용에 대한 정보에 의존하지 않는다.
2. Similarity Measures
두 영화가 비슷하다란?
- 영화의 장르나 주제가 겹치는 것이 많다.
사용자가 비슷하다란?
- 사용자가 과거에 좋아했던 영화나 장르가 겹치는 것이 많다.
머신러닝을 하려면 영화와 사용자를 비교해야 한다.
따라서 유사성에 대한 개념을 엄격하게 만들 필요가 있다.
-> 항목의 속성이나 기능을 생각하여 동일한 임베딩 공간에 있는 사용자가 얼마나 유사한지 비교할 수 있다.
임베딩 (Embedding)
: Embedding is a map from our collection of items or users to some finite dimensional vector space
- 데이터 세트의 항목과 사용자에 대한 유한 벡터 값 표현을 제공하는 방법을 제공한다.
- input features 표현, 머신러닝 문제에 주로 사용
- 두 가지 장르 (2차원)으로 임베딩하여 영화를 표현
- x 축 : Drama, y 축: Fantasy
- 메멘토영화는 드라마 장르에 가깝고 판타지에 멀다
- 해리포터는 판타지에 가깝고 드라마에는 중간 정도로 측정한다.
스타워즈 영화는 해리포터와, 메멘토 얼마나 가까울까?
- 직관적으로 위의 임베딩 공간으로는 해리포터와 가까워 보인다.
- 영화에 대한 임베딩 값을 고려한다.
- 유사성 측정(Similarity measure)은 정확히 정의하는 메트릭일 뿐, 임베딩 공간에서 항목과 얼마나 유사한가이다.
내적
- 일반적으로 사용되는 유사성 척도
- 각 벡터의 곱한 성분의 합을 계산한 것
- 해리포터 & 스타워즈 : 26, 메멘토& 스타워즈 : 19
-> 해리포터 & 스타워즈가 26으로 내적 값이 더 크므로 스타워즈는 메멘토보다 해리포터에 더 가깝다.
코싸인 유사도(Cosine Similarity)
- 널리 사용되는 유사성 척도
- 스케일된 내적과 유사하다.
3. Building a User Vector
위 사진과 같이 단일 사용자를 고려하여 데이터베이스에 7개의 영화만 있다고 가정하고, 이 사용자는 세 편의 영화를 평가했다. 남은 4편 중 어떤 영화를 추천해야 할까?
- 영화는 장르(판타지, 액션, 만화, 드라마, 코미디)를 사용하여 나타냈고, 해당 장르 여부에 대해 k-hot으로 인코딩 (한 가지 장르만 충족 가능)
-> 5차원 임베딩 공간에 영화를 표현하는 데 사용
- 장르 외에 더 세분화된 기능을 사용하면 영화를 더 정확하게 설명할 수 있다.
- 사용자 등급을 평가한 다음 결과 벡터를 정규화한다. -> 사용자 특징 벡터
- 영화 기능 메트릭스에 해당 사용자가 부여한 등급을 곱한 후 각 기능 차원을 합산하여 집계한 후 정규화한다. -> 사용자 기능 벡터
- 사용자 기능 벡터의 숫자 값은 높을수록 사용자가 좋아하는 장르이지만 Action의 값의 경우 사용자가 평가한 영화에 해당 장르가 없기 때문에 0이다.
4. Making Recommendations Using a User Vector
- 사용자가 보지 않은 영화의 5차원 임베딩 데이터와 사용자 기능 벡터를 내적하여 유사도를 측정한다.
-> 유사도가 가장 높은 영화를 추천
5. Making Recommendations for Many Users
단일 사용자가 아닌 이 기술을 확장하여 한 번에 여러 사용자에게 추천을 제공하는 방법
- item-feature matrix 는 영화를 설명하는 데 사용하는 기능의 k-hot 인코딩이다. 각 행은 단일 영화에 해당하며 열마다 영화가 해당 장르에 적합함을 나타낸다.
tf.constant
- constant (상수) : 변하지 않고 고정된 값
- 이 함수를 통해 상수 텐서를 만들 수 있다.
- 이 함수를 사용하여 하드 코딩되기 전의 user-item rating matrix와 item-feature matrix 두 텐서의 순위를 지정한다.
- 각 사용자에 대한 weighted feature matrix 계산
tf.stack :
- 여러 개의 텐서를 쌓아서 하나의 텐서를 만들어주는 함수
- 완전한 가중치 사용자 기능 텐서를 얻기 위해 tf.stack을 사용하여 이들을 함께 쌓는다. (스택 축 : 0)
사용자 기능 텐서를 찾으려면 특성 열을 합산하고 각각의 결과 벡터를 개별적으로 정규화한다.
what is the shape of the tensor resulting from stacking together all of the weighted feature metrics?
- 모든 가중치 기능 메트릭을 함께 쌓은 결과 텐서의 모양은 무엇인가?
: (#users, #movies, #features)
- 4 * 5 * 5
- feature 열을 더한 후 개인별로 결과 벡터 각각 정규화를 진행한다.
tf.reduce_sum :
- 텐서의 모든 성분의 총합을 계산하는 함수
추천을 제공할 때 이전에 평가되지 않은 영화에만 초점을 맞춘다.
- 내적으로 추론된 영화 순위 찾는다.
Which TensorFlow operation could we use to mask the previously rated movies in our user-movie ranking matrix, so we only focus on previously unrated movies when providing recommendations?
- 어떤 TensorFlow 작업을 사용하여 사용자 영화 순위 메트릭스에서 이전에 평가된 영화를 마스킹하여 추천을 제공할 때 이전에 평가되지 않은 영화에만 집중할 수 있습니까?
: tf.where (numpy.where과 유사함)
- 위에서 구한 과정을 통해 각 사용자에게 추천해줄 결과
- 두 번째 사용자는 액션이나 공상과학이 포함된 항목을 평가하지 않았기 때문에 다크 나이트의 특징이 액션과 공상과학만 포함되어 이 영화에 대해 0점으로 추론한다.
-> 콘텐츠 기반 추천 시스템의 단점
-> 사용자의 관심을 확대하기 어려움
'AI > Recommendation System' 카테고리의 다른 글
[Coursera] Recommendation Systems with TensorFlow on GCP_6_TIL (0) | 2022.08.24 |
---|---|
[Coursera] Recommendation Systems with TensorFlow on GCP_5_TIL (0) | 2022.08.23 |
[Coursera] Recommendation Systems with TensorFlow on GCP_4_TIL (0) | 2022.08.19 |
[Coursera] Recommendation Systems with TensorFlow on GCP_3_TIL (0) | 2022.08.18 |
[Coursera] Recommendation Systems with TensorFlow on GCP_1주차_TIL (0) | 2022.08.09 |