세타원 | Theta One
​

Langflix 쇼츠탭 내 추천 시스템 개발

프로젝트 소개

Langflix 쇼츠탭 내 사용자 행동 데이터를 기반으로 개인화 추천 시스템을 설계하고, 이를 실서비스에 배포해 학습 행동과 리텐션으로의 전환을 높이는 것을 목표로 했습니다. 인기·최신 콘텐츠를 일괄 노출하던 기존 방식에서 벗어나, 유저의 학습 행동을 유발하여 장기적인 앱 사용 습관 형성에 기여하는 추천 시스템을 개발하였습니다.
​
이를 위해 추천의 성공 기준을 시청량이 아닌 학습 행동 발생으로 재정의하고, 콘텐츠 임베딩 및 클러스터링·난이도·토픽 선호도 등 개인화에 필요한 피처를 새롭게 구축했습니다. 코호트별 토픽 선호도 기반의 추천 시스템과 더불어, 신규 유저와 기존 유저에게 서로 다른 추천 전략을 적용하는 하이브리드 추천 시스템을 end-to-end로 구현하여 각각 A/B Test를 진행하였으며, 사용자의 취향에 맞는 정교한 추천 경험을 제공하고자 노력했습니다. 


세부 목표:
​
1. 학습 행동 중심의 추천 성공 기준 정의
    1-1. 현행 추천 로직 및 데이터 구조 진단
    1-2. 학습 행동과 리텐션의 관계 분석을 통한 유효 반응·유효 세션 재정의
    1-3. KPI·보조지표·가드레일 3층 지표 체계 설계 및 대시보드 구축
​
2. 개인화 추천을 위한 콘텐츠 피처 구축
    2-1. 콘텐츠 임베딩 및 클러스터링 파이프라인 구축
    2-2. 자막 기반 난이도 피처 생성 및 적재
    2-3. 영상 토픽 태깅 프롬프트 개선
    2-4. 재학습 기준 수립 및 모니터링 페이지를 통한 피처 운영 체계 마련
​
3. 유저 상태별 하이브리드 추천 시스템 구현
    3-1. 난이도·재노출·차단 채널을 반영한 모델 공통 후보 필터 설계
    3-2. 코호트별 토픽 선호도 기반 추천 시스템 (전체 유저)
    3-3. Content-Based Filtering 기반 추천 시스템 (Cold 유저)
    3-4. Two-Tower 모델 기반 추천 시스템 (Warm 유저)
    3-5. 모델 서빙 인프라 구축 및 실서비스 배포
​
4. 추천 성과 검증 체계 구축
    4-1. 인기 편향 로그 환경에 대응하는 오프라인 평가 지표 정의
    4-2. 담당자 간 동일 조건 비교를 위한 실험 규약 및 데이터 계약 수립
    4-3. A/B Test 설계 및 PostHog 실험 환경 구축
    4-4. 온라인 실험 실행 및 결과 분석
로드맵
프레젠테이션1.jpg
진행 프로세스
​​
주제 1. 학습 행동 중심의 추천 성공 기준 재정의

일반적인 추천 시스템과 달리, 언어 학습 앱이라는 도메인을 고려하여 추천의 목표를 설정해야 했습니다. 대다수의 영상 추천의 궁극적 목표는 시청 시간 극대화이지만, 랭플릭스 내 추천 시스템에서 시청 시간을 극대화하고자 한다면, 언어 학습과는 무관한 재미 중심의 영상만을 추천할 우려가 있었습니다. 이러한 문제 의식에서 출발하여 추천이 달성해야 하는 목표를 데이터 기반으로 정의하고 이를 측정할 지표 체계를 설계하였습니다.
​
주제 1-1. 기존 지표 체계의 한계 진단
  1. 기존 '유효 반응' 집계 건의 대다수가 시청 50% 달성만으로 처리되고 있으며, 실제 학습 행동(복습·북마크·섀도잉·리스닝)이 포함된 경우는 소수에 불과함을 확인

주제 1-2. 학습 행동과 리텐션의 관계 검증
  1. 시청량 구간을 통제한 상태에서 학습 행동 유무만을 비교하는 방식으로 실험 설계
  2. 같은 시청량에서도 학습 행동이 있는 경우 리텐션이 유의미하게 높음을 확인
    - 특정 구간에서만 나타나는 우연한 차이가 아님을 확인하기 위해, 시청량 전 구간(1-2회 · 3-5회 · 6-14회 · 15회 이상)에서 일관된 lift가 발생하는지 검증

주제 1-3. 지표 체계 설계
  1. 유효 반응의 정의를 학습 행동 중심으로 재구성
  2. 단일 지표만으로는 추천 변경의 부작용을 감지할 수 없다고 판단하여, KPI(유효 세션 반응률) · 보조지표(학습 행동별 발생률, D1·D3·D7 리텐션) · 가드레일(빠른 스킵률, 재노출률, fallback 진입률, Latency P95)의 3층 구조로 설계

주제 1-4. 세션 구조 및 반응 하락 원인 분해
  1. 세션 후반으로 갈 수록 반응이 떨어지는 현상에 대해, 원인이 콘텐츠 품질인지 노출 위치인지를 분리하는 분해 분석 설계
  2. 분해 결과 콘텐츠 효과가 위치 효과보다 우세함을 확인하여, 노출 피로도 관리보다 개인화 추천을 우선순위로 판단


주제 2. 개인화를 위한 콘텐츠 피처 및 임베딩 구축

추천에 사용할 수 있는 콘텐츠 임베딩·클러스터·난이도·토픽 피처를 개선하거나 새롭게 설계하고, 프로젝트 종료 이후에도 유지될 수 있는 운영 체계를 함께 마련하였습니다. 
 
주제 2-1. 콘텐츠 임베딩 및 클러스터링 방식 선정
  1. 콘텐츠 정보를 필드별로 전처리한 뒤 각각 임베딩하고, 실제 영상 내용을 가장 잘 반영하는 필드에 높은 가중치를 두어 가중 결합
  2. 클러스터 개수를 달리한 비교 실험을 통해 분리 성능이 가장 좋은 지점을 탐색
  3. 영상 하나가 여러 주제에 걸치는 경우가 많다는 점을 고려해, 단일 배정 방식과 다중 배정 방식의 성능을 비교한 뒤 방식 선정

주제 2-2. 클러스터 운영 체계 설계
  1. 신규 임베딩 누적량과 직전 재학습 이후 경과 기간을 함께 고려해, 명확한 정량 기준에 따라 재학습 시점을 결정하도록 기준 정의
  2. 클러스터별 평균 반응 점수, 미노출 영상 비율, 채널 집중도를 종합하여 '신규 콘텐츠 소싱이 필요한 클러스터'와 '노출 다양성 확보가 필요한 클러스터'를 파악

주제 2-3. 자막 기반 난이도 피처 설계
  1. 자막을 원천으로 다수의 후보 지표를 산출한 뒤, 어휘 난이도·평균 단어 길이·발화 속도 3개 축으로 정보 압축
  2. 3축을 활용하여 통합 난이도 점수를 산출하고 버킷으로 구간화하여, 온보딩 응답 레벨 대비 지나치게 쉽거나 어려운 영상이 노출되지 않도록 활용

주제 2-4. 영상 토픽 태깅 프롬프트 개선
  1. 개선 효과를 정량적으로 판단할 기준이 없다고 보아, 영상 500편을 직접 라벨링해 골드셋을 구축하고 학습셋과 홀드아웃으로 분리
  2. 태그별 누락·과잉 부착 원인 진단, 태그 정의 재작성 및 인풋 데이터 추가, 경계 규칙 정교화의 4단계로 단계별 개선
​
주제 2-5. 학습 부적합 콘텐츠 필터링 기준 수립
  1. 영상 자동 추출 도입 이후 발화가 없거나 비영어, 초장편인 쇼츠가 추천에 혼입되는 문제를 확인
  2. 학습 효용이 낮은 쇼츠를 판별하는 기준을 정의하고 후보 단계에서 차단하도록 설계

​
주제 3. 개인화 추천 시스템 설계 및 구현
 
유저 코호트별 후보 풀을 갖춘 뒤 토픽 선호도를 기반으로 개인화 추천을 제공하는 '코호트별 토픽 선호도 기반 추천 시스템'을 설계한다. 나아가 행동 데이터가 없는 신규 유저와 이력이 충분한 기존 유저에게 서로 다른 전략을 적용하는 하이브리드 추천 시스템을 설계하였습니다.
 
주제 3-1. 모델 공통 후보 필터 설계
  1. 모델마다 각자 후보 필터링을 구현할 경우 조건이 어긋나 동일한 유저에게 서로 다른 기준이 적용되고, 모델 간 성능 비교도 불가능해지는 문제를 사전에 확인
  2. 추천 가능 영상 목록을 필터링하는 공통 단계를 모델 앞단에 배치
​
주제 3-2. 코호트별 토픽 선호도 기반 추천 시스템 (전체 유저)
  1. 신규 유저는 행동 이력이 없지만 온보딩에서 선호 토픽을 응답한다는 점에 착안해, 수집만 되고 활용되지 않던 정보를 초기 선호 신호로 사용
  2. 유저를 가입 경과일과 구독 여부에 따라 N개 코호트로 나누고, 코호트별 토픽 선호 분포를 유저 응답의 평균으로 산출
  3. Retrieval) 코호트 토픽 분포와 유사한 클러스터부터 내림차순으로 조회해, 유효 반응이 일정 횟수 이상 쌓인 검증된 영상만 코호트별 후보 풀로 사전 생성 (주기적 갱신)
  4. Ranking) 후보 풀에 대해 ① 유저 Topic Affinity 유사도 ② 후보 풀 내 유효 반응 수 백분율 ③ 생성일 시간 감쇠 세 점수를 가중 결합. 개인화 근거가 쌓일수록 토픽 가중치를 높이도록 코호트별 가중치를 차등 적용
  5. 후보 풀 편중을 완화하기 위해 일부 코호트에 Exploration 정책 적용
 
주제 3-3. Content-Based Filtering 기반 추천 시스템 (Cold 유저)
  1. 신규 유저는 온보딩 토픽 분포마저 유저 간에 유사해 개인화 근거가 부족하므로, 반응이 쌓이기 전과 후를 다른 로직으로 처리하는 2단 구조를 채택
  2. Quality Rank (콘텐츠 품질 축): 최근 30일 내 일정 횟수 이상 노출된 영상을 후보로 두고, 유저 반응 점수로 영상별 반응률을 산출해 랭킹. 노출이 적은 영상의 반응률이 과대평가되지 않도록 노출 수 보정 평균 적용
  3. Content Rank (개인화 축): 유저가 반응한 영상들로 유저 프로필 벡터를 구성하고, 영상 프로필 벡터(텍스트 임베딩 + 클러스터 벡터)와의 코사인 유사도로 랭킹
  4. 누적 반응 N회 이하 유저는 Quality Rank만 사용하되 서로 다른 클러스터를 노출해 주제를 흩뿌리고(탐색), N회 초과 유저는 두 축을 결합해 개인화 추천 제공
  5. 전환 기준점은 오프라인 평가에서 성능이 가장 높았던 지점과, 대다수 유저가 초반 몇 편 내에 도달하는 지점을 함께 고려하여 선정

주제 3-4. Two-Tower 모델 기반 추천 시스템 (Warm 유저)
  1. 충분한 행동 이력이 있는 유저에 대해, 유저와 영상을 하나의 공통 임베딩 공간에 각각 임베딩한 뒤 내적으로 선호를 계산하는 구조 채택
  2. Item Tower: 영상의 텍스트 임베딩과 클러스터 정보를 결합한 피처를 입력받아 아이템 임베딩을 생성하고, 전체 영상에 대해 사전 계산해 저장
  3. User Tower: User-Item 단위 매트릭스가 지나치게 희소하다는 문제를 확인하고, ① 클러스터 단위로 집계한 뒤 Matrix Factorization으로 결측을 보완한 벡터와 ② 최근 시청 영상 텍스트 임베딩의 가중평균을 결합해 유저 피처 구성
  4. 학습: 유저가 높은 점수를 준 영상이 더 높은 유사도를 갖도록 학습하되, 시청 기록이 많은 유저가 loss를 지배하지 않도록 유저별 기여도를 정규화하고, negative sample이 우세해져 취향 벡터가 그 반대 방향만 가리키는 문제를 막기 위해 샘플 수 제한
  5. 서빙: 유사도 상위 후보와 인기도 상위 후보를 합집합으로 모은 뒤 MMR로 재정렬해 동일 채널·유사 콘텐츠의 독점을 완화하고, epsilon-greedy Exploration으로 노출 확률이 낮은 영상의 학습 데이터 확보

주제 3-5. 모델 서빙 인프라 설계
  1. 클라우드 기반 모델 배포 구조(AWS S3, DynamoDB)를 사용
  2. 아이템 10배 · 유저 10배 증가 시나리오까지 학습·서빙 레이턴시와 메모리 사용량을 측정하여 운영 한계 확인


주제 4. 평가 체계 구축 및 온라인 검증
​
기준 추천이 인기 콘텐츠에 편향되어 있어 통상적인 오프라인 평가가 기존 정책에 유리하게 작동하는 문제에 대응할 평가 체계를 설계하고, 실서비스 배포를 통해 성과를 검증하였습니다.
 
주제 4-1. 오프라인 평가의 구조적 편향 진단
  1. 기존 추천이 인기 콘텐츠 중심이었기 때문에 로그에 남은 반응도 인기 영상에 집중되어 있음을 확인
  2. 일반적인 추천 성과 지표인 Recall·NDCG를 그대로 사용할 경우, 인기 영상을 많이 추천하는 모델이 자동으로 높은 점수를 받고 개인화를 더 잘 수행할 가능성이 있는 모델이 로그에 없는 영상을 추천해 오히려 불리해지는 구조적 문제 파악
​
주제 4-2. 오프라인 평가 지표 설계
  1. 기존 노출 범위 내 재정렬 성능, 시청 기록이 없는 아이템의 추천 포함 정도와 그 적절성을 지표로 측정
  2. 숫자로는 정상이나 실제로는 부적절한 추천을 잡기 위해 대표 유저 정성 평가를 진행하고, 성능과 무관하게 서비스에 나갈 수 없는 경우를 거르기 위해 운영 가드레일 지표를 함께 확인
 
주제 4-3. A/B Test 설계 및 진행
  1. PostHog Feature Flags를 활용한 A/B Test 설계 및 진행

성과 및 인사이트

주제 1. 학습 행동 중심의 추천 성공 기준 재정의
  1. 추천 KPI를 시청량에서 '유효 세션 반응률'로 재정의하고, 이를 프로젝트 전 과정의 판단 기준으로 확립
  2. KPI·보조지표·가드레일 3층 지표 체계와 PostHog 대시보드를 구축하여 사측에 이관, 프로젝트 종료 이후에도 추천 품질을 지속 모니터링할 수 있는 체계 확보
  3. 신규 PostHog 이벤트를 정의하여 기존에 측정 불가능하던 쇼츠 탭 내 학습 전환 지표를 상시 관측 가능하도록 개선

주제 2. 개인화를 위한 콘텐츠 피처 및 임베딩 구축
  1. 신규 영상에 대한 클러스터 예측력을 개선해 해당 임베딩·클러스터 구조를 서비스에 반영
  2. 자막 기반 난이도 피처를 전체 영상에 적재하여, 기존에 존재하지 않던 콘텐츠 난이도 정보를 추천에 활용 가능한 형태로 확보
  3. 직접 구축한 골드셋을 기준으로 프롬프트를 개선하여 토픽 태깅 micro-F1과 완전일치율을 개선
  4. 클러스터 재학습 시점과 콘텐츠 소싱 우선순위를 판단할 수 있는 Admin 페이지 대시보드를 구축하여, 프로젝트 종료 이후 원활한 운영을 가능케 함
  5. 학습 부적합 쇼츠 필터링 로직을 배포하여 학습 효용이 낮은 콘텐츠의 추천 혼입 차단

주제 3. 개인화 추천 시스템 설계 및 구현
  1. Cold 유저용 CBF 모델과 Warm 유저용 Two-Tower 모델을 구현하고 서빙 파이프라인까지 연결하여, 유저 상태에 따라 전략이 분기되는 하이브리드 추천 구조 완성
  2. 수집만 되고 활용되지 않던 온보딩 선호 토픽 응답을 초기 선호 신호로 활성화하여, 행동 이력이 없는 신규 유저에게도 개인화 추천 제공
  3. 오프라인 재현 결과 CBF 추천 상위 목록의 대부분이 해당 유저의 선호 클러스터에 정렬됨을 확인하여 개인화 작동 검증
  4. 딥러닝 모델 서빙이 불가능하던 기존 환경에 클라우드 기반 배포 구조를 도입하여, 향후 ML/DL 모델을 추가 적용할 수 있는 기반 확보

주제 4. 평가 체계 구축 및 온라인 검증
  1. 데이터셋·입출력·평가 프로토콜 문서를 산출하여, 서로 다른 알고리즘을 개발한 담당자들의 결과를 동일 조건에서 비교 가능하도록 확보
  2. 실험 결과 코호트별 추천이 기존 추천 대비 학습 전환 지표에서 우위를 확인. 다만 관측 기간이 짧아 통계적 유의성 확보에는 한계가 있었으며, 이를 한계로 명시하고 후속 검증 설계를 함께 제안 

PM 소회

 세타원과 프로젝트를 진행하며 좋았던 점은 무엇인가요?

  1. 데이터를 추출하고 모델을 만들어 배포하기까지 end-to-end로 전부 경험할 수 있었다는 점이 가장 좋았습니다. 이번 프로젝트에서 NDA 및 데이터 비식별화 등 조치를 진행 후, 사측 GitHub 및 DB에 직접 접근하여 모든 작업물을 공유하는 방식으로 이루어졌습니다. PR을 올리고 코드 리뷰를 진행하는 협업 워크플로우, 개발 과정에 있어서의 여러 규칙들, 클라우드 환경을 사용한 모델 배포와 운영 등 학교 프로젝트에서는 다루기 어려운 규모의 경험을 할 수 있어 좋았습니다. 

 프로젝트 진행 중 겪었던 가장 큰 어려움은 무엇이었나요? 이를 어떻게 해결했나요?
  1. 온라인 테스트를 올리기 위해 모델 하이퍼파라미터를 확정해야 하는데, 모델을 평가할 오프라인 지표가 충분하지 않았다는 점이 가장 어려웠습니다. 기존 추천 시스템이 인기 / 최신 콘텐츠 중심으로 작동하고 있었기 때문에, 추천 시스템의 통상적인 성능 지표(Recall, NDCG 등)로 하이퍼파라미터를 튜닝할 경우 인기 영상만을 우선시하는 모델로 수렴하는 결과가 반복되었습니다. 

    이에, 통상적인 평가 지표에 얽매이지 않고 모델을 평가할 오프라인 지표를 직접 새로 정의함으로써 문제를 해결해 갈 수 있었습니다. 기존에 노출된 영상 안에서의 재정렬 성능을 측정하고, 인기도에 의존하지 않은 개인화 성능을 보기 위해 시청 기록이 없는 영상을 얼마나 잘 추천하는지 등을 측정하며 모델이 의도한 대로 작동하는지 파악하고, 하이퍼파라미터를 튜닝할 수 있었습니다. 

 이번 경험을 통해 어떤 인사이트나 역량을 얻으셨나요?

  1. 이번 경험을 통해, 모델을 바라보는 시야를 넓힐 수 있었습니다. 이전에는 어떤 구조가 성능이 가장 좋은지, 어떤 피처가 유효한지 등 설계의 관점에서만 모델을 생각하곤 했습니다. 이번 프로젝트에서는 직접 설계한 모델을 온라인 서빙 단계까지 직접 구현해야 했는데, 이 과정에서 '잘 만든 모델'도 중요하지만 '실제로 잘 작동하는 모델'도 중요하다는 것을 느꼈습니다. 모델의 구현과 운영 관점에서도 생각하는 능력을 기를 수 있어 뜻깊은 프로젝트였습니다. 

 향후 유사한 프로젝트를 진행할 학회원들에게 전하고 싶은 조언이 있나요?
  1. 첫째, 개발 성격이 강한 프로젝트일 수록 협업 규칙을 정해두어야 한다는 점입니다. 여러명이 각자 다른 모델을 만든 후 각 모델을 비교해야 한다면, 사용하는 데이터와 입출력 형식 등을 동일하게 맞추어 같은 방식으로 평가해야 합니다. AI를 활용하게 되면서, 설계한 모델에 대한 구현은 정말 쉬워졌지만 코드를 꼼꼼히 뜯어보면 각 모델의 입출력, 평가 방식 등이 제각각이라 비교하기 어려운 상황이 발생하곤 했습니다. 이러한 문제를 방지하기 위해, 프로젝트 초반에 협업 규칙을 명확히 마련해두어야 합니다.

    둘째, 평가 지표를 비판적으로 뜯어보아야 한다는 점입니다. 오프라인 평가는 기존 시스템에 존재하는 편향이 적용됩니다. 평가 지표를 고를 때에는 해당 지표가 일반적인 지표인지/무엇을 의미하는지도 중요하지만, 해당 지표가 갖는 맹점은 무엇인지/내재된 편향은 없는지 등을 비판적으로 검토하는 습관을 가져야 합니다. 
​