일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 협업 필터링
- 데이터
- Overfitting
- 알고리즘
- 백준
- coursera
- 추천 시스템
- 코테
- 코딩테스트
- codingtest
- 추천시스템
- 분산 시스템
- recommendation system
- SGD
- 머신러닝
- 파이썬
- Tensor
- selenium
- wordcloud
- Python
- Cosine-similarity
- 부스트캠프
- pytorch
- 데이터 엔지니어링
- 웹크롤링
- 프로그래머스
- TF-IDF
- 딥러닝
- 시각화
- 웹스크래핑
- Today
- Total
개발자식
[Coursera] Recommendation Systems with TensorFlow on GCP_4_TIL 본문
[Coursera] Recommendation Systems with TensorFlow on GCP_4_TIL
밍츠 2022. 8. 19. 18:07Type of User Feedback Data
배울 내용
- WALS를 사용하여 협업 필터링 추천 시스템 구축
- User- Item 상호 작용 데이터를 이해하고 유사점 찾기
- WALS Matrix Factorization 텐서플로우 추정기에 대한 입력 함수 작성
- 일괄 예측/추천
- 프로덕션 버전 만들기
아이템 기반 추천
- 사용자가 좋아하는 아이템을 주면, 임베딩 공간에서 유사한 항목을 검색할 수 있다.
- 아이템 임베딩 공간의 로컬 이웃에 있는 아이템은 거리 측정법을 사용한다.
- 다른 사용자에 대한 데이터가 필요하지 않기 때문에 좋지만 일반적으로 도메인 지식이 필요하다
- 안전한 추천만 하고 임베딩 공간의 로컬 버블에 머무르며 우리의 제한된 데이터 공간(manifold)에서 무언가를 시도하지 않는다.
ex) 과일은 색상, 맛, 산도, 질감 등으로 나타낼 수 있지만 항목을 비교할 가장 좋은 요소를 모르는 경우에는 어떻게 할 것인가?
협업 필터링 추천
- 잠재 요소를 학습하고 외부 사용자의 개인 거품을 탐색할 수 있다.
- 추천에 우연한 기회를 줄 수 있다. 사용자의 데이터 공간이 작더라도 임베딩 공간의 다른 사용자의 데이터 공간을 하위 집합으로 가질 수 있다.
-> 사용자가 유사하다.
- 사용자와 항목 간의 두가지 문제를 동시에 해결한다
-> 아이템과 사용자 간의 유사성을 동시에 사용한다.
- 이러한 유사점을 찾는 항목을 행렬로 나타낼 수 있다.
협업 필터링 추천에서 상호작용이 없어 희소성 문제를 해결하려면
-> 행렬 분해(matrix factorization)를 사용한다.
- 행은 사용자, 열은 아이템이다.
- 위의 행렬은 명시적인(explict) 등급이다. (1~5점)
- 일반적으로 명시적 피드백은 받기 어렵지만 이를 암묵적 피드백이 있다.
-> 하지만 둘은 다름, 암묵적 피드백은 의도적으로 사용자가 상호 작용한 항목을 평가하는 수단이 아님, 추론해야 함
ex) 동영상을 보았는지 여부, 동영상을 본 시간, 페이지 특정 영역 버튼 클릭 등
- 사용자 항목 상호작용에 대한 명시적 데이터와 암시적 데이터 모두 있는 경우 추천에 활용할 수 있다.
- like / dislike -> explicit
- duration -> implicit
Embedding Users and Items
1차원 유사성을 기준으로 가정, 영화를 성인과 어린이 스펙트럼 사이에 해당하는 위치를 표현한다.
- 각 항목에는 item을 설명하는 임베딩 공간 내에 벡터가 있다.
- 하지만 이것은 매우 질적이며(qualitative) 알 수 없는 상대적인 위치에 있다.
-> 조금 더 정량적으로(quantitative) 만들 수 있을까?
- 대략적인 위치에따라 수치를 부여했다.
-> 음수에 가까울수록 아동용 영화, 양수에 가까울수록 성인영화
- 좌표계의 점 사이, 거리 행렬로 유사도를 구할 수 있다.
- 다크나이트와 메멘토 영화는 가장 유사한가? (가장 가까이 있으니까)
-> 이 1차원 상에서는 매우 가깝더라도 영화의 다른 기능을 사용하는 스펙트럼에서는 멀리 떨어져 있을 수 있다.
- 아트 하우스, 블록버스터 스펙트럼을 추가하여 1차원에서 2차원으로 차원을 늘렸다.
- 차원을 추가하면 임베딩 공간이 기하급수적으로 커지고 임베딩 공간의 점 사이에 큰 공극이 있는 sparser
- 5개의 영화(포인트)를 위치로 나타내면 점은 변하지 않았지만 좌표계는 변했다.
-> 영화(포인트)의 공간 내의 점을 설명하는 방법으로 좌표계는 중요하다.
- 해리포터와 슈렉이 가장 가까운 영화이다.
-> 가장 가까운지는 내적 계산 이용
- User-item 상호작용 매트릭스에 적용하여 알려지지 않은 상호작용이 얼마나 평가될 수 있을까?
- 사용자와 item 사이의 내적을 취해 IJ번째 상호작용 값은 I번째 사용자 장벽의 내적이며 J번째 항목 벡터이다.
이러한 값을 임베딩 공간에서는 어떻게 보이는가?
- 좌표 값은 선택한 두 벡터 내에서 어디에 속하는지를 기반으로 한다.
가장 왼쪽의 사용자에게 추천해준다면?
- 사용자와 영화 사이에 내적을 계산한다.
-> 왼쪽 사용자와 영화 사이에 내적 값이 가장 큰 슈렉과 벨빌의 세 쌍둥이를 추천한다.
하지만 위의 계산은 2차원에 불과하고 영화(항목)가 적다.
차원을 높인다면 어느 항목이 가장 가까운지 분별하기 어려울 것이다.
사용자와 유사한 사용자를 찾는 것도 아이템 간의 유사한 아이템을 찾는 것과 똑같다.
-> 사용자와 아이템은 임베딩 공간내의 점으로 표시된다.
임베딩은 데이터로 학습이 가능하다.
본질적으로 매우 희소한 상호작용 행렬인 데이터를 압축하고 있다.
- 사용자 상호작용 행렬 분해는 매우 큰 사용자를 항목 행렬로 분할한다.
- 위 사진의 경우 사용자인 행 요소의 두 개의 작은 행렬로, 영화인 열 요소의 두 개의 작은 열로
(두 개인 이유는 단순히 학습된 임베딩 공간의 차원)
ex) 웹 사이트의 사용자 : 5천만명, 10,000 편의 영화 -> 5000 억 개의 상호 작용 쌍
그러나 k 개의 특징을 갖는다면 k(사용자 + 영화)로 위 계산보다 천 배 적은 공간이다.
- 잠재 기능의 수가 조화 평균의 절반 미만인 한 사용자의 수와 항목 수만큼 공간이 절약된다.
4번째 사용자에게 영화를 추천한다면?
내적으로 구한다
- 슈렉 : 0.1 * 1 + 1* (-1) = -0.9
- 해리포터 : 0.09 - 0.2 = -0.11
- 벨빌의 세 쌍둥이 : -0.1 + -0.8 = -0.9
-> 가장 높은 예상 점수로 해리포터를 추천한다.
- 다크나이트는 이미 평가했기 때문에 이 예시에서 권장하지 않는다.
-> 따라서 이미 등급이 매겨진 영화를 모두 필터링하고 그런 당므 결과를 하위 집합에서 최상위 하위 집합을 선택한다.
'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_3_TIL (0) | 2022.08.18 |
[Coursera] Recommendation Systems with TensorFlow on GCP_2_TIL (0) | 2022.08.10 |
[Coursera] Recommendation Systems with TensorFlow on GCP_1주차_TIL (0) | 2022.08.09 |