본문 바로가기
추천시스템

Matrix Factorization : 텐서플로우, 케라스로 구현

by 장찐 2022. 1. 23.

추천시스템 알고리즘에서 딥러닝 사용하기 

 

✅  MF를 딥러닝으로 표현하기 

 각 유저와 아이템을 원 핫 인코딩을 하고, 이것을 임베딩 레이어와 연결한다. 임베딩 레이어의 노드 수는 피쳐의 수 k와 동일하게 설정한다. 이를 dense layer로 연결하면 총 k * 사용자 수 만큼의 연결이 생긴다. 파란색 부분에서 Input Layer와 Embedding Layer 를 연결하는 가중치(화살표)는 P 매트릭스에서 해당 사용자의 row와 동일하다 

따라서 한 사용자에 대해서는 (위의 그림에서는 사용자2) input layer에서 하나의 값만 활성화되기 떄문에, 결국 임베딩 레이어의 값은 P 매트릭스의 한 row와 동일하다. 

 

 그리고 노란색 부분에서 내적을 수행한다(MF에서 P x Q 매트릭스의 곱하기를 수행하는 것과 동일하다). 이런식으로 신경망 형태로 변형하면 추가로 복잡한 레이어를 쌓을 수 있다. 이는 사용자와 아이템에 대한 특징 뿐만 아니라, 다른 특징들도 추가로 사용할 수 있음을 의미한다. 

 

 user bias와 item bias를 추가해야 한다. 어차피 사용자2에 대해서 bias를 계산할 때에는 해당 사용자에 해당하는 노드만 활성화되기 때문에 user bias node와 item bias node는 1개만 있어도 된다. 이를 input 레이어와 dense layer로 모두 연결하면 됨. 

 

 

✅ 추가 레이어 쌓기 

무비렌즈 데이터의 경우 딥러닝 구조로 나타내면 위와 같다. 유저와 아이템 임베딩 벡터를 concatenation을 해야 그 위에 다른 레이어들을 쌓을 수 있다. 

 

즉, 위처럼 concatenate를 통해서 layer 1으로 통합해야 한다.

 

 

 

✅ 일반 MF vs 딥러닝 방식의 MF 

 일반 MF는 선형 방식이지만 딥러닝 방식은 non-linear 패턴도 학습할 수 있다. 따라서 이론적으로는 딥러닝 방식이 더 정확하다. 하지만 실제 연구 결과들을 보면 딥러닝 기반 모델이 항상 뛰어나다고 하기는 어렵다. 특히 연속형 데이터를 이용한 경우 더 그렇다. 

 

 Binary로 구성된 데이터에서 복잡한 패턴을 찾는 경우에는 딥러닝이 더 적합할 수 있으나, rating 처럼 연속형으로 된 딱 하나의 변수를 예측하는 경우에는 성능이 좋지 못하다. 

 

 

 

 


실습 

 

 

 

 

 

 


Reference

 

 

댓글