똘똘한 검색 알고리즘을 만들기 위한 평가 방법
(shopify.engineering)- Shopify가 상품검색에 이용했던 알고리즘을 전환하면서 정말 검색 결과가 좋아졌는지를 평가한 방법
ㅤ→ 기존 Vanilla PageRank : 검색에 기반한 PV로 순위 계산
ㅤ→ 신규 Query-specific PageRank : 검색어에 대한 클릭 히스토리 기반으로 가중치 계산
- 3단계로 평가
ㅤ1. 데이터 수집 : Kafka 이벤트와 Annotated 데이터 셋
ㅤ2. 오프라인 지표 평가 : 기존 검색 쿼리를 가지고 새 알고리즘을 평가
ㅤㅤ→ Mean Average Precision(MAP) : 쿼리가 반환하는 상위 N개의 결과에 관련없는 문서들이 포함될 경우 페널티를 부여
ㅤㅤ→ Normalized Discounted Cumulative Gain(NDCG) : MAP 계산을 위한 컷오프 점수를 계산, 좋은 점수(Great/Good) 아이템의 순서가 낮을경우 페널티를 부여
ㅤ3. 온라인 지표 평가 : 서치 로그를 이용해서 실제 검색이 어떻게 동작하는지 평가
ㅤㅤ→ 성공을 결정하는 지표 : 사용자가 얼마나 자주 검색을 하고, 원하는 결과를 찾기위해 얼나마 스크롤하고, 문제 해결을 위해 지원팀에 연락하는지 등
ㅤㅤㅤ→ Click-through rate (CTR): 검색결과 클릭율. 높아야 좋음
ㅤㅤㅤ→ Average rank: 클릭한 결과의 평균 순위. 낮아야 좋음
ㅤㅤㅤ→ Abandonment: 원하는 결과를 찾지 못한 포기율, 물론 봇/스팸 등의 영향도 있긴 하지만, 적당히 낮으면 좋음
ㅤㅤ→ Kafka 를 이용해서 수집
ㅤㅤ→ 기존 방식과 A/B 테스트 진행
- 결과적으로 새 검색 알고리즘이 기존 방식을 상회해서 대체를 진행
- 키포인트
ㅤ→ 고품질의 신뢰할수 있는 레이블된 데이터셋이 평가의 핵심
ㅤ→ 온라인 지표들은 사용자 행동에 대한 훌륭한 인사이트를 제공
ㅤ→ 오프라인 지표들은 새로운 알고리즘을 빠르게 반복 테스트하고 위험을 줄이는 걸 도와줌