이번 포스팅 은 메모 목적 으로 올립니다 . ebay 추천 시스템 팀 이 , 차량 추천 광고 를 방문자 에게 제공 하 는 추천 시스템 을 구축 한 과정 과 방법 을 설명 하 는 발표 자료 입니다 . https : / / www . youtube . com / watch ? v = qQKMDJI _ miU & list = LLypIXWIsUMIMvCa 6 zQfOZmQ & index = 12 & t = 2500 s ​ 블로그 포스트 https : / / ebaytech . berlin / deep - learning - for - recommender - systems - 48 c 786 a 20 e 1 a ? source = false --------- 0 Deep learning for recommender systemsHow we improve vehicle recommendations at mobile . deebaytech . berlin ​​ [ 47 th ebaytechtalk : Deep Learning for Recommender Systems ] ​ 중고차 추천 시스템 을 만드 는 과정 설명 영상 초반 에 는 넷플릭스 와 구글 앱 스토어 가 어떻게 추천 알고리즘 을 적용 했 는지 를 소개 . ​ paradox of tyranny of choice : 선택 이 너무 많 을 경우 사람 들 은 선택 을 주저 하 게 됨 . 24 종 의 보석 을 놓 는 것 보다 6 종 만 놓 은 경우 가 더욱 잘 팔 림 . 이 를 보통 information overload 라고 부름 . 그러나 Clay Shirky 는 이 를 filter failure 라고 부른다 . 정보 가 많 아서 가 아니 라 , 공급자 입장 에서 정보 를 걸러 내 는 데 실패 했 기 때문 이 라 보 는 것 . ​ CF : 어떤 상품 과 interact 했 는지 의 기록 을 가지 고 유저 간 의 유사 도로 matrix factorization . 코사인 유사 도와 같 은 메트 릭 으로 유저 간 의 유사 도 를 계산 하 고 , 이 를 활용 해 빈 관계 를 채워 주 는 것 . ​ 그러나 이 CF 방식 은 cold - start 문제 가 심각 함 . ​ 이 를 해결 하 고자 Contents Based Filtering 이 등장 함 . 특정 상품 을 좋아하 는 특정 유저 특성 이 있 다고 가정 함 . ( 연관 관계 가 있 다 ) 차량 특성 과 고객 특성 을 기반 으로 Matrix Factorization 실행 함 . ​ 그러나 , 이러 한 방식 은 선형 적 이 라는 한계 를 가짐 . 우리 는 다소 비 선형 적 인 세계 에 살 고 있 기 때문 에 , 이러 한 선형 적 인 방식 은 비 선형 적 인 관계 를 캐치 해 내 지 못하 는 경우 가 많 다 . ( fails to capture nonlinear underlyings ) ​ 이 를 해결 하 기 위해서 딥 러닝 이 등장 한다 . 그리고 이미 많 은 리딩 플레이어 들 이 이러 한 방법 을 도입 했 다 . ​​ 스포티파이 : CNN 으로 음악 의 특징 잡아내 추천 유 튭 : 필터 로 후보 군 뽑아낸 뒤 분류 문제 로 랭킹 구글 플레이 : 필터 로 후보 군 , wide and deep 네트워크 를 사용 해 일반 화 와 전문 화 를 동시 에 실행 ​​[ Approach : Data ] 특정 제품 을 좋 아 할지 그렇 지 않 을지 를 분류 하 는 모델 을 먼저 통과 ( 후보 군 선정 ) , 그 뒤 랭킹 실시 ​ Users & Items - 구독 한 유저 10 만 명 ​ Sub User Events - 조회 - 주차 - 연락 ​ Continuous 6 and Categorical 15 Features - 차량 에 대한 다양 한 정보 를 사용 ​ Time - based Train / Test - split - 주간 단위 의 유저 프로필 - 30 일 의 Lookback window - 최소 2 개 의 사건 - 결과 : 85 / 15 split - 즉 , 4 주간 의 데이터 로 학습 하 고 뒤따라오 는 1 주 에 테스트 함 . ​ Approach : Data Sparsity 데이터 의 sparsity 가 몹시 높 음 . 이 데이터 의 경우 0 . 0046 % 10 만 사용자 , 170 만 개 아이템 , 800 만 번 의 상호 작용 ( interaction ) ​ Approach : Preprocessing ( 1 / 2 ) ​ Technical Preprocessing - Data Fetch - Type conversions - User and Item ID rehashing - User Profile Overlap - Reduction to sample size : m = 100000 ​ Content - related Preprocessing - Negative Sampling : 동일 한 하위 차량 카테고리 에서 부정 적 인 사례 ( 고객 이 고르 지 않 은 경우 ) 를 가져옴 . 이 경우 , 몰라서 안 봤 을 경우 , 싫 어서 안 봤 을 경우 두 가지 모두 가능 함 . - 바이너리 값 으로 태 깅 , 클래스 비율 은 1 : 1 ​ Deterministic to Stochastic - 클릭 한 interaction 들 을 기반 으로 , 확률 적 인 값 을 뽑아냄 . 클릭 한 5 개 차 중 에 회색 이 2 개 라면 유저 가 흰색 을 뽑 을 확률 이 40 % 다 , 이런 식 . 가격 같 은 연속 변수 의 경우 평균 과 분산 사용 ​ 신경망 - 총 3 부분 으로 구성 됨 . Usernet , Itemnet , Ranknet - Ranknet 을 별도 로 학습 하 고 , - Usernet 과 Itemnet 이 비교 가능 하 도록 Embedding layer 를 학습 함 . 이 는 나중 에 후 보군 생 성 에 사용 하 기 위함 . - k 개 의 후보 군 을 생성 한 뒤 Ranknet 에 통과 시켜 결과 값 을 받 아 내 고 , 이 를 순서 를 매겨 유저 에게 서빙 함 ​ ​ 손 실함수 단순 카테고리 로스 에 정규 화 텀 같이 생긴 게 붙 음 . 이 텀 의 안 에 는 유저 와 아이템 representation 의 코사인 유사 도 를 유지 하 게끔 제한 하 도록 의도 된 식이 포함 됨 . 이 방식 을 통해 유저 와 아이템 은 comparability 를 잃 지 않 도록 최대한 보장 받 게 됨 . 이 는 후보 군 을 뽑 을 때 , knn 과 유사 한 방식 으로 뽑아낼 수 있 도록 사용 하 기 위함 ​ 낮 은 차원 의 공간 으로 시각화 ​ 150 만 의 차량 중 5 , 10 , 200 개 의 Nearest Neighbor 를 구한다 . 그 nn 은 이제 후보 군 이 되 고 , 이 중 에서 랭크 네트워크 로 랭크 를 매겨 준다 . 한 특정 유저 를 뽑 으면 , 그 유저 의 임 베 딩 과 가까운 위치 에 임 베 딩 된 상품 군 을 찾 을 수 있 다 . 이 유저 의 임 베 딩 벡터 는 70 - 80 차원 의 실수 벡터 형태 다 . 이 임 베 딩 벡터 를 사용 해서 approaximate NN 을 구한다 . ​ 이 NN 을 보 면 항상 정밀 한 NN 이 나오 는 것 이 아님 , 그 이유 는 NN 을 구하 는 속도 를 높이 기 위해 공간 내 를 slicing 하 는 기법 을 사용 하 기 때문 . 그렇지만 여전히 유관 한 상품 을 뱉 어 낼 수 는 있 음 . 이 는 속도 와 정밀도 의 trade - off 임 . 이 기법 은 annoy 라는 넷플릭스 의 알고리즘 으로 150 만 차량 을 100 - 200 개 로 추리 는 데 수 ms 밖 에 안 걸림 . 이 다음 에 다시 랭크 넷 에 이 knn 을 통과 시켜 rank 를 결정 해 줌 . 랭크 넷 은 각 아이템 & 유저 임 베 딩 벡터 를 통과 시킨 확률 값 ( 시그모이드 활성 함수 의 결과 값 ) 을 가지 고 순위 를 매기 는 방식 으로 작동