일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 분산 시스템
- 머신러닝
- 웹스크래핑
- Tensor
- 코테
- 코딩테스트
- SGD
- 웹크롤링
- pytorch
- TF-IDF
- 알고리즘
- selenium
- 데이터 엔지니어링
- 데이터
- recommendation system
- 파이썬
- 백준
- coursera
- 딥러닝
- wordcloud
- codingtest
- 시각화
- Cosine-similarity
- 협업 필터링
- Python
- 프로그래머스
- 부스트캠프
- 추천 시스템
- Today
- Total
개발자식
[Coursera] Recommendation Systems with TensorFlow on GCP_5_TIL 본문
[Coursera] Recommendation Systems with TensorFlow on GCP_5_TIL
밍츠 2022. 8. 23. 22:49ALS
- SGD가 두 개의 행렬(User Latent, Item Latent)을 동시에 최적화하는 방법이라면, ALS는 두 행렬 중 하나를 고정시키고 다른 하나의 행렬을 순차적으로 반복하면서 최적화하는 방법이다.
- 기존의 최적화 문제가 convex 형태(볼록 형태)로 바뀌기에 수렴된 행렬을 찾을 수 있다.
ALS Algorithm
1. 초기 아이템, 사용자 행렬을 초기화
2. 아이템 행렬을 고정하고 사용자 행렬을 최적화
3. 사용자 행렬을 고정하고 아이템 행렬을 최적화
4. 위의 2,3, 과정을 반복
-> 2,3번의 과정을 반복하면 아이템 행렬의 값이 달라져서 사용자 행렬의 최적화된 값도 달라지면서 두 행렬 모두 수렴의 근접한 값을 찾아준다.
The ALS Algorithm
WALS를 사용하기 위해 TensorFlow 모델을 어떻게 생성할까?
- WALS Estimator를 사용하여 입력을 올바르게 구성한다.
- WALS의 W는 가중치로, 원하는 특정 항목에 가중치를 추가할 수 있다.
-> 수익성 있는 아이템이 더 많이 추천 될 것이다.
위 공식은 최소자승법에 대한 의사 코드이다.
행렬 분해로 U와 V를 반복적으로 배운다. 함께 곱해지면 근사치에 가깝게 재구성되기를 바라지만 원래 사용자 항목 상호작용 메트릭스가 되진 않는다.
최소자승법
: 측정값을 기초로 해서 적당한 제곱 합을 만들고 그것을 최소로 하는 값을 구하여 측정 결과를 처리하는 방법이다.
-> 최소 제곱을 교대로 사용하면 가까워질 수 있다.
의사 코드 설명
1. U, V 인자 행렬 초기화 (ex 사용자, 영화)
+ 목표 : 이 두 임베딩을 동시에 계산
2. 첫 번째 루프
- 행 요인 U에 대해 풀고 있다. 사용자가 되는 모든 행을 반복한다. 방정식은 최소 제곱 법칙으로 정규화 상수 람다와 함께 L-곡선 정규화가 추가되었다.
- ui가 계수와 유사하고, x 대신 열 인수인 v, y 대신 복사 행렬 r의 ithro를 사용
- 가중치 계수를 찾기 위해 모멘트 행렬을 곱한다.
3. 두 번째 루프
- 첫 번째에서 해결한 행 요소를 사용하는 모든 열 요소에 대해 반복한다
Preparing Input Data form ALS
ALS는 한 번에 전체 행을 공급하지만 어느 단계에 있는지 알기 때문에 두 가지 모두를 공급한다.
- 어떤 단계에 있든 항상 올바른 데이터를 갖도록 한다.
- 우리는 matrix를 여러 번 통과하여 일이 고르게 진행되어 모든 행과 열을 처리하게 된다.
- 배치 크기가 데이터를 명확하게 나누지 않도록 하는 것이 중요할 수 있다.
-> rollover offset이 배치에서 다른 그룹화를 유발하도록 길이를 설정하여 동일한 배치가 계속 반복되지 않는다.
- V를 고정하고 U를 계산하고, U를 고정하고 V를 계산한다.
-> 수렴이 V를 고정할 때까지 교대로 반복한다.
- 동시에 행과 열의 배치를 읽는다.
- 교체로 인해 레이블이 필요하지 않는다.
> 레이블은 현재 해결되지 않는 기능에서 가져온다.
-
- visitorId -> userId, contentId -> itemId, session_duration ->rating 으로 매핑한다.
이전의 모든 항목을 필터링할 수 있기 때문에, 사용자에게 이미 평가된 항목을 추천해야 할까?
-> 영화, 옷 같은 경우 사용자가 이미 보고 구매했지만 레스토랑의 경우 다시 가고 싶을 수 있다.
-> 전송하는 대신 데이터를 분배할 수 있다.
- clientID는 영숫자 문자열로 문자열을 사용자 인덱스를 나타내는 정수로 매핑해야 한다.
- productID는 문자열은 아니지만 실제 행렬 인덱스를 나타내지 않은 긴 정수로 해당 제품 항목 인덱스를 나타내는 정수로 매핑해야 한다.
-sentiment는 명시적 피드백의 예를 참고하거나, 서수 매핑을 진행한다.
'AI > Recommendation System' 카테고리의 다른 글
[Recsys] 추천시스템_NGCF 모델 (0) | 2022.10.18 |
---|---|
[Coursera] Recommendation Systems with TensorFlow on GCP_6_TIL (0) | 2022.08.24 |
[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_2_TIL (0) | 2022.08.10 |