목록AI/추천시스템 (15)
꺼내먹는지식 준

MLP NCF neural collaborative filtering 에 맞는 형태로 데이터를 변환 ratings_df = pd.read_csv(data_path + 'u.data', sep='\t', encoding='latin-1', header=None) ratings_df.columns = ['user_id', 'movie_id', 'rating', 'timestamp'] user_ids = ratings_df['user_id'].unique() movie_ids = ratings_df['movie_id'].unique() ratings_matrix = ratings_df.pivot(index='user_id', columns='movie_id', values='rating') #pivot 함수,..

주어진 input에 대해서 추론된 reconstructed input 과 차이를 최대한 줄이는 방법으로 loss function 을 구성하고, 이미지 데이터 같은 경우에는 root mean square error, sparse vector 는 softmax 를 loss function 으로 사용한다. 꼭 똑같이 사용하는 것 만이 아니라 노이즈가 있는 이미지를 노이즈가 없는 이미지로 전환하는 등 다양하게 사용된다. 오토인코더의 발전된 형태 일부러 random noise 를 추가하여 강제로 noise 한 입력값을 넣고, noise 가 없는 이미지가 복원되도록 함으로써 더 robust 한 모델이 학습된다. (또한 깨끗한 이미지에만 overfitting 되지 않는다.) 그 이후에도 variational auto..

딥러닝 추천 모델의 장점 한마디로 사람을 통해 직접 하기 어려운 학습이 가능하다. 사람들은 수식의 단순화 등의 여러 이유로 인해 data의 선형성을(선형가정) 통해 모델을 만들곤 한다. 하지만 딥러닝은 tanh, relu 등의 non-linear activation 을 통해 non-linearity 를 효과적으로 학습 가능하다. 또한 사람이 직접 찾아야 하던 feature 을 모델이 데이터로부터 직접 학습하므로 사람이 찾지 못한 feature도 효과적으로 학습한다. (많은 연구가 이뤄지지 못한 분야에도 바로 적용이 가능하다.) 특히나 자연어, 음성 같이 sequence modeling 에서 강력한 성능을 보인다고 한다. 추천 시스템에서 next-time prediction(현재까지 소비한 아이템으로 다음..

주어진 vector space 에서 내가 원하는 query vector와 가장 유사한 vector 를 찾는 알고리즘 추천 모델 서빙 자체는 Nearest Neighbor Search 와 굉장히 유사하다. 모델 학습을 통해 생성된 유저 아이템 벡터를 사용하여 주어진 query vector와 가장 유사도 높은(인접한 이웃) 벡터를 찾아주는 것이 추천 시스템이다. 아주 정확한 Nearest Neighbor 를 찾기 위해서는 Brute Force 가 가장 간단하다. 사실 MF 에서 Brute Force 로 유사도를 비교하는 과정을 보며 그 과정자체가 굉장히 비효율적이라고 느꼈었는데, 이에 대한 문제를 해당 기법이 해결해주는지 한번 잘 참고해고자 한다. 벡터의 차원이 커질 수록 유사도 연산이 오래걸리고, 벡터의 ..

임베딩이란? 주어진 데이터를 낮은 차원의 벡터로 만들어서 표현하는 방법 Dense Representation은 Sparse Representation을 훨씬 작은 차원으로 효과적으로 표현할 수 있도록 한다. Item2Vec 을 이해하기 위하여 먼저 Word2Vec을 살펴보자. 예전에 Word2Vec 을 공부해보며 관련 내용을 정리한적 있다. https://blog.naver.com/ha_junv/222285855664 Word2Vec (word embedding) Word 임베딩에 관련해서는 웬만한 교수님 강의를 보는 것보다, 해당 글을 읽는 것이 더 직관적인 이해에 ... blog.naver.com https://ratsgo.github.io/from%20frequency%20to%20semantics..

이웃 기반 CF 에서 벗어나 Model 기반 CF 에 들어선다. 다루고자하는 내용은 다음과 같다. 추천시스템에서 가장 중요한 '모델' Matrix Factorization을 이해하기 위해 간단 로드맵을 거친다. Sparsitiy: 결국에 Neighboorhood CF 는 데이터가 적으면 유사도 계산이 부정확하다는 큰 한계가 있다. 또한 유저와 아이템 개수가 늘어나면 계산량이 늘어난다. Scalability: K-NN 으로 최소화 한다고 해도, 이전에 글에서 제기한 의문 같이 '유사도' 계산에서 bottle neck이 걸릴 수 있는 것이다. 다만 역설적으로 정확한 예측을 하기위해서는 데이터가 많아야한다. 모든 분야에서 그렇듯이, 단순 유사성에서 벗어나 내재된 패턴을 이용하면 보다 정확한 결과를 얻곤 한다...

https://www.youtube.com/watch?v=7dmV3p3Iy90 해당 내용은 공돌이의 수학정리노트를 정리한 내용 이 블로그는 내가 보고 기억하려고 적는것이고, 이 글보다는 위 영상을 보는 것이 이해에 훨씬 도움이 된다. https://angeloyeo.github.io/2019/07/17/eigen_vector.html 해당 사이트에서 vector에 곱해지는 matrix 값들을 변경시켜보며 감을 익혀볼 수 있다. ※ diagonal 값은 벡터의 길이를 조정한다. 이로인해 만약 diagonal 값 외에 모든 값이 0일 때 diagonal 값이 0 이 되면 차원이 축소된다. ※ 이 시연을 통해 벡터에 행렬 연산을 취하면 원래 벡터와 다른 벡터 결과 값을 얻는 다는 것을 확인했다. 그러나 어떤 ..

더 많은 유저들로부터 얻은 기호 정보를 활용하여 유저의 관심사를 자동 예측한다. 데이터가 많아질 수록 좋은 건 ML 모델들과 동일하다. 예시 2 같이 내 데이터만이 아니라 다른 사람들의 상호작용 데이터까지 활용하는 것이 Collaborative Filetering(hereafter, CF) 이다. 평점 뿐만 아니라 선호도, 클릭 확률이 될 수도 있다. 유저-아이템 행렬: (유저가 아이템에 기록한 선호도) - 모두 채워져 있지 않은, 즉 빈칸이 존재하는 부분을 채워나가야 한다. CF는 아이템(contents)이 가진 속성을 하나도 사용하지 않으면서도 추천을 한다. 두 유저가 선호하는 아이템이 유사한 경우, 둘 중 한 유저가 선호하거나 비 선호한 아이템은 다른 한 유저에게도 동일할 것이라 예측하고 적용한다...

TF-IDF 는 텍스트를 다루는 가장 기본적인 방법론이다. 이를 기반으로 텍스트 데이터를 활용하여 컨텐츠 기반 추천을 하곤 한다. 우리가 매일 마주치고 인터렉션하는 것이 언어이다보니, 언어 정보를 활용하여 추천을 할 수 있다는 건 당연하다. 유저가 선호하는 아이템의 특징을 추출하여 user profile 을 만든다. 이를 기반으로 새로운 추천을 해주는 것이 바로 컨텐츠 기반 추천이다. 컨텐츠 기반 추천의 장단점을 살펴보자. 새로운 아이템 혹은 인기도 낮은 아이템 추천이 가능하다는 특징은 "long tail phenomenom" 과 연관 또한 설명가능하다는 점은 사용자가 추천 시스템을 신뢰하는데 굉장히 중요한 요소 /rightarrow HCI 관점 아이템의 적합한 피쳐를 찾는 것이 어렵다. (이미지, ..

추천 시스템 공부 로드맵 Simple Aggregate (인기도 기반) Association Analysis, Content-based Recommendation (연관 분석) Collaborative Filtering (추천 시스템에서 가장 중요한 내용) Item2Vec Recommendation and ANN (word2Vec Screen2Vec 과 같은 개념) Deep Learning-based Recommendation 대부분의 SOTA 모델이 딥러닝 기반이기는 하지만, 기존 방법론과 큰 성능 차이도 없고 inference time 에서 시간 차가 발생해서 잘 실사용 되지는 않는다. Context-aware Recommendation Multi-Armed Bandit(MAB)- based Reco..