Если вам этот подход кажется слишком сложным из-за программирования, то Эндрю дал совет. Есть одна страшная программистская тайна – мы часто ищем решение какой-либо проблемы на stackoverflow.com. Это база или форум с вопросами и ответами, которые интересуют разработчиков. Когда мы находим ответ, то часто просто копируем код из форума в собственную программу. Эндрю советует не копировать, а перепечатать на клавиатуре ответ, а еще лучше – разобраться, почему он правильный. Он считает, что так разработчик или аналитик быстрее вырастут в профессиональном плане. Нет ничего страшного в копировании, многие художники занимались этим, прежде чем стать великими, считает он.
Второго октября 2006 года компания Netflix объявила конкурс «Netflix Prize»: кто улучшит текущие рекомендации Netflix на 10 % по метрике RMSE, получит один миллион долларов призовых. В сентябре 2009 года команда победителей «BellKor’s Pragmatic Chaos» получила свой миллион долларов. Соревнование длилось почти три года, задача была непростой.
Параллельно под эгидой научной конференции ACM SIGKDD такие соревнования проходили на платформе KDD Cup. Каждый год – это новое соревнование со своими организаторами, данными и правилами.
Все эти события привели к созданию платформы для коммерческих соревнований по машинному обучению – Kaggle.com. Компания была основана в 2010 году тремя людьми и поглощена Google в 2017 году. Сейчас Kaggle предоставляет много сервисов, но первый и самый главный – соревнования по машинному обучению с хорошими призовыми. Система полностью аналогична конкурсу от Netflix: какая-то компания публикует свои данные и правила участия, по которым будут выбираться победители. В день окончания баллы всех команд фиксируются. Победители получают призы, а компания – решение своей задачи. Часто решение и его описание потом публикуются на форуме.
В соревнованиях по машинному обучению прокачиваются навыки практического использования ML и создания фич на базе датасета. Там может поучаствовать каждый зарегистрировавшийся и получить очень хороший опыт. Все выглядит отлично, не правда ли? Но в них есть другая сторона – эти решения нельзя использовать в лоб, можно взять оттуда лишь некоторые идеи. Например, сам Netflix заявил [65], что алгоритм – ансамбль победителей состоял из 107 субалгоритмов, из которых только два дали самый значимый результат: факторизация матриц (SVD) и ограниченная машина Больцмана (RBM). В компании не без труда внедрили эти два алгоритма в рабочую систему. Сработало правило Парето: 20 % усилий (2 алгоритма) дали 80 % результата. Отмечу еще раз: они не стали внедрять всего монстра целиком, а взяли всего лишь два его элемента. Победивший алгоритм невозможно внедрить, он очень ресурсоемкий и сложный. Его поддержка стоила бы космических денег.
Это и есть основной недостаток решений, полученных на таких соревнованиях, – нет ограничений на вычисления и простоту результата. Такие решения часто будут нежизнеспособными конструктами. И тем не менее я все равно призываю вас участвовать в соревнованиях, это полезно. Подсматривайте решения на форумах и повторяйте их, учитесь делать фичи – это непросто, но в них заключено искусство ML. Не нужно занимать топовые места, достаточно, чтобы метрики ваших решений были процентов на пять хуже лидера. Даже если вы просто окажетесь выше медианы оценок – уже хорошо. Так вы научитесь многому.
Если бы у меня был выбор между двумя кандидатами: первый занимает призовые места на Kaggle и имеет за плечами десятки моделей, а второй реализовал всего две, но придумал задачу, решил, внедрил ее и доказал метриками, что она зарабатывает деньги для компании, – я бы предпочел второго. Даже если ему не придется повторять на новом месте все эти этапы, я могу сделать вывод, что он способен видеть картину целиком, а значит, сможет говорить на одном языке с людьми, которые будут внедрять продукт его труда, без проблем будет понимать ограничения и требования смежных департаментов.
Искусственный интеллект (AI) – очень модный термин, и я его ни разу не использовал в моей книге, хотя занимаюсь именно им. Словосочетание data mining я услышал еще в начале двухтысячных, когда работал в StatSoft. За этим маркетинговым термином кроется обычный анализ данных, сделанный из нескольких компонент. Мы с коллегами шутили, что весь этот data mining настоящие спецы делают на коленке. Через некоторое время возник новый термин – машинное обучение, он гораздо лучше зашел у специалистов, потому что действительно описывал новую область. Третий термин – большие данные, хайп вокруг которых сейчас уже поутих. Просто технология не оправдала слишком больших надежд, которые были на нее возложены. Я не помню, чтобы на конференциях ACM RecSys хоть раз слышал выражение big data, хотя часть игроков, которые там участвуют, обладают очень большими данными (Amazon, Google, Netflix). Компании используют их только для брендинга и продаж своих услуг, чтобы показать, что они в тренде. Иначе их обойдут конкуренты.
Читать дальше
Конец ознакомительного отрывка
Купить книгу