no image
AARRR, Retention, Cohort 분석 알아보기
AARRR 분석 고객 여정을 5개 단계로 나눠, 데이터 기반 의사 결정을 하는 분석 프레임워크이다. Acquisition, Activation, Retention, Revenue, Referral의 단계로 구성되고, 단계의 앞 글자만 따서 AARRR이라고 부른다. 각 단계의 특성은 다음과 같다. Acquisition(획득, 유입) 유저를 어떤 방식으로 유입시키고, 획득할 수 있는 지 고민한다. 획득을 위해선 광고가 필요하다. 다음과 같은 지표들이 고려된다. CAC(Customer Acquisition Cost) : 한 명의 고객을 확보하기 위해, 지출할 금액 DAU, MAU : 일간/월간 활성 유저 수 신규 방문자 수 Activation(활성화) 유입된 유저가 제품, 서비스의 주요 기능을 경험할 수 있도..
2022.08.26
no image
[짧] Odds(오즈)와 Logit(로짓) 알아보기
Odds(오즈) 실패 비율(확률) 대비 성공 비율(확률)을 의미한다. 수식으로 나타내면 다음과 같다. $odds = \frac{p}{1-p}$ 오즈를 활용하면 [0, 1] 사이의 확률 값을 [0, ∞]로 매핑할 수 있다. 확률이 0.5 일 때 오즈 값은 1이기 때문에, 1 값을 경계로 성공, 실패 여부 등을 표현할 수 있다. Logit(로짓) 오즈에 로그를 취한 것이다. 수식으로 나타내면 다음과 같다. $L = ln \frac {p}{1-p}$ 로짓을 활용하면 확률 값을 [-∞, ∞]로 매핑할 수 있다. 확률이 0.5일 때 로짓 값은 0이기 때문에, 0 값을 경계로 성공, 실패 여부 등을 표현할 수 있다.
2022.08.19
no image
[논문 정리] SDM: Sequential Deep Matching Model for Online Large-scaleRecommender System
Concept 대규모 데이터 환경에선, 추천에 앞서 후보군을 결정하는 Matching 과정이 필요하다. Matching엔 아이템 기반 CF가 많이 활용되지만, 이 경우 동적으로 변하는 유저의 취향을 반영하기가 힘들다. 이러한 Matching에 Sequential 추천을 활용하면 유저의 취향을 더 잘 파악할 수가 있다. Sequential 추천 시나리오에선, 하나의 세션(short-term)에도 여러 목적이 있을 수 있다는 점과 유저에 따라 긴 시간(long-term) 동안 유지되는 선호도가 있다는 점을 고려하는 것이 중요하다. SDM은 각 세션 마다 여러 목적이 있을 수 있다는 점을 고려해 Single Head Attention 대신, Multi Head Attention를 도입했다. 또한 긴 시간 동안..
2022.08.18
no image
[논문 정리] MEAL: Multi-Model Ensemble via Adversarial Learning
Concept Ensemble(앙상블) 기법을 활용하면 모델의 성능을 향상 시킬 수 있다. 하지만 앙상블에 사용할 모델을 추가로 저장하고, 또 추론 시 불러와야 하기 때문에 실행이 오래 걸린다는 문제점이 있다. 이때, Knowledge Distiliation(KD)으로 단일 모델을 구성하면 일종의 앙상블 효과를 얻으면서, 동시에 언급한 단점들을 해결할 수 있다. KD는 일반적으로 마지막 레이어의 소프트 라벨만 활용해서 진행된다. 하지만 MEAL은 중간 레이어의 Feature Vector 까지 유사하도록 만들기 위해, KD를 레이어 중간 마다 진행하면서 동시에 Adversarial Loss 까지 도입한다. 이를 Block 단위로 처리할 수 있도록 Adaptive Pooling을 도입했고, 이는 다양한 구조..
2022.07.16
no image
Pytorch hub를 통해 MEAL V2 모델 사용하기
Pytorch hub pytorch hub는 torch 기반 모델 publish 및 load를 지원하여 사전 학습된 모델을 손쉽게 활용할 수 있도록 도와준다. 현재 load 해서 사용할 수 있는 모델은 48개라고 돼있지만 pytorch-transformers와 같이 여러 모델들을 한 곳에 모아둔 경우도 있어 실제로는 더 다양한 모델을 사용할 수 있다. publish 및 load에 대한 자세한 방법은 아래 링크를 통해서 확인할 수 있다. torch.hub — PyTorch 1.12 documentation torch.hub Pytorch Hub is a pre-trained model repository designed to facilitate research reproducibility. Publishi..
2022.07.15
no image
Feature Engineering 방법과 효과
Combining(Cross columns) columns를 결합해서 새로운 column 생성 조합에 사용되는 column에 unique한 값이 너무 많다면 단순히 경우의 수 나열과 똑같아져 의미가 없어짐 따라서 unique한 값이 적은 column끼리 묶어서 새로운 columns를 만들도록 하자 → 새로운 특성을 발견 가능 wide&deep에서 활용 Categorifying 0 ~ n - 1까지의 category로 변경 latent vector를 얻는 딥러닝에서 많이 활용 기존 column에 hashing으로 str 값이 입력된 경우 category(int)로 변경하면 데이터를 줄일 수 있음 자주 등장하지 않는 category를 그대로 사용한다면 overfitting이 발생! 자주 등장하지 않는 cat..
2022.07.11
no image
[논문 정리] Deep Neural Networks for YouTube Recommendations
Abstract 대규모인 유튜브 환경에서 추천을 진행하기 위해 2 - stage information retrieval을 이용하여 추천 시스템을 구성하였다. 이때, 각 과정에 딥러닝을 활용했으며 2 - stage는 각각 다음과 같다. candidates generation 과정 ranking 과정 Introduction 유튜브에선 많은 유저(10억 단위)들에게 실시간으로 업데이트 되는 영상을 추천해야 하며, 이는 다음의 3가지 측면에서 challenging하다. Scale : 기존 추천 방식(Matrix Factorization)은 유저 - 콘텐츠가 매우 많은 유튜브에서 사용할 수 없다. 유튜브 추천 시스템은 실제 서빙 환경인 분산 처리 환경에서 잘 작동해야 한다. Freshness : 새로 업로드된 영..
2022.06.24
no image
Dot-product Attention과 Scaling 필요성
Intro Attention Is All You Need 논문에선 $Q$와 $K$ 벡터의 유사도를 0 ~ 1 사이의 확률 값으로 정규화하기 위해서 Dot-product Attention를 사용한다. 이때, Dot-product Attention을 그대로 사용하지 않고 $K$벡터의 차원 값인 $d_k$를 활용하여 scaling된 형태로 사용한다. $$Attention(Q, K, V) = softmax(\frac{QK^{T}}{\sqrt d_k})V$$ scaling의 근거는 논문에서 언급되며 다음과 같다. $d_k$가 커지면 $QK^{T}$ 값이 커진다. $QK^{T}$ 값이 커지면 softmax 함수의 gradient vanishing이 발생한다. scaling을 통해서 gradient vanishing..
2022.06.14
no image
torch.take vs torch.gather
torch.take는 input tensor들을 1차원으로 생각해서 처리한다. 따라서 batch 단위 tensor를 처리할 때는 torch.gather를 사용하는 것이 좋다. Returns a new tensor with the elements of input at the given indices. The input tensor is treated as if it were viewed as a 1-D tensor. The result takes the same shape as the indices. 다음 예시를 통해 torch.take와 torch.gather의 차이점을 확인할 수 있다. 예시는 batch 유저별 label과 negative sample(100개)의 logits을 구하기 위한 과정이다. ..
2022.05.31
no image
Gradient Descent(경사 하강법)에서 Learning Rate(학습률)를 작게 설정하는 이유
이유? 딥러닝은 Loss function의 최적해를 탐색하기 위해서 Gradient Descent(경사 하강법)를 활용한다. 경사 하강법은 반복적으로 $\theta$를 $\theta+\Delta\theta$ 로 수정하며 최적해를 얻는 방법이고, Loss 함수의 1차 테일러 근사식이기도 하다. 근사식의 오차를 줄이기 위해선 Learning Rate(학습률)이 작아야 하고, 이것이 바로 학습률을 작은 값으로 설정하는 이유다. 수식으로 확인하기 $\theta+\Delta\theta$ 에서의 Loss는 다음과 같이 표현할 수 있다. $$L(\theta + \Delta\theta)$$ 테일러 전개의 기본 형태는 $f(x) = \sum_{n=0}^\infty \frac{f^{(n)}(a)}{n!} (x-a)^n$ ..
2022.04.26
no image
[논문 리뷰] Neural Collaborative Filtering
1. 등장 배경 기존 collaborative filtering(협업 필터링)에서 활용되는 Matrix Factorization은 유저 - 아이템 행렬을 각각 유저, 아이템 임베딩으로 분해한 뒤 이를 해당 유저와 아이템의 look-up table로 삼는다. 이 경우 유저 - 아이템 행렬의 예측 값을 dot product로 구할 수 있으며 $M{\times}N$ 행렬을 $M{\times}K$, $K{\times}N$로 분해할 수 있다. 하지만 dot product는 linear한 연산이면서 동시에 모든 차원의 가중치를 동일하게 생각하기 때문에 복잡한 유저 - 아이템 행렬을 표현하기엔 충분하지 않다. 실제로 dot product가 활용될 latent space의 상황을 가정해보자. $u_4$의 경우 유저 -..
2022.04.14
no image
목적 함수(Objective function)와 최적화(Optimization)
목적 함수란? 머신러닝 모델의 평가지표는 손실(Loss)함수, 비용(Cost)함수, 목적(Objective) 함수 등 다양한 이름으로 불림 손실, 비용, 목적 함수의 명칭에 대해선 정확한 정의는 없지만 일반적으로 다음과 같이 생각하면 편함 A loss function is a part of a cost function which is a type of an objective function. 출처 결국 머신러닝 모델은 손실, 비용 함수는 줄이려고(minimise) 하며 목적 함수는 최적화(optimise)하려고 함 최적화하고 싶은 목적 함수는 최적의 모델을 확률 관점에서 볼 지 error 최소화 관점에서 볼 지에 따라서 다름 확률 관점에선 목적 함수를 최대화하고 싶어하고(Maximum Likelihood..
2022.04.10