Каждой подсказке свое время

16 декабря 2011, 13:18

В августе мы писали о том, что у Яндекса появились «свежие» подсказки. Они помогают задавать запросы о событиях, которые произошли совсем недавно. Сегодня мы хотим рассказать еще об одной технологии, которая тоже связана с подсказками. Она позволяет ранжировать подсказки таким образом, чтобы они отвечали текущим интересам пользователей. Например, в обычные дни по запросам, начинающимся на «по», людей чаще всего интересует [погода], а в канун 8 марта — [подарки] и [поздравления]. Соответственно, перед 8 марта список подсказок должен выглядеть иначе, чем в другие дни.

 

Чтобы подсказки были актуальными, нужно угадать, о чем люди будут спрашивать завтра. По степени сложности эта задача сравнима с прогнозированием биржевых котировок или курсов валют и решается похожими методами. Ежедневно Яндекс обрабатывает сотни миллионов запросов и на основе сложных математических моделей просчитывает востребованность подсказок на следующий день. Чтобы построить прогноз для всех подсказок (а их десятки миллионов) мы используем вычислительные мощности нескольких сотен машин.

 

Прогноз строится с помощью регрессионного анализа — он позволяет вычислить будущее значение величины на основе данных за прошлый период. Для каждого запроса из базы подсказок Яндекс строит кривую, которая отражает, как менялась частота запроса за предшествующий период. Затем система подбирает функцию, которая максимально точно соответствует этой кривой. И по полученной формуле вычисляет, с какой частотой пользователи зададут этот же запрос в ближайшие дни. При этом текущая частота запроса и тренд за последние несколько дней учитываются с разными весами. Веса подбираются для каждой подсказки индивидуально — так, чтобы минимизировать ошибку прогноза.

 

Обработав таким образом все подсказки, мы понимаем, насколько каждая из них может быть востребована завтра. И на следующий день Яндекс ранжирует подсказки в соответствии с их прогнозируемой частотой употребления. О точности прогнозов можно судить, сравнив предположения с реальными запросами пользователей. Например, вот так выглядят кривые предсказания и реальности по запросам [программа передач] и [подарки]:

 

 

На графиках видно, что система довольно точно прогнозирует плавные изменения в динамике запросов и немного сглаживает резкие взлеты и падения. Чтобы достичь еще более высокой точности, мы продолжаем вести исследования и экспериментировать с разными методами прогнозирования.


Команда поиска,
стремимся к точности

3 комментария

Скажите, если не секрет, а как часто пересчитываются прогнозы? И какие характеристики запроса влияют на длительность этого периода (вряд ли же у вас он одинаков для всех запросов)?

Какие используете методологии или какие использовали? Анализ происходит из накопившихся данных за предыдущие периоды?

Почти на всех пиках видно, то система не успевает за реальностью, то есть спрос появляется раньше, чем это прогнозируется. На 1-2 дня, но всё же.