Building Smarter Search Products: 3 Steps for Evaluating Search Algorithms — Data Science & Engineering (2021) (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 테스트 진행
- 결과적으로 새 검색 알고리즘이 기존 방식을 상회해서 대체를 진행
- 키포인트
ㅤ→ 고품질의 신뢰할수 있는 레이블된 데이터셋이 평가의 핵심
ㅤ→ 온라인 지표들은 사용자 행동에 대한 훌륭한 인사이트를 제공
ㅤ→ 오프라인 지표들은 새로운 알고리즘을 빠르게 반복 테스트하고 위험을 줄이는 걸 도와줌
Detect language Afrikaans Albanian Amharic Arabic Armenian Azerbaijani Basque Belarusian Bengali Bosnian Bulgarian Catalan Cebuano Chichewa Chinese (Simplified) Chinese (Traditional) Corsican Croatian Czech Danish Dutch English Esperanto Estonian Filipino Finnish French Frisian Galician Georgian German Greek Gujarati Haitian Creole Hausa Hawaiian Hebrew Hindi Hmong Hungarian Icelandic Igbo Indonesian Irish Italian Japanese Javanese Kannada Kazakh Khmer Korean Kurdish Kyrgyz Lao Latin Latvian Lithuanian Luxembourgish Macedonian Malagasy Malay Malayalam Maltese Maori Marathi Mongolian Myanmar (Burmese) Nepali Norwegian Pashto Persian Polish Portuguese Punjabi Romanian Russian Samoan Scots Gaelic Serbian Sesotho Shona Sindhi Sinhala Slovak Slovenian Somali Spanish Sundanese Swahili Swedish Tajik Tamil Telugu Thai Turkish Ukrainian Urdu Uzbek Vietnamese Welsh Xhosa Yiddish Yoruba Zulu
Afrikaans Albanian Amharic Arabic Armenian Azerbaijani Basque Belarusian Bengali Bosnian Bulgarian Catalan Cebuano Chichewa Chinese (Simplified) Chinese (Traditional) Corsican Croatian Czech Danish Dutch English Esperanto Estonian Filipino Finnish French Frisian Galician Georgian German Greek Gujarati Haitian Creole Hausa Hawaiian Hebrew Hindi Hmong Hungarian Icelandic Igbo Indonesian Irish Italian Japanese Javanese Kannada Kazakh Khmer Korean Kurdish Kyrgyz Lao Latin Latvian Lithuanian Luxembourgish Macedonian Malagasy Malay Malayalam Maltese Maori Marathi Mongolian Myanmar (Burmese) Nepali Norwegian Pashto Persian Polish Portuguese Punjabi Romanian Russian Samoan Scots Gaelic Serbian Sesotho Shona Sindhi Sinhala Slovak Slovenian Somali Spanish Sundanese Swahili Swedish Tajik Tamil Telugu Thai Turkish Ukrainian Urdu Uzbek Vietnamese Welsh Xhosa Yiddish Yoruba Zulu
Text-to-speech function is limited to 200 characters