Какие метрики предложишь для оценки работы поиска товаров?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Метрики для оценки работы поиска товаров
Введение
Поиск товаров — критическая функция в e-commerce приложениях (Amazon, Aliexpress, Ozon и т.д.). Плохой поиск напрямую приводит к потере продаж. Я расскажу о системе метрик для оценки качества поиска и примерах из реальных проектов.
Иерархия метрик поиска
┌────────────────────────────────────────────────┐
│ USAGE METRICS — Используют ли люди поиск? │
├────────────────────────────────────────────────┤
│ RELEVANCE METRICS — Релевантны ли результаты? │
├────────────────────────────────────────────────┤
│ CONVERSION METRICS — Покупают ли найденное? │
├────────────────────────────────────────────────┤
│ QUALITY METRICS — Как быстро поиск работает? │
└────────────────────────────────────────────────┘
Слой 1: USAGE METRICS (Использование поиска)
1.1 Search Usage Rate (Процент пользователей, использующих поиск)
Определение: Сколько % пользователей хотя бы раз воспользовались поиском.
МЕТРИКА: Users with search / Total users * 100%
Пример:
100,000 пользователей
45,000 использовали поиск
Search Usage Rate = 45%
Нормы:
- > 50%: Отлично (люди доверяют поиску)
- 30-50%: Хорошо
- 10-30%: Низко (может быть, категории лучше работают)
- < 10%: Очень низко, нужно улучшать
Интерпретация:
- Если Usage Rate < 20%, люди предпочитают категории или recommendations
- Это может означать, что поиск не интуитивен или результаты плохие
1.2 Searches per Session (Количество поисков за сессию)
Определение: В среднем сколько раз за одну сессию пользователь ищет.
МЕТРИКА: Total searches / Total sessions
Пример:
100,000 сессий
150,000 всего поисковых запросов
Searches per Session = 1.5
Интерпретация:
- 1.0 = пользователь ищет один раз за сессию
- > 1.5 = пользователи ищут много раз (может быть не найти)
- < 0.5 = люди ищут редко (предпочитают категории)
1.3 Search Abandonment Rate (Процент заброшенных поисков)
Определение: Сколько % поисков заканчиваются без клика на результат.
Формула: (Searches without clicks) / (Total searches) * 100%
Пример:
1,000 поисков
700 с кликом на товар
300 без клика
Abandon Rate = 300 / 1000 = 30%
Нормы:
- < 20%: Отлично (результаты релевантны)
- 20-35%: Хорошо
- 35-50%: Плохо (результаты не подходят)
- > 50%: Очень плохо (поиск сломан)
Проблемы при high abandon rate:
- Результаты не релевантны запросу
- Категория товаров, которую пользователь ищет, отсутствует
- Интерфейс запутанный
Слой 2: RELEVANCE METRICS (Релевантность результатов)
2.1 Click-through Rate (CTR) — Процент кликов на результаты
Определение: На сколько % результатов пользователи нажимают.
МЕТРИКА: Clicks on results / Total results shown * 100%
Пример:
Поиск "iPhone 15"
Показано 30 результатов
Кликнуто на 6 результатов
CTR = 6 / 30 = 20%
Нормы:
- > 15%: Отлично (результаты привлекательны)
- 10-15%: Хорошо
- 5-10%: Плохо (результаты не привлекают)
- < 5%: Очень плохо
Сравнение поисков:
Поиск: "iPhone 15" CTR: 25% ✓ Хорошо
Поиск: "cheap phone" CTR: 8% ✗ Плохо
Поиск: "laptop for gaming" CTR: 12% ⚠️ Среднее
Вывод: Вторая категория товаров плохо представлена,
нужны улучшения в результатах для запроса "cheap phone"
2.2 Position Bias (Влияние позиции на клики)
Определение: На какие позиции в результатах наибольше кликов.
Поиск: "iPhone 15"
Позиция Результат Клики Процент
──────────────────────────────────────────────
1 iPhone 15 Pro Max 450 45% ← Позиция 1 получает большинство
2 iPhone 15 Pro 350 35%
3 iPhone 15 120 12%
4 iPhone 15 Plus 50 5%
5-10 Другие 30 3%
Часто мы видим, что позиция 1-3 получают 90%+ кликов
Это нормально, но нужно проверить:
- Релевантен ли результат #1?
- Не ли там парализованные/дешёвые товары?
Инструмент для анализа:
# Анализ распределения кликов по позициям
import pandas as pd
df = pd.read_csv('search_results.csv')
clicks_by_position = df.groupby('position')['clicks'].sum()
clicks_by_position_pct = clicks_by_position / clicks_by_position.sum() * 100
print("Клики по позициям:")
for pos, pct in clicks_by_position_pct.items():
print(f"Position {pos}: {pct:.1f}%")
if pct < 1:
break # Позиции дальше 1% можно игнорировать
2.3 Mean Reciprocal Rank (MRR) — Позиция первого релевантного результата
Определение: В среднем на какой позиции находится первый правильный результат.
Формула: MRR = средний(1 / позиция_первого_релевантного)
Пример:
Поиск 1: "iPhone" → релевантный результат на позиции 1
→ 1/1 = 1.0
Поиск 2: "iPhone" → релевантный результат на позиции 3
→ 1/3 = 0.33
Поиск 3: "iPhone" → релевантный результат на позиции 5
→ 1/5 = 0.2
MRR = (1.0 + 0.33 + 0.2) / 3 = 0.51
Нормы:
- MRR > 0.8: Отлично (результат на позициях 1-2)
- MRR 0.6-0.8: Хорошо (на позициях 1-3)
- MRR < 0.6: Плохо (релевантный результат далеко)
Интерпретация: Если MRR = 0.51, то в среднем релевантный результат на позиции ~2.
2.4 Normalized Discounted Cumulative Gain (NDCG@K)
Определение: Как хорошо ранжированы результаты топ-K результатов.
Теория сложная, но суть простая:
- NDCG@5 = оценка качества первых 5 результатов
- NDCG@10 = оценка качества первых 10 результатов
Шкала: 0-1
- > 0.8: Отлично
- 0.6-0.8: Хорошо
- 0.4-0.6: Плохо
- < 0.4: Очень плохо
Пример:
NDCG@5 = 0.85 ✓ (первые 5 результатов хорошо ранжированы)
NDCG@10 = 0.72 ✓ (но с 5 по 10 позицию качество падает)
2.5 Query Intent Coverage (Покрытие намерений пользователя)
Определение: Понимает ли поиск, что хочет пользователь.
Пример:
Пользователь: "дешёвый телефон"
✗ Плохо:
- Показывает только дорогие флагманы
- Не понимает слово "дешёвый"
✓ Хорошо:
- Показывает бюджетные телефоны
- Может даже указать фильтр "Цена: < 300$"
МЕТРИКА: % поисков, где поисковик правильно интерпретировал intent
Нормы: > 80%
Слой 3: CONVERSION METRICS (Конверсия)
3.1 Search to Buy Conversion Rate (Процент поисков, ведущих к покупке)
Определение: Сколько % поисков приводят к совершённой покупке.
МЕТРИКА: Purchases from search / Total searches * 100%
Пример:
10,000 поисков
400 покупок (прямо из поиска)
Search to Buy CVR = 4%
Нормы:
- > 3%: Отлично
- 2-3%: Хорошо
- 1-2%: Приемлемо
- < 1%: Плохо
Интерпретация: 4% — это отлично.
Это означает, что поиск помогает пользователям найти и купить.
3.2 Average Order Value from Search (Средняя стоимость заказа)
Определение: Какова средняя сумма заказов от пользователей, которые нашли товар через поиск.
Примеры:
Поиск "iPhone 15" → AOV = $800
Поиск "case for phone" → AOV = $20
Поиск "cheap phone" → AOV = $150
Интерпретация:
- Если AOV для "дешёвых" поисков низкий, это нормально
- Если AOV для "дорогих" поисков ниже, чем в категориях,
то поиск может улучшить качество результатов
3.3 Repeat Search Rate (Повторные поиски)
Определение: Сколько % пользователей ищут снова после первого поиска.
МЕТРИКА: Users with 2+ searches / Users with 1+ searches * 100%
Пример:
1000 пользователей выполнили поиск
300 выполнили второй поиск
Repeat Search Rate = 30%
Интерпретация:
- 30% — в норме, люди уточняют свой запрос
- > 50% — это может означать, что первые результаты
не подходили и люди переформулировали
- < 10% — люди находят сразу и не ищут дальше
Слой 4: QUALITY METRICS (Скорость и качество)
4.1 Search Latency (Время ответа поиска)
Определение: Сколько миллисекунд поиск ждёт, чтобы вернуть результаты.
МЕТРИКА: Time from query to results
Нормы (P95):
- < 100 ms: Отлично ✓ (пользователь не заметит задержку)
- 100-300 ms: Хорошо
- 300-500 ms: Приемлемо
- > 500 ms: Плохо ✗ (пользователь заметит лаг)
Пример:
Если пользователь печатает "i", ждёт результаты > 500ms,
он может думать, что приложение сломалось
Оптимизация:
- Кэширование популярных запросов
- Использование индексов в БД
- Асинхронные запросы
4.2 No Results Rate (Процент запросов без результатов)
Определение: Сколько % поисков возвращают 0 результатов.
МЕТРИКА: Searches with 0 results / Total searches * 100%
Пример:
1000 поисков
50 без результатов
No Results Rate = 5%
Нормы:
- < 2%: Отлично (каталог полный)
- 2-5%: Хорошо
- 5-10%: Приемлемо
- > 10%: Плохо (много нулевых результатов)
Если > 10%, нужно:
- Добавить товары в каталог
- Улучшить поиск (может быть, опечатки не обрабатываются)
- Добавить fuzzy matching ("iPhone" вместо "iphome")
4.3 Typo Correction Rate (Исправление опечаток)
Определение: Сколько % запросов с опечатками были исправлены.
Примеры:
Пользователь: "iphome" → Система: "Вы имеете в виду 'iPhone'?"
Пользователь: "samsng" → Система: "Вы имеете в виду 'Samsung'?"
МЕТРИКА: Corrected typos / Detected typos * 100%
Нормы: > 70% (большинство опечаток исправляются)
Интегральные метрики
5.1 Search Quality Score (Композитная оценка)
# Я использовал эту формулу:
Search_Quality = (
(1 - abandon_rate) * 0.25 + # 25% — используемость
(ctr / max_ctr) * 0.25 + # 25% — привлекательность
(ndcg_10 / 1.0) * 0.25 + # 25% — релевантность
(min(latency, 100) / 100) * 0.25 # 25% — скорость
)
# 0-1 scale
# > 0.8 = Отличный поиск
# 0.6-0.8 = Хороший поиск
# 0.4-0.6 = Приемлемый поиск
# < 0.4 = Плохой поиск
Реальный пример: Анализ поиска в e-commerce
Контекст: E-commerce приложение с поиском товаров
ДАШБОАРД КАЧЕСТВА ПОИСКА
═════════════════════════════════════════════════
📊 Overall Search Quality: 0.72 (Good)
🔍 USAGE METRICS:
├─ Search Usage Rate: 42% (Норма: > 50%) ⚠️
├─ Searches per Session: 1.2 (Норма: 1-2) ✓
└─ Abandon Rate: 22% (Норма: < 20%) ⚠️
💎 RELEVANCE METRICS:
├─ CTR: 18% (Норма: > 15%) ✓
├─ MRR: 0.78 (Норма: > 0.8) ✓
├─ NDCG@5: 0.82 (Норма: > 0.8) ✓
└─ Intent Coverage: 85% (Норма: > 80%) ✓
💰 CONVERSION METRICS:
├─ Search to Buy CVR: 3.2% (Норма: > 3%) ✓
├─ AOV from Search: $145 (vs $120 в категориях) ✓
└─ Repeat Search Rate: 35% (Норма: 20-40%) ✓
⚡ QUALITY METRICS:
├─ Search Latency: 120ms (Норма: < 100ms) ⚠️
├─ No Results Rate: 4.2% (Норма: < 5%) ✓
└─ Typo Correction: 72% (Норма: > 70%) ✓
🎯 PROBLEMS IDENTIFIED:
1. Search Usage Rate ниже (42% vs 50%)
→ Может быть, категории лучше видны
→ Нужно улучшить видимость поиска
2. Abandon Rate выше (22% vs 20%)
→ Результаты могут быть релевантнее
→ Или пользователи не находят то, что ищут
3. Search Latency выше (120ms vs 100ms)
→ Нужна оптимизация БД
→ Кэширование популярных запросов
📈 ACTION PLAN:
1. (P0) Оптимизировать Search Latency (120 → 80 ms)
Deadline: 1 неделя
2. (P1) Улучшить видимость поиска
(сделать кнопку поиска более заметной)
Deadline: 2 недели
3. (P2) Добавить умные рекомендации
("Вы может быть имели в виду...")
Deadline: 1 месяц
Результаты после улучшений:
До: После:
──────────────────── ──────────────────
Search Usage: 42% Search Usage: 55% ✓
Abandon Rate: 22% Abandon Rate: 16% ✓
Latency: 120ms Latency: 85ms ✓
Search Quality: 0.72 Search Quality: 0.85 ✓
Search CVR: 3.2% Search CVR: 4.1% ✓
Итоговый чеклист метрик поиска
- Usage: Используют ли люди поиск? (Usage Rate > 40%)
- Relevance: Подходят ли результаты? (CTR > 15%, MRR > 0.8)
- Conversion: Покупают ли найденное? (CVR > 2%)
- Quality: Быстро ли работает? (Latency < 100ms, No Results < 5%)
- Feedback: Какой feedback от пользователей? (Ratings, comments)
- Segmentation: Какие запросы работают лучше? (By category, price range)
- Benchmark: Как vs конкурентов? (Amazon, eBay, Aliexpress)
- Monitoring: Отслеживаю ли изменения? (Dashboard, alerts)
Главный принцип: Хороший поиск — это не просто быстрый поиск. Это поиск, который понимает намерение пользователя и помогает ему найти то, что он хочет купить.