# 똘똘한 검색 알고리즘을 만들기 위한 평가 방법

> Clean Markdown view of GeekNews topic #4022. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=4022](https://news.hada.io/topic?id=4022)
- GeekNews Markdown: [https://news.hada.io/topic/4022.md](https://news.hada.io/topic/4022.md)
- Type: news
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2021-04-06T10:59:27+09:00
- Updated: 2021-04-06T10:59:27+09:00
- Original source: [shopify.engineering](https://shopify.engineering/evaluating-search-algorithms)
- Points: 15
- Comments: 0

## Topic Body

- 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 테스트 진행

- 결과적으로 새 검색 알고리즘이 기존 방식을 상회해서 대체를 진행

- 키포인트

ㅤ→ 고품질의 신뢰할수 있는 레이블된 데이터셋이 평가의 핵심

ㅤ→ 온라인 지표들은 사용자 행동에 대한 훌륭한 인사이트를 제공

ㅤ→ 오프라인 지표들은 새로운 알고리즘을 빠르게 반복 테스트하고 위험을 줄이는 걸 도와줌

## Comments



_No public comments on this page._
