Найти тему
Павел Матюсов

Почему настоящих DATA SCIENTIST так мало..

Небольшое вступление о том, почему приходится писать на такие темы.

Когда мои знакомые или коллеги узнают, что я немного погружен в сферу машинного обучения , список вопросов по этой теме плюс\минус одинаковый. Его условно можно разделить на 2 блока, это вопросы от людей, которые не понимают ничего, верней, как показывает практика не понимают зачем и вопросы от людей знающих, погруженных на разные глубины данной области. Если второй блок вопросов, вполне себе обсуждаем и несет позитивные мысли, а иногда открывает для меня что-то новое, то блок первых вопросов , а вернее реакции на ответы заставляют крепко задуматься о положении дел. Я начну совсем издалека, располагайтесь поудобнее.

Начнем с небольшой исторической вводной, которая для некоторых будет открытием, почти все алгоритмы были придуманы очень давно или сравнительно давно, тут как, кому удобнее считать. Например регрессия, этот термин в статистике впервые был использован Френсисом Гальтоном (1886) в связи с исследованием вопросов наследования физических характеристик человека. В качестве одной из характеристик был взят рост человека; при этом было обнаружено, что в целом сыновья высоких отцов, что не удивительно, оказались более высокими, чем сыновья отцов с низким ростом. Более интересным было то, что разброс в росте сыновей был меньшим, чем разброс в росте отцов. Так проявлялась тенденция возвращения роста сыновей к среднему (regression to mediocrity), то есть «регресс».

Большинство конкурсов по машинному обучению, выигрываются различными алгоритмами бустинга, но все тот же бустинг основан на вопросе, заданном Кернсом и Вэлиантом (1988 году): «Может ли набор слабых обучающих алгоритмов создать сильный обучающий алгоритм?» Положительный ответ Роберта Шапире в статье 1990 на вопрос Кернса и Вэлианта имел большие последствия в обучении машин и статистике, что привело главным образом к созданию алгоритмов бустинга.

-2

Ну а про наши любимые нейросети можно вспомнить, что в 1986 — Дэвидом И. Румельхартом, Дж. Е. Хинтоном и Рональдом Дж. Вильямсом и независимо и одновременно С. И. Барцевым и В. А. Охониным переоткрыт и существенно развит метод обратного распространения ошибки. Начался взрыв интереса к обучаемым нейронным сетям.

Ну а мы сейчас пользуемся всем этим очень активно потому что:

1) По сравнению 1986 годом наши вычислительные мощности сильно выросли.

2) Наши данные теперь не умещаются и на подземной парковке, забитой серверами.

3) Все алгоритмы получили понятный и приятный инструмент для работы и применения.

Если с первыми двумя пунктами все понятно, просто мы стали сильнее , а данных стало большей, DATA LAKE революция, знаете ли. Давайте поговорим про третий пункт более подробно, потому что, как ни странно, это одна из причин того, о чем написано в названии статьи.

Вот например Наивный байесовский классификатор в 2 строки:

-3

А вот например бустинг, строчек чуть больше, но мы тут данные загружаем и результат метрики выводим:

-4

Общий смысл в том, что применение алгоритмов для обучения модели сегодня может занимать секунды. ( на сравнительно небольших наборах данных и я не берут в расчет задачи связанные с фото-видео-аудио данными). И эта особенность повлекла за собой следующее:

1) Появилось множество курсов, где вам предлагают стать DS за 3 месяца, а то и за месяц, а то и за 3 недели.

2) В следствии пункта 1 и большого хайпа на машинном обучении появилось много людей со знаниями базового уровня.

3) А это приводит к тому, что на продуктивных задачах и реальных проектах качество и скорость сильно страдают.

-5

Поэтому я никогда не устану повторять, что для работы в сфере машинного обучения, нужно не только знать как применить алгоритм. Но и уделять огромное внимания предпроцессингу, изучению данных, постановки задачи, контроль любых дополнительных задач и экспериментов. Задавать самому себе вопросы - а что это даст, а зачем это использовать, а что будет если. Это самое сложное и этому не обучат никакие курсы и никакой институт. Давайте, чтобы не быть голословным я приведу несколько примеров :

Предсказываем продажу помидоров. Есть данные по продажам, загрузили, обучили модель, получили ошибку, показываем заказчику.

Но, мы вообще задумывались, что в наших данных по продажам помидоров, в нашей истории, могли быть моменты, когда магазин был закрыт на ремонт на неделю? И поэтому наша модель не совсем верно обучена. А могло быть такое, что помидоры быстро раскупали, и пол дня их вообще не было. Наша модель обучена и на этом, а это неправильно. Нам нужно убрать из обучения ту неделю, где мы были на ремонте, и понять как идентифицировать тот самый Out of stock и затем восстановить его или убрать или возможно выделить в отдельный признак. А какие данные взять дополнительно? А откуда?

Безусловно, задачу можно решить и вот так :

крутой_алгоритм.fit(Данные для обучения). И это у вас может занять 1 час.

А можно провести анализ, выделить дополнительные факторы, восстановить OOS и это у вас займет больше 1 часа.

Осталось объяснить это заказчику :) .

Спасибо за прочтение, подписывайтесь.