티몬 데이터랩이 만든 실시간 개인화 추천 서비스 ForYou의 구조를 로그 수집부터 학습, 예측, 서빙까지 순서대로 설명한 글이다. 고객 행동 로그를 모아 시퀀스 패턴을 학습한 뒤, 최근 행동을 보고 실시간으로 관심 있을 만한 상품을 추천한다. 모델은 RNN과 CNN을 결합한 형태이며 3주간 수집한 지표에서 해당 영역 진입 시 클릭률이 약 15% 수준이었다.
핵심 포인트- PC와 앱의 행동 정보가 로그 시스템으로 전송되고 파일로 저장된 뒤 파싱을 거쳐 하둡으로 넘어간다.
- 하둡에서는 표준화된 인터페이스로 접근할 수 있도록 가공해 Hive/HBase 테이블과 Kafka Queue 형식으로 저장한다.
- 학습 데이터셋은 행동 시퀀스를 샘플링해 이전 시퀀스가 들어오면 마지막 행동의 상품이 출력으로 나오도록 구성한다.
- 학습은 Hive/HBase에서 과거 데이터를 읽고, 예측은 속도가 유리한 HBase/Kafka에서 현재 시점 데이터를 읽는다.
- RNN은 시계열 데이터의 상태 인식에 강해 자연어와 음성에 많이 쓰이고, CNN은 부분 영역별 특징 구분에 강해 이미지에 주로 쓰인다는 점에서 둘을 결합했다.
상세 정리- 동작 3단계: 다수의 고객 행동 로그를 수집하고, 행동 시퀀스의 패턴을 학습한 뒤, 최근 행동을 보고 실시간 추천을 낸다.
- 로그의 구성: 상품과 관련된 클릭·검색·구매 행위 여부와 시간, 기타 속성 정보를 포함한다.
- 모델 컨셉의 정의 시점: 정제된 데이터셋을 만드는 데이터 파이프라인 단계에서 추천 모델의 컨셉이 정해진다. 사용자의 최근 행동으로 다음 행동할 상품을 예측하는 방식이다.
- 예측 시점의 구조 변화: 학습 때와 달리 입력과 출력의 쌍이 아니라 입력 시퀀스만 있는 구조로 바뀐다.
- 학습의 원리 설명: 모델은 데이터를 입력받아 원하는 출력을 얻기 위한 다차원 수식과 파라미터의 구성이며, 최초에는 파라미터를 알 수 없어 임의의 값으로 시작한다.
- 데이터셋이 입력 시퀀스에 대한 정답 출력 정보를 갖고 있기 때문에 출력이 얼마나 정확한지 또는 얼마나 잘못됐는지 계산할 수 있고, 그 값을 줄이는 방향으로 파라미터를 조금씩 조정하는 과정이 학습이다.
- 반복할수록 파라미터가 점차 최적의 값으로 수렴하며, 특정 수준에 수렴하면 학습이 완료됐다고 보고 모델 정보를 파일로 저장한다.
- ForYouNet의 구조: 입력 데이터를 벡터 형태로 변환하고 이를 RNN과 CNN 구조에 각각 투과시켜 얻은 feature를 합성해, 다음에 어떤 딜을 선택할지 종합적으로 예측한다.
- 서빙 흐름: 저장된 모델 파일을 읽어 완성된 파라미터를 수식에 적용하고, 실시간으로 들어오는 고객 행동 정보를 입력으로 넣어 예측값을 얻은 뒤 API 영역을 통해 고객 단말로 추천 목록을 전송한다.
- 성과 측정: 3주간 해당 영역에서 발생한 이벤트를 수집해 정리했으며, 영역 진입 시 클릭률이 약 15% 수준으로 준수하다고 평가한다.
왜 읽나커머스에서 세션 기반 실시간 추천을 구축하려는 엔지니어에게, 로그 수집부터 학습·예측 데이터 소스를 분리하는 파이프라인 구성과 시퀀스 예측 모델의 결합 방식을 훑어준다.