If a C programmer asks "do you want to see something cool?", run away.
--John Van Enk

Friday, March 14, 2008

Netflix Prize. Just give it a shot...

Как это ни печально, но синоптики с погодой в Харькове сегодня не ошиблись. С самого утра дождь. То то я так долго просыпался. Однако этот пост будет не об этом.

Некоторое время назад блуждая по Википедии в поисках информации по data mining наткнулся на статью (эта же статья на английском) о конкурсе, организованном компанией Netflix - Netflix Prize. А тут недавно и в блогах пробежал пост об этом конкурсе. Решил более подробно ознакомиться. Netflix занимается арендой DVD через интернет. Ну и как многие e-commerce компании у них есть адвизори, т.е. список товаров (или услуг), которые они рекомендуют клиенту, на основании уже совершенных заказов. Для повышения вероятности того, что рекомендуемый фильм понравится клиенту, Netflix был разработан основанный на линейной регрессии алгоритм Cinematch, который дает СКО на тестовом множестве даннах 0,9525. В нетфликсе почухали репу и решили учредить конкурс - тот кто добьется 10% улучшения алгоритма получит 1 млн американских денег. Кроме того, также есть приз "за прогресс" - 50000 денег за улучшение на 1% по сравнению с предыдущим лауреатом конкурса.

Все участники (и вообще все желающие) могут скачать следующие 4 файла:

  • Тренировочные данные (training data set) содержат более 100 млн оценок, которые более 480 тыс. клиентов поставили 17.770 фильмам. Каждая оценка представляет собой квадруплет <номер клиента, номер фильма, дата оценки, оценка>. Номера клиентов и фильмов — целые числа, оценка — целое число от 1 до 5 (низшая оценка 1, высшая 5).Таким образом, в среднем каждый клиент поставил около 200 оценок, а каждый фильм получил около 5000. Однако количество оценок сильно варьирует: так, некоторые фильмы получили всего 3 оценки, а один клиент оценил более 17 тыс. фильмов.
  • Квалификационные данные (qualifying data set) содержат 2,8 млн триплетов <пользователь, фильм, дата оценки>. Оценки известны только жюри и будут опубликованы по окончании соревнования.
  • Названия и годы выхода в прокат всех 17.770 фильмов.
  • Фрагмент тренировочной базы данных, распределённый так же, как квалификационные данные. Этот фрагмент может использоваться, например, для оценки алгоритмов до посылки их на сайт.

Для того чтобы участник не мог использовать СКО для угадывания оценок, квалификационный набор данных разделён надвое. Участникам сообщаются результаты одной из половинок, называемой quiz set, но для получения приза (любого) учитываются результаты другой половинки — test set. Участники не знают, какая из записей к какой половинке относятся.

В общем, судя по LeaderBoard, прогресс есть и довольно приличный. Однако, как замечают некоторые разработчики, в последнее время СКО меняется буквально на сотые, тысячные доли. Трудновато, как оказалось, построить модель человека. Однако Хлопец в Гараже, являясь психологом, быстренько догнал и перегнал многих участников, и теперь входит в первую 10-ку команд. Он дескать взял да предположил, что решение может лежать на стыке математики и психологии...

Ну шо народ? Го Netflix?