пятница, 23 декабря 2011 г.

Матрикснет: новая идеология поиска Яндекса

Когда в Рунете было 10 000 сайтов, простой поиск по совпадению ключевых слов и ранжирование отсеянных страниц по базовым показателям авторитетности (аналогичным классическому алгоритму Page Rank) вполне удовлетворял пользователей. Качество выдачи даже при таком относительно примитивном подходе было приемлемым. Но взрывной рост количества страниц (документов) и приемов манипуляции известными факторами ранжирования привели к выбиванию с рынка поиска игроков, не сумевших найти более продвинутое решение. Среди отечественных разработок достаточно вспомнить Aport и Rambler – они потеряли лояльность пользователей в рекордно короткие сроки из-за мусора и спама в SERP.

Однако Яндексу удалось преодолеть кризис: технологии компании пошли по пути стремительного увеличения количества обрабатываемых факторов, что позволило поддерживать качество выдачи. А 17 ноября 2009 года, с внедрением алгоритма «Снежинск», подход к ранжированию перевернулся с ног на голову. Раньше формула расчета релевантности документов была жесткой. Соотношение важности ее коэффициентов определялось изначально, на теоретических выкладках, а затем подстраивалось и «подкручивалось» – это и были апдейты алгоритма.

Теперь же система машинного обучения (MLR, machine-learned ranking) Матрикснет анализирует тысячи факторов (признаков страниц), но коэффициенты важности каждого из них – по сути, это и есть формула ранжирования – присваиваются на основе оценки страниц живыми людьми, асессорами. Теперь не формула диктует, что хорошо для пользователей, а пользователи решают, какая формула лучше работает – точнее, создают ее. При достаточно большой выборке документов и добросовестной работе асессоров выдача, как показывает практика прошедшего года, получается релевантной – даже в настоящее время, когда в индексе Яндекса находится около 11 миллиардов страниц, а количество разнообразных поисковых запросов достигает десятков миллионов. Внутренняя метрика качества поиска pfound выросла на 5%, и это, судя по всему, еще не предел (а по тому, что значение не достигает маркетингово льстивых 70, 200 или 35353225%, яндексоиды честно и объективно измеряют этот критерий).



Как работает машинное обучение?
  1. Берем объекты (в нашем случае – веб-страницы) и описываем их как можно большим количеством признаков. Поскольку мы не знаем, какие признаки действительно важны и определяют качество веб-страницы («здравый смысл» иногда расходится с истинным положением вещей), следует переложить задачу присваивания важности на компьютерный алгоритм.
  2. Алгоритму нужно «скормить» выборку документов, распределенных живыми людьми по степени соответствия некому поисковому запросу. А машина найдет общие признаки у наиболее релевантных и нерелевантных страниц, и на основе этих данных построит правила.
  3. Обученный алгоритм может очень быстро выполнять работу по анализу документов. 100 ассессоров анализируют 1000 документов (каждый просматривает эту одинаковую тысячу, чтобы нивелировать элемент «вкусовщины» и человеческой ошибки), а машина может в миллионы раз быстрее отранжировать десятки миллионов документов.
В архитектуре поисковых систем применяются наработки двух математических «школ» машинного обучения: SVM (support vector machines) и Boosting (метод TreeNet). Первая позволяет быстро проводить обсчет, но оперируя ограниченным сотнями количеством признаков, а вторая требует много машинного времени даже по нынешним меркам, но обсчет может вестись по тысячам критериев. Однако группе сотрудников Яндекса под руководством Павла Карповича и Андрея Гулина удалось оптимизировать и приспособить к задачам поискового ранжирования алгоритм TreeNet. Суть усовершенствований: прием в работу каждого примера, кластеризация, устойчивые правила, матричный принцип. Правила, вырабатываемые Матрикснетом, достаточно просты и поддаются распараллеливанию на вычислительные потоки, что позволяет, повторимся, быстро анализировать страницы по тысячам критериев – по очень сложной формуле, объем которой достигает 280 мегабайт. В 2006 году – 0,02 килобайта (это информация из официального пресс-релиза в блоге Яндекса, хотя непонятно, как формула может занимать 20 байт. Вероятно, в релизе содержится ошибка – вместо «килобайта» следует читать «мегабайта»).

Как происходит обработка поискового запроса

Мы не будем останавливаться на частностях типа учета геозависимости запроса, но сосредоточимся на базовой (и достаточно условно описанной) архитектуре поиска.

Яндекс использует пирамидальный поиск: сначала из всего гигантского множества документов выбирается ограниченное количество соответствующих базовым критериям – «кворум». На этом этапе применяется отсев по порогу содержания простейших ключевых слов (термов). Поскольку документов в индексе очень много, полученная выборка тоже может быть чрезмерно широкой для полной формулы Матрикснета – поэтому ее нужно сократить до размера, который эта формула может «переварить» в установленное для обработки одного запроса время. Для этого проводится анализ по статическим параметрам (так называемый «фаст ранк»): стандартный вес, траст и так далее. Лучшие результаты передаются на ранжирование полной формулой. Итак, сначала проводятся сравнительно простые вычисления с огромным количеством документов, а затем – сложные вычисления с небольшим количеством заведомо подходящих и уже неплохих.

Конечно, выдача по наиболее распространенным запросам кэшируется серверами среднего уровня, поэтому каждый раз обсчет не производится (хотя постоянное пополнение индекса новыми документами вызывает необходимость периодического перезапуска всей последовательности итераций).


Итак, ограниченное количество документов, которые нужно отранжировать, передается на вход Матрикснета. Алгоритм имеет структуру дерева решений, после прохождения которого получается матрица документов с присвоенными «числовыми значениями релевантности». Точнее, для каждого документа необходимо пройти по тысячам деревьев – и ноу-хау Яндекса заключается в балансировке (в математическом смысле), позволяющей очень заметно ускорить вычисления.

Как оптимизировать сайт для Матрикснет

Ответы на этот вопрос содержатся, по крайней мере, в четырнадцати предыдущих выпусках нашей рассылки, а также будут публиковаться в последующих. Мы рассматриваем критерии и их влияние, делимся опытом. Ответить на вопрос «как победить Матрикснет» в двух предложениях невозможно.

Но все же основные практические рекомендации таковы:
  1. делать качественные сайты с оригинальным контентом;
  2. ориентироваться на признаки текущих лидеров ТОП10 по интересующим запросам;
  3. в процессе внутренней оптимизации страниц брать на вооружение подсказки SeoPult, так как они актуализируются по экспериментальным данным.

Все очень просто: надо создать лучший сайт в своей тематике и своем регионе и люди из Яндекса к Вам потянутся! Кому это не под силу – создать лучший сайт по отдельным, средне и низкочастотным запросам. А кому и это сложно – продвигаться в Google и Rambler.


Выводы

Приведенное выше описание принципов ранжирования практически на 100% состоит из упрощений. Если есть глубокий интерес к теме, можно почитать описание Матрикснета авторства Андрея Гулина или статью «Жадные алгоритмы в задачах оптимизации качества ранжирования» (Гулин, Карпович). Обратите внимание, что в 2006 году формула ранжирования Яндекса принесла бы оптимизаторам много пользы, в настоящее же время практическую выгоду от исходных кодов Матрикснета получить будет сложно.

Итак, «плясать от теории» в оптимизации сайтов теперь невозможно. Необходимо опираться на данные экспериментов, искать сочетания критериев, которые работают для вывода в ТОП и делают страницу релевантной с точки зрения алгоритма.
 

Комментариев нет:

Отправить комментарий