Сегодня или вчера я отмечаю год работы в Python. Ныне и, вероятно, впредь это мой основной инструмент работы. Каждый мой рабочий день начинается с открытия PyCharm и написании, коррективроки кода в Python.
Что я узнала за первый год?
1) Новые математические модели.
За прошедший год я изучила и реализовала вычисления следующих новых для меня моделей/алгоритмов: Empirical Mode Decomposition, Neural Network: Dense and LSTM; Boosts: XGBoost, LightGBM, CatBoost; Prophet. В чем-то я уже набила руку и разобралась весьма подробно, например, в Neural Network, где-то я сделала лишь первую пробную реализацию, например, EMD и Prophet. Бустинги мои пока в режиме полуфабрикатов.
2) Kaggle.
Открыла для себя проект kaggle.com. Зарегистрировалась я там 5 лет назад, но после ни разу не открыла этот ресурс до осени 2019. Осенью я нашла там соревнование по прогнозированию потребления энергии (электроэнергии, пара, холодной и горячей воды) для 1449 крупных зданий. Углубившись в решения победителей, я почерпнула колоссальный пласт знаний о современном подходе решения подобных задач. Kaggle позволяет постоянно учиться у лучших, делиться мыслями и результатами, и, что самое главное, делиться рабочими версиями алгоритмов.
3) Высокая потребность в разработчиках математических моделей на Python.
Прошедший год показал колоссальный рост спроса на меня как на прикладного математика при упоминании Python. Все хотят математику на Python. Без проблем и проволочек мне удалось организовать свой первый семинар по Python лишь после 10 месяцев работы в этом инструменте. Участники набрались буквально по щелчку пальцев. Сейчас планирую свой следующий, двухдневный семинар на тему «Прогнозирование энергопотребления и цены РСВ на Python». Отмечу, что 90% математиков, участвовавших в соревновании по прогнозированию потребления энергии зданий на Kaggle, работали в Python.
Чем Python отличается от MATLAB и R?
1) Уровень «программирования».
У меня за плечами 12 лет MATLAB, полгода в R, 1 год в Python и однажды я написала небольшое приложение на Java в Eclipse. Исходя из своего опыта я могу сказать следующее.
- MATLAB — чистый инструмент для исследований: получил результат, написал статью, отложил. Его главное преимущество, на мой взгляд, умение хранить значения всех переменных в одном файле mat. Например, вы считали-считали и хотите все сохранить, а завтра продолжить с этого же места. Он единственный это легко позволяет. У MATLAB сомнительное будущее: он закрытый и довольно дорогой.
- R — один шаг от исследования к разработке программного обеспечения. В R использует библиотеки, но при этом есть аналог матлабовского workspace. Переходить из MATLAB в R было очень просто, подход к написаю кода идентичный. Что мне не понравилось в R: убогий отладчик, надеюсь, сейчас дела с ним обстоят лучше.
- Python — еще один шаг от математики в сторону объектно-ориентированного программирования. С одной стороны, в Python есть все для работы с колоссальными объемами данных, громадный набор библиотек для реализации различных математических моделей. С другой — это высокоуровневый язык программирования, который позволяет бесшовно «упаковывать» математику в программное обеспечение. MATLAB «упаковывается» отвратительно, проектов по интеграции R я не успела сделать. Сейчас никому не нужны исследования ради статей, компаниям нужны математические алгоритмы, позволяющие повысить эффективность их работы. И простая интеграция в IT-инфраструктуру, на мой взгляд, громадное преимущество Python.
- Java — чистый кросс платформенный инструмент для разработки программного обеспечения различного назначения и уровня. Математику на Java сейчас, вероятно, мало реализуют.
2) Полная открытость и инвестиции Google, Microsoft, Facebook, Yandex, etc.
Нужно понимать, что библиотеки для Python пишут многие монстры IT-индустрии. Приведу несколько примеров.
- Prophet — разработка Facebook по анализу временных рядов, весьма навороченная.
- LightGBM — разработка Microsoft в области постоения деревьев решений.
- CatBoost — наша гордость, разработка Yandex в области постоения деревьев решений.
- TensorFlow — движок (backend) для обучения нейронных сетей, разработанный Google.
Сегодня анализ данных динамично развивается во многом благодаря колоссальной открытости алгоритмов и моделей. Монстры типа Microsoft и Google понимают, что лучший способ развиваться — взаимодействовать со всеми миром, делиться идеями, кодом, практикой решения задач. Все эти библиотеки и алгоритмы открыты и бесплатно доступны таким математикам как я.