В случае с базой данных кинофильмов можно попросить кого-нибудь просмотреть ее и выбрать ключевые характеристики – например, отобрать романтические комедии или научно-фантастические фильмы или, скажем, фильмы определенных режиссеров или с определенными актерами. Но такого рода организация далеко не идеальна. Она отнимает много времени. Она может отражать личные пристрастия тех, кто занимается классификацией, и в результате может научить компьютер тому, что мы и так уже знаем, а не выявить новые скрытые тенденции. Она может привести к тому, что алгоритм усвоит взгляд на данные, присущий определенным людям. Лучше всего учить алгоритм распознавать и выявлять закономерности на совершенно сырых, необработанных данных.
Именно этого пыталась добиться компания Netflix, объявившая в 2006 году соревнование под названием Netflix Prize. Она разработала свой собственный алгоритм для предложения пользователям фильмов, которые должны им понравиться, но считала, что состязание может стимулировать изобретение более совершенных алгоритмов. К этому моменту у Netflix имелось огромное количество данных, полученных от пользователей, которые смотрели фильмы и выставляли им оценки от 1 до 5. Компания решила опубликовать 100 480 507 оценок 17 770 фильмов, поставленных 480 189 анонимными пользователями. Задача усложнялась тем, что названия этих 17 770 фильмов не разглашались. Каждый фильм был обозначен только номером. Узнать, какой фильм скрывается под номером 2666 – «Бегущий по лезвию»[32]
или «Энни Холл»[33], – было невозможно. Доступ был открыт только к оценкам, которые поставили ему любые из 480 189 пользователей, если они вообще его оценивали.Помимо 100 млн опубликованных оценок у Netflix осталась еще 2 817 131 оценка, державшаяся в секрете. Задачей участников состязания было создать алгоритм, который сумел бы предсказать эту 2 817 131 рекомендацию на 10 % точнее, чем собственный алгоритм Netflix. Исходя из показанных ему данных, алгоритм должен был суметь угадать, как пользователь номер 234 654 оценил фильм номер 2666. Чтобы сделать соревнование более острым, первой команде, алгоритм которой опередит алгоритм Netflix на 10 %, был обещан приз 1 000 000 долларов. Хитрость заключалась в том, что победитель был обязан опубликовать свой алгоритм и предоставить Netflix неисключительное право на его использование для выработки рекомендаций фильмов клиентам компании.
По пути к миллионному призу присуждалось несколько призов за продвижение к цели. Каждый год команда, добившаяся на этот момент самых лучших результатов, получала приз 50 000 долларов при условии, что она обошла прошлогоднего лауреата этого приза по меньшей мере на 1 %. Чтобы получить этот приз, участники также должны были обнародовать код, который они использовали в работе своего алгоритма.
Можно подумать, что эта задача была почти невыполнимой, раз нельзя было узнать даже, какого жанра фильм скрывается под номером 2666 – фантастика или романтическая комедия. Однако необработанные данные могут рассказать о себе поразительно много. Представим каждого пользователя точкой в 17 770-мерном пространстве, в котором каждое измерение соответствует какому-то одному фильму, а положение точки в каждом из измерений соответствует оценке, которую пользователь поставил этому фильму. Конечно, если вы не математик, представление пользователей точками в пространстве с 17 770 измерениями кажется задачей несколько непомерной. Но на самом деле это просто расширение графического представления пользователей, которое вы использовали бы, если бы речь шла об оценках всего лишь трех фильмов. Предположим, фильм № 1 – это «Король Лев», фильм № 2 – «Сияние», а фильм № 3 – «Манхэттен». Если некий пользователь поставил этим фильмам, соответственно, одну звезду, четыре звезды и пять звезд, мы легко можем представить этого пользователя точкой с координатами (1,4,5) в трехмерной координатной сетке, в которой по оси
Хотя мы не можем изобразить 17 770-мерное пространство на графике, существуют математические методы, позволяющие представлять положение точек в таком пространстве. Точно так же фильм можно представить точкой в 480 189-мер-ном пространстве, в котором положение фильма в измерении, соответствующем каждому пользователю, соответствует оценке, которую этот пользователь поставил этому фильму. В первый момент трудно увидеть в таких точках, разбросанных по пространствам со столь огромным числом измерений, какие-либо закономерности. Нужно, чтобы алгоритм сообразил, существуют ли способы сжать эти пространства с точками до гораздо меньшего количества измерений, так, чтобы начали проявляться закономерности.