Вот что может случиться, если плохо знаешь математику.





Привет! Это Петр Лукьянченко, автор и руководитель онлайн-курсов «Математика для Data Science» в OTUS. Мы на занятиях любим все иллюстрировать кейсами, поэтому здесь тоже каждую проблему, с которой сталкиваются новички, буду начинать с примера.

История №1. Однажды, когда я еще работал тимлидом в отделе аналитики в Ламоде, мне показали выкладку, сделанную стажером. Он взял данные о том, сколько времени пользователь двигает мышкой в онлайн-магазине, и количество товаров, которые тот покупает. И построил между ними зависимость, где корреляция достигала почти 0,95. Проще говоря, он «доказал», что чем больше человек двигает мышкой, тем больше покупает. Обрадовавшись такому открытию, ребята сразу предложили модифицировать сайт магазина, чтобы заставить пользователей проводить больше времени, перемещая мышку, в расчете тем самым повысить продажи.

Что произошло и кому верить — цифрам или здравому смыслу, который подсказывает, что где-то здесь явно закралась ошибка?


Ошибочные гипотезы


В нашей истории стажер неправильно подготовил данные, потому что не понимал, какой именно вид зависимости предположить. Это самая частая и опасная ошибка, которую допускают новички в анализе данных.

Мы на всех занятиях транслируем две вещи:

  1. Любой анализ должен начинаться с гипотезы
  2. Гипотеза может оказаться ошибочной. Ошибиться не страшно, важно вовремя это понять, скорректировать и продолжить анализ.

Умение формулировать гипотезы, которые впоследствии тестируются на данных, вызывает у новичков, стажеров и молодых специалистов в Data Science наибольшую трудность. Они, как правило, достаточно неплохо знают статистику, но не обладают опытом, поэтому часто слепо верят в то, что хорошее значение метрики сигнализирует, что их результат валиден. Из-за этого новичками часто движет стремление получить высокое значение корреляции. Но высокая корреляция сама по себе не гарант правильной зависимости!

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

Например, человек изучает ледники в Гренландии и решает посмотреть, как объем выпадающих осадков в Таиланде в сезон муссонов влияет на скорость таяния льдов. В заданный период обе эти переменные увеличиваются, то есть у них есть некоторые трендовые составляющие: в Таиланде растет объем осадков тогда же, когда наступает жаркий период и ледники тают быстрее. Если считать корреляцию «в лоб», она будет близка к единице, что означает, что между величинами есть прямая зависимость. Поэтому перед аналитикой необходимо сперва поработать с данными — очистить их от трендовой составляющей, т.е. детрендировать и получить посуточное значение прироста. И вот уже эти ?x переменные использовать для получения корреляции. Это очень простая вещь, которая тем не менее существенно повышает качество анализа.

История №2. В разгар весны в фармацевтической компании решают начать прогнозировать скорость продаж средства от аллергии. Аналитик берет какую-то модель, получает зависимость и по началу все здорово — предсказанные цифры подтверждаются фактическим спросом. Но начиная с сентября, цифры расходятся: модель обещает рост продаж, а по факту спрос прекратился вместе с завершением периода цветения и солнечной активности. Что могло пойти не так?

Часто новички выбирают модели с экспоненциальным ростом, которая в начале хоть и дает результаты близкие к действительности, в один момент становится непригодной. В данном случае в построении зависимости надо было учесть сезонную составляющую и либо скорректировать модель после завершения сезона, либо, что более правильно, сразу работать с колебательной функцией, такой как синусоида.

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


Загружать данные в модель, как в черную коробку


За несколько лет стремительного развития направлений Data Science человечество накопило внушительные библиотеки моделей и методов обработки данных. И это здорово — их вполне можно использовать для решения рядовых задач, к чему прибегают многие специалисты, не только начинающие, но и опытные. Опасность в том, чтобы взять готовую модель, просто засунуть в нее данные и получить на выходе какое-то предсказательное значение. Опытный специалист всегда использует инструменты математики, чтобы проверить и адаптировать метод под свою задачу.

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

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

История №3. Представьте, что у вас есть матрица данных 10 000 строк на 10 000 столбцов. На перемножение каждой пары элементов тратится ~30 миллисекунд, то есть ваш алгоритм будет обрабатывать данные больше часа! А если это будет матрица миллиард на миллиард? Или вам надо прогнать много таких алгоритмов?

«Сырые» матрицы


Нередко случается, что новички никак не обрабатывают и не подготавливают матрицы перед анализом. В результате процесс отнимает у них лишнее время и силы. Чтобы упростить и ускорить работу с матрицами, специалисты используют инструменты из линейной алгебры. Работает это так: имеющуюся матрицу данных проецируют в малоранговое подпространство и тем самым временно уменьшают ее размерность.

Научиться все это делать можно на наших онлайн-курсах «Математика для Data Science». Базовый уровень рассчитан на подготовку со школьной программы и делает акцент на математическую составляющую. На Продвинутый уровень стоит идти, если вы когда-то, пусть даже очень давно, изучали высшую математику или уже имеете опыт в Data Science. На Продвинутом уровне мы разбираем методы анализа данных для разных задач. В конце курса студенты делают проектную работу: пробуют вручную реализовать один из методов, чтобы понять, как он устроен, и видоизменить один из его участков. Определиться с уровнем вам поможет вступительный тест.

Теория и практические навыки, которые вы освоите на занятиях, в первую очередь необходимы Middle-специалистам, но также пригодятся и на старте профессии. Мы провели опрос среди наших партнеров-работодателей по направлению Data Science и узнали, что больше половины из них готовы взять на работу стажера со знаниями математики, даже если он не умеет работать с библиотеками Python.

Также если вы работаете или только присматриваетесь к Data Science, приглашаю подписаться на телеграм-канал Data Street, где я делюсь своим опытом и собираю полезные материалы из мира математики, анализа данных и машинного обучения. Буду рад вам здесь и на курсах OTUS!

Узнать подробнее о курсах, а также пройти вступительное тестирование для проверки своих знаний, можно перейдя по ссылкам ниже: