.NET Fest: полная программа конференции на сайте. Присоединяйся к самому большому .NET ивенту
×Закрыть

С чего начать работу с ML и DL. Обзор лучших библиотек

В январе вышла моя статья про типы машинного обучения и способы их применения для повседневных задач. Спасибо всем за фидбэк и комментарии: особенно часто меня спрашивали о том, как все описанные методы и алгоритмы можно «пощупать» и воплотить. В этой статье я подскажу способы.

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

Язык программирования: Python или R?

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

Именно поэтому в последние пару лет Python набрал огромную популярность и стал lingua franca в сообществе машинного обучения. Практически любая современная ML или DL библиотека предоставляет Python API.

Поэтому сейчас задача выбора сильно упростилась: используйте Python и не ошибетесь.

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

Jupyter Notebook: работа с данными, кодом и графиками

Если в традиционном программировании большую часть времени вы проводите в текстовых редакторах или IDE-шках, то в Data Science большая часть кода пишется в Jupyter Notebook.

Это простой и мощный инструмент для анализа данных. Он позволяет писать код на Python, R и других языках, добавлять текстовые описания в Markdown, встраивать графики и диаграммы непосредственно в интерактивную веб-страницу.

Плюс ко всему, Google выпустил бесплатный сервис Google Colab, который предоставляет облачную версию Jupyter Notebook и дает возможность производить вычисления на CPU и GPU. Все нужные питоновские ML библиотеки уже установлены, так что можно начинать сразу там, если лень устанавливать все локально.

Scikit-learn: лучшая библиотека для классических ML алгоритмов

Scikit-learn — одна из самых популярных ML библиотек на сегодня. Она поддерживает большинство алгоритмов обучения, как с учителем, так и без: линейная и логистическая регрессия, метод опорных векторов (SVM), Naive Bayes классификатор, градиентный бустинг, кластеризация, KNN, k-средние и многие другие.

Кроме этого, Scikit-learn содержит множество полезных утилит для подготовки данных и анализа результатов. Эта библиотека в основном предназначена для классических алгоритмов машинного обучения, поэтому её функционал для нейронных сетей очень ограничен, а для задач глубокого обучения она не может быть использована вовсе.

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

Pandas: извлечение и подготовка данных

Анализ и подготовка данных зачастую занимает большую часть времени при решении ML задач. Данные могут быть получены в CSV, JSON, Excel или другом структурированном (или не очень) формате, и вам нужно обработать их для того, чтобы использовать в ML моделях.

Для этих целей используется библиотека Pandas. Это мощный инструмент, который позволяет быстро анализировать, модифицировать и подготавливать данные для дальнейшего использования в других ML и DL библиотеках, таких как Scikit-learn, TensorFlow или PyTorch.

В Pandas можно загружать данные из различных источников: SQL баз, CSV, Excel, JSON файлов и других менее популярных форматов.

Когда данные загружены в память, с ними можно выполнять множество различных операций для анализа, трансформации, заполнения отсутствующих значений и очистки набора данных. Pandas позволяет выполнять множество SQL-подобных операций над наборами данных: объединение, группировка, агрегирование и т. п. Также она предоставляет встроенный набор популярных статистических функций для базового анализа.

Jupyter Notebook также поддерживает Pandas и реализует красивую визуализацию его структур данных.

Сайт Pandas содержит очень подробную документацию. Но начать можно с 10-минутного туториала, который показывает все основные фишки и возможности библиотеки.

Библиотека NumPy: многомерные массивы и линейная алгебра

Основной функционал NumPy заключается в поддержке многомерных массивов данных и быстрых алгоритмов линейной алгебры. Именно поэтому NumPy — ключевой компонент Scikit-learn, SciPy и Pandas.

Обычно NumPy используют как вспомогательную библиотеку для выполнения различных математических операций со структурами данных Pandas, поэтому стоит изучить её базовые возможности.

Для этого отлично подойдет вводный туториал по Numpy, а также основы NumPy.

Matplotlib и Seaborn: построение графиков и визуализация данных

Matplotlib — это стандартный инструмент в наборе дата-инженера. Он позволяет создавать разнообразные графики и диаграммы для визуализации полученных результатов.

Графики, созданные в Matplotlib, легко интегрируются в Jupyter Notebook. Это дает возможность визуализировать данные и результаты, полученные при обработке моделей.

Для этой библиотеки создано множество дополнительных пакетов. Один из наиболее популярных — это Seaborn. Его основная фишка — готовый набор самых часто используемых статистических диаграмм и графиков.

Традиционно, обе библиотеки имеют раздел с туториалами на их сайтах, но более эффективным подходом будет зарегистрироваться на сайте Kaggle и посмотреть в разделе «Kernels» готовые примеры использования, например, Comprehensive Data Exploration with Python.

Tensorflow и Keras: библиотеки глубокого обучения

Любая библиотека глубокого обучения содержит три ключевых компонента: многомерные массивы (они же тензоры), операторы линейной алгебры и вычисление производных.

В Tensorflow, библиотеке глубокого обучения от Google, отлично реализованы все три компонента. Наряду с CPU, она поддерживает вычисления на GPU и TPU (тензорных процессорах Google).

В настоящее время это самая популярная библиотека глубокого обучения, вследствие чего по ней создано множество туториалов и онлайн-курсов. Но зрелость имеет и обратную сторону — весьма корявый API и более высокий порог входа, по сравнению с той же PyTorch.

Keras — это надстройка над Tensorflow, которая решает множество юзабилити-проблем последней. Ее главная фишка — это возможность строить архитектуру нейронной сети с использованием красивого Python DSL. Для Keras также написано множество обучающих материалов, поэтому разобраться с ней несложно.

PyTorch: альтернативная библиотека глубокого обучения

Пожалуй, PyTorch — это вторая по популярности DL библиотека после Tensorflow, которая создана в Facebook. Ее сильная сторона в том, что она была разработана для Python, и поэтому использует его стандартные идиомы. По сравнению с Tensorflow, здесь порог входа намного ниже, а любую нейронную сеть можно построить с использованием стандартных ООП классов и объектов.

Также ее легче отлаживать, потому что код исполняется как обычный Python код — нет этапа компиляции, как в TensorFlow. Поэтому можно пользоваться даже питоновским отладчиком.

Если сравнивать с Keras, PyTorch — более многословный, но менее магический.

У PyTorch тоже есть своя надстройка — это библиотека fastai. Она позволяет решить большинство стандартных DL задач в пару строчек кода. Но что делает fastai действительно особенной — это их невероятный онлайн-курс Practical Deep Learning for Coders.

На что обратить внимание

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

Чтобы сделать процесс обучения более гладким, есть смысл начать эксперименты с классических задач ML и сфокусироваться на использовании Scikit-learn и Pandas. И после этого уже двигаться в сторону глубокого обучения.

Если вы задаетесь вопросом, какую DL библиотеку лучше выбрать: TensorFlow/Keras или PyTorch, то лучшим ответом будет найти онлайн-курс, который вам нравится, и курс сделает выбор за вас.

После ознакомления с основными инструментами и хотя бы базового понимания, что они позволяют делать, следующий важный шаг — выбор обучающих материалов. Курсов по ML и DL существует огромное множество и времени пройти все попросту не хватит. Поэтому в следующей статье мы обсудим лучшие, на мой взгляд, варианты по этим темам, а также дальнейшие шаги после их прохождения.

LinkedIn

91 комментарий

Подписаться на комментарииОтписаться от комментариев Комментарии могут оставлять только пользователи с подтвержденными аккаунтами.
То, что ML и AI тупо в статье сведены к паре классических методов и некоторым типам нейронок — уже отметили другие комментаторы.

Vasily Nekrasov, cогласен! Но учитывая тему статьи «С чего начать работу с ML и DL. Обзор лучших библиотек» думаю это приемлимо.

Вот что стоит добавить в этой статье, так это обозначить важность глубокого понимания ML/DS/AI, а не просто дать новичкам ориентир на инструменты. (Кстати для заголовка — это вполне ОК).

Один из таких глубоких курсов для новичков — www.coursera.org/learn/machine-learning
Нейронки там затронуты лишь немного, в конце курса. Оcновной язык там MatLab(Octave), а не Python). Но зато пройдя этапы курса, глубоко понимаешь, откуда взялись нейронки и как их «готовить». Что не для всего нейронка самое лучшее решение. И главное, как понимать, что алгоритм обучается, тому что хотим мы.

Автору отдельное спасибо за Google Colab. Теперь не надо будет локально свой Jupyter Notebook поднимать! :)

Вот что стоит добавить в этой статье, так это обозначить важность глубокого понимания ML/DS/AI,

Тут проблема несколько сложнее — глубокое понимание глубокого обучения (каламбур) важно для того, чтоб делать адекватные модели. Весьма очевидно, что вдолгосрок от этого выиграли бы все.
Но! Вкраткосрок в этом не заинтересован никто — вайтишники хотят побыстрее денег, а работодатели не хотят оплачивать исследовательскую часть работы (зачем, если можно просто взять keras и хуяк-хуяк набросать модель в 10 строчек).
А в результате после эйфории-хайпа наступит очередное разочарование-похмелье. И возможно, уже скоро.

Один из таких глубоких курсов для новичков — www.coursera.org/learn/machine-learning

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

Кажется, у тебя ошибка — вместо «вкраткосрок» нужно «вдолгосрок» (?)

Ошибки нет, но да — есть неточность: я не отметил явно, что в бизнесе вдолгосрок мало кто думает, особенно если речь идет о чем-то хайповом.

Вбизнесе в долгосрок вообще не работает и работать не может. И тут на помощь приходит государства со своими большими и толстыми грантами.

Про Украину даже спрашивать не буду, а ваш Батько дает на науку больших и толстых? Или дает, догоняет и еще раз дает?

У него нет денег, посему и не дает. Я про американское и разные Дарпы с насами и пентагонами там.

Даже погоду, если нужно на 2 недели мне я на сайте NOAA смотрю.

вайтишники хотят побыстрее денег, а работодатели не хотят оплачивать исследовательскую часть работы (зачем, если можно просто взять keras и хуяк-хуяк набросать модель в 10 строчек)

Ну, Америка нам поможет. Они там продолжают серьезно к этому подходить.

Ха-ха, я тебе как-нибудь в личной беседе расскажу об уровне одной дата-сцаентистки из Америки. Понятно, что единичный случай — не статистика, но коли она не киздит, что работала на Эппл и WD ... то это объясняет, почему амазон на следующий день после покупки таблетта предложил мне купить такой же... ну куле, на всех Денисенок не напасешься.

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

Плевать мне на разных баб. Я про тех, чьими моделями мы тут пользуемся

Ну полегче, дядя Витя, полегче :)
Забыл, что именно баба была первым программистом?
Да и Ингрид Добеши, чьими вельветами я активно пользуюсь — тоже не мужик.

Да и на мужиков из офисного планктона мне плевать. И на их пол мне плевать.
Сейчас модно называться датасентистами — вот и называются. Через 5 лет станет модно что-то другое, опять переназовутся.

Через 5 лет станет модно что-то другое, опять переназовутся

Это да! А как думаешь, что именно модно станет?

Без понятия. Знал бы прикуп... сам понимаешь.

Могу только сказать, что нейронки и вообще обработка видео уже уперлась в железо. Дальше их усложнять опять становится бессмысленно до следующего скачка в производительности железа. Сейчас начнется в ближайшие 5-10 лет вылизывание их и написание мат теории для них.
Раньше они не развивались по простой причине — не было железа, которое их потянет.
Параллельно начнут возвращаться к другим методам ML, понятно с новыми знаниями.
Ну и 70% нонешних датасаентистов «от сохи» отсеется и перейдет в другие области.

Странно, что обошли вниманием библиотеку ML.NET, которая сейчас очень активно развивается.

Вероятно, потому что пока API — версии 0.10 — выглядит весьма бедно
docs.microsoft.com/...​otnet/api/?view=ml-dotnet
Вот когда (если) активно разовьётся, тогда и будет целесообразно уделить ей внимание.

Да, ML.NET развиваеться. Впервые о нем я услышал в июне 2018. Но скорее это инструмент для .NET разработчиков, чтобы не переходить на другие языки и прикручивать ML в существующий .NET софт, нежели лидер в ML.
Пока еще ML.NET не догнал все разнообразие инструментов, которое существует для Python.

Отличная статья, большое спасибо автору!
В свое время, приходилось искать этот путь методом проб и ошибок:
1) сразу выбрал не тот язык программирования, с которым сложно было писать что-то практичное
2) пошел в сферы и инструменты, от которой в итоге не было пользы
3) поздно узнал про Jupyter Notebook
Автор предлагает отличную дорожную карту, рекомендую ее к использованию

Работу с ML и DL следовало БЫ начать с понимания того, как эти методы работают и что они (НЕ)могут.
Но это нерыночно — ибо мешает и манагерам, ведущимся на хайп, и вайти-в-вайтишникам, эмэльщикам, не желающим тратить несколько лет на понимание фундамента.
В результате говномодели дадут говнорезультаты и опять наступит зима ИИ, как уже бывало не раз. Когда оно будет, сказать сложно, но с учетом того, что МЛ хайп длится уже несколько лет, простейшая статистика говорит, что ему недолго осталось.

1) ИИ нет и врядли в ближайшее время будет. Умножение матриц это не ИИ.
2) Заката МЛ не будет, так как это следующий шаг в разработке софта. Проще говоря автоматизация.
3) МЛ это и есть статистика) А посему утверждение что статистика говорит что статистика умрет довольно странно)

1) Не вдаваясь в филосовские споры о том, что такое «И» вообще и «ИИ» в частности, можно, тем не менее заметить следующее:
— поскольку большинство «специалистов» по МЛ — еще те грамотеи, то амазон, после покупки на нем таблета, на следующий день присылает мне предложение купить такой же(!) таблет. А в ПэйПэле борьба с fraud сводится к тупому подбиранию «оптимального» кол-ва слоев в нейронке. При этом никакого бенчмаркинга с простейшими моделями типа логарифмической регрессии не проводится.
Но есть и другие примеры — та же эвристика того же каспера умела задолго до ИИ хайпа обнаруживать новые, еще неизвестные вирусы.

2) Или другой вариант — наймут кучу вайти-вайтишников — результат будет примерно такой же как писать софт «автоматизатором», а обойтись может и дешевле.

3) Вот интересно проверить — разобрала бы тренированная сетка, что подлежащее в моем предложении, это «МЛ хайп» (а не «МЛ»), к которому и относится сказуемое «умрет». Ну а история зим ИИ — известна. ru.wikipedia.org/...​искусственного_интеллекта
Известно и сколько, в среднем, длится (любой) хайп.

Тут еще такой момент, что несколько новых решений в нейронках позволили их применить наконец-то и спровоцировали хайп. Еще несколько лет и хайп пойдет на убыль.
Например, у тех же сверточные NN есть врожденный недостаток, который после хайпа их начал уже снижать к ним интерес. Ты сам приводил ссылку на новую идею с капсульными сетями, но пока это больше теоретическое еще, что выйдет дальше пока неизвестно.
А вообще нейронкам уже дохренища лет и только последние 10 от них наконец-то смогли получить что-то положительное.
И нейронки — это маленькая и узкая область всего ML. Их хайп сейчас немного притормозил разработки других подходов. Хайп пройдет скоро и вернутся к различным другим подходам снова.

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

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

Ну, не все так просто, архитектуры нейронок-то разные, разные и задачи. Но меня да, напрягает, что почти никого и не иппет то, КАК и ПОЧЕМУ эти сетки работают. Поначалу это было оправдано — и сам матан сначала двигался вперед невзирая на противоречия, но развитие бы остановилось, если бы Коши не навел порядок в теории.

Вот в этой статье Mallat попытался объяснить работу сверточных сетей через те же вейвелеты. Общая идея мне понятна, функционально-аналитические нюансы — более-менее, в алгебраических соображениях начинаю плавать.
www.di.ens.fr/...​ers/RSTA2015Published.pdf

Спасибо за статью, обязательно почитаю (нет уверенности, что все пойму).

Пожалуйста. Аналитическую часть с вельветами я понял так:
1. И вельветы, и фильтры сверточной сети умеют эффективно понижать размерность данных, отбрасывая незначительные коэффициенты.
2. и вельветы, и фильтры — суть nested (каскадны), поэтому можно попытаться свести одно к другому.
Фактически речь идет о проекции в пространство меньшей размерности, причем сжимающими операторами.

А вот там где алгебраические аргументы в ход идут — вот там я уже плаваю. Хелемский, написавший, пожалуй, первый радикально обновленный учебник по функциональному анализу после Колмогорова и Фомина (www.twirpx.com/file/111940) подчеркивает важность алгебраических методов в анализе, но увы — бытовуха не позволяет мне погрузиться в их изучение.

Пока не читал ту статью, но вейвлеты и фурье всего-лишь, например, переводят сигнал и временной области в частотную и никак не снижают размерность
Но там дальше есть важные момент. Но со многими сигналами в частотной работать удобнее. И в том числе снижать размерность.
Пример который сразу это прекрасно показывает. MFCC — сначала переходим в частотную область, затем зная то, как работает наше ухо сглаживанием спектр и этим понижаем размерность до 17-21 практически ничего не теряя из нужного в сигнале. Ну и логарифм там — это изменение динамического диапазона.
Вейвлеты — разложение не по синусам с косинусами, а по например, функциям Хаара или подобным.
Но при обработке изображений у нас не временная область, а пространственная и вейвлеты себя отлично показали.

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

А вот делают сверточные сети что-то подобное или нет, я не знаю, надо для начала в той статье разобраться.

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

Снижают, если отбросить коэффициенты ниже некого порога. Понятно, что это сжатие с потерями, но несущественными.

Ортогональных систем функций бесконечно много.

Так нам нужны не всякие, а «хорошие». Фурье инвариантно к циклическому сдвигу (вельветы — нет, поэтому придумали избыточное преобразование MODWT). Зато вельветы — это не просто ортогональный базис, а еще вложенные друг в друга гильбертовы пространства.

Снижают, если отбросить коэффициенты ниже некого порога.

Ты просто удаляешь высокочастотную составляющую — часто там просто шум и ничего более. Но с этим проще бороться в частотной, а не временной или пространственных областях.
Для речи MFCC — это сглаживание спектра по шкале мелов. Т.е. высокочастотная часть не удаляется, но просто сглаживается спектр и после описывается 17-21 числом по полосам в шкале мелов. Обратным преобразованием ты получишь очишенный от кучи шума речевой сигнал. Грубо говоря стационарную часть сигнала.

По сути для каждого типа сигналов нужны свои подходы и эти подходы строят из собственно физики процессов.

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

Но с этим проще бороться в частотной, а не временной или пространственных областях

Только если процесс — стационарный :).
А вот если — как например в газе — прорвало трубу и цены взлетели — то фурье этот пик размажет по всей временнОй области, вельветы же локализуют его и по частоте, и во времени.

Впрочем, мы уходим в сторону. Тут более релевантно другое свойство вельветов — посмотри последовательность картинок, восстановленных из вельветных базисов различной глубины. А потом сравни с послойной визуализацией того, что «видят» сверточные сетки в каждом слое. Ввглядит весьма похоже.

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

Нейронки я не знаю пока на серьезном уровне

Так пока что их никто на серьезном уровне не знает, ПОЧЕМУ они (на ряде задач) эффективно работают.
Mallat пытается свести все к вельветам, потому что он сам — известный вельветчик. Но мне каат-ся, что это — не натягивание совы на глобус, а правильный подход для сверточных сетей.

Ну и вот те наглядные картинки, о которых я говорил:
1. Лена через призму вельветов
www.researchgate.net/...​e-Daubechies_fig3_1957226
2. Лена через призму слоев сверточной сети
www.semanticscholar.org/...​8152cde30bcf74b861eb6a536
3. В качестве бонуса и чтоб другим было нескучно читать нашу дискуссию — голая Лена — оригинальный необрезанный имидж
www.lenna.org/full/len_full.html

На картинках выглядит совой пока, но без разбирательства в математике сложно утверждать.
На картинках по ссылке происходит как бы проявление изображение (ну если сам фотки ты проявлял). Сначала наиболее контрастное, а затем детализация. Но это качественное ощущение, что это с точки зрения математики я не могу сказать.
Ну и у сети помимо это части (по сути фильтрации) еще строиться разделяющая функция.
Т.е. можно аналогичное сделать на какой-то фильтрации и тех же SVM, но сложнее сделать, правда суть обработки станет понятнее.
Ну а если кто-то сделает таки математику для сверточных сетей, то дальше ее без проблем свяжут с другими методами ML.
И здесь появиться четкое понимание, как бороться с известной врожденной ошибкой сверточных сетей: если два объекта находятся рядом, то почти всегда сеть найдет третий объект, что ровно посередке между двумя реальными объектами и состоит из половинки одного объекта и второго. Одно из решений оного — капсульные сети — но они пока больше в теории, чем в практике.
На уровне «на пальцах» причина этих ошибок понятна, но этого совсем не достаточно, чтобы с этой проблемой справиться.

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

З.Ы. Ну и нейронки не могут не работать. Если мы не учитываем время (типа, как в марковщине), то это аналог SVM и ничего более. Но различаются методы построения разделяющей функции. И сложность в нейронках именно в том, как построить собственно сеть так, чтобы она решала практические задачи и быстро. Ты же можешь сделать супер общую сеть, задать правил пачку, как бороться с переобучением и запустить на лет 20 строиться и в результате получишь что-то работающее и работающее достаточно качественно и медленно. Вот только такой подход неприменим в практике. Ну и еще все движки сейчас юзают градиентный спуск, а это хорошо работает, если у нас есть один и только один экстремум. Сетей же обучающихся с помощью отжига, муравьиного или генетического алгоритмов я не видел.

Чет я как то очень уж сомневаюсь что в Амазоне работают слабые специалисты. Понятно что там работают специалиты и без phd по математики, но все же .

Ну, даже стол на 5 этаж не смогут донести.

А в среднем работающие в Амазоне не отличаются от работающих в Епаме или Люксофте.
И там и там есть небольшой процент спецов и толпа планктона.

А я открою секрет полишинеля: если над хорошим спецом поставить тупого манагера, который будет нахлестывать с криками быстрей-быстрей, то и результат будет соотвествующий. И это — всего лишь один из многих способов не дать таланту принести плоды (хотя, пожалуй, самый распространенный).
Ну а какие специалистки работают в амазоне — мы знаем — умницы и красавицы :)
dou.ua/...​s/17-years-old-architect

У Амазона другие цели, а совсем не раскрывать таланты. Для меня даже удивительно было, что они решили в облака полезть — кто-то умный у них в верхушке оказался. И более того лидерами в облаках стали.

решили в облака полезть — кто-то умный у них в верхушке оказался

Повезло :)
Я когда слышу притчи недоБаффетов, что мол, вот если бы вы инвестировали в Амазон... — только посмеиваюсь — я-то помню, сколько лет он в убытках сидел, а задним числом все Баффеты.

Простой пример. Вот GPT модель языка blog.openai.com/better-language-models
Которой просто скармливают кучу текстов и она сама находит все правила и закономерности языка.
Сделаете это быстрее руками?) — врядли.

Я текстпроцессингом интересуюсь постольку-поскольку, поэтому мне сложно судить.
А вот о той области где я эксперт — анализ временнЫх рядов и стохастических процессов — рассказать могу много. Какой инструмент возьмет дата сцаентиест «от сохи», услышав слово time series? Скорее всего, LSTM сеть.
А что из этого может (не) получиться — этот case я на Доу уже неоднократно приводил letyourmoneygrow.com/...​r-a-step-by-step-example

Рекомендую сразу подписаться на канал телеграм по МЛ t.me/ml_world
Там много полезных пейперов новостей и прочего

Раз такое дело, то тоже порекомендую хороший канал: t.me/d_science

Спасибо, ждем такую же статью только для аналитиков. Например
«С чего начать работу с Java. Обзор лучших библиотек»
....
Если в Data Science большую часть времени вы проводите в Jupyter Notebook, то в большая часть кода в програмировании пишется в так называемых IDE....
.... Выбор языка Java, Scala, Kotlin, Groovy — какой выбрать?...
... Spring — лучшая библиотека для бизнес-приложений..
Ну вообщем что то в таком духе, или блин, «стрелочка не поворачивается» ?

Если вы задаетесь вопросом, какую DL библиотеку лучше выбрать: TensorFlow/Keras или PyTorch, то лучшим ответом будет найти онлайн-курс, который вам нравится, и курс сделает выбор за вас.

tensorflow наверное самый убогий движок для нейронок, но он и самый простой для вайтишников и по нему много уроков для новичков в инете.
Но где хоть слово об остальных 20 — на вики это все есть, просто спроси у гугла.
Ну и прикалывает, как ML здесь свернулось до пары движков нейронных сетей.

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

В общем очередная статейка по пробиванию дна очередным вайтишником.

Что за треш? Вы модели на ассемблере пишите?) и какие же у питона проблемы на проде?)

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

Вы хоть что-то на прод с пайтоном деплоии?

Как раз сейчас наблюдаю сей процесс. Весело наблюдать.

Не знаю что там у вас, но обычно это происходит довольно непринуждённо.

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

tensorflow наверное самый убогий движок для нейронок, но он и самый простой для вайтишников и по нему много уроков для новичков в инете.

Это почему же он убогий?

Передай ему массив из GPU, для начала.
По сборке Caffe с полпинка собирается, TF — танец с бубном с постоянно меняющимися зависимостями от других гуглоподелей. Заюзали Eigen, но покорежили его своими кривыми ручками. И это так сходу, без засовывания носа в исходники его.

Сборка tf то еще занятие, тут я согласен. Но обычно его и не нужно постоянно собирать, так как это делают с кафе, и не нужно что-то менять в середине так как это делают с кафе. Он довольно гибок(PyTorch еще более гибок). А это для ресьорча очень важно.

caffe собирается с полпинка, но зачем его пересобирать я не знаю. А вот TF, там гуглоовцы постоянно меняют зависимости от своих же поделий. Последний раз они меня потрясли тем, что заюзать то, что есть уже в STL не осилили, но написать свой велосипед с квадратными колесами — это в их стиле.

По поводу GPU, он по дефолту отжирает все. тому да, приходиться юзать CUDA_VISIBLE_DEVICES и alow_grown_placement.

Он просто тупо не умеет принять данные из GPU. А что там внутрях это другой вопрос.
Но вот тебе еще одна задачка. Выгрузить модель из GPU, не убивая процесс. Это же насколько криворукими надо быть программистам, чтобы забыть убрать за собой. Хотя да, в питоне такое не принято — убирать за собой.

R и R Shiny — это идеальные инструменты для исследования и создания прототипов приложений.

Для разработки «production-ready» приложений, можно использовать (например):

01. web сервер R Shiny и связанные с ним пакеты (shiny.rstudio.com);
02. пакеты «tidyverse» и «data.table» (высокопроизводительные вычисления);
03. пакет «ggplot2» и различные внешние JS библиотеки для визуализации;
04. пакет «bookdown» для создания технической документации проекта;
05. пакет «doParallel» для выполнения параллельных вычислений;
06. пакет «caret» (подробнее в книге «Applied Predictive Modeling in R»);
07. пакет «forecast» для работы с временными рядами (otexts.com/fpp2);
08. пакеты «keras» и «tensorflow» для глубокого машинного обучения;
09. пакет «R6» для реализации кода в парадигме объектно-ориентированного программирования;
10. пакет «testthat» для создания unit тестов.

Учитывая, что «большую часть времени» аналитики проводят в «Jupyter Notebook», хотелось бы обратить внимание на «R Notebook», который очень комфортный для проведения исследовательской работы и позволяет работать с кодом на Python, SQL, C++, Bash.

Общепринятой IDE для R является R Studio, которая существует в desktop и браузерной версиях.
При этом работа в R Studio на локальном компьютере и через браузер выполняется в едином интерфейсе, что весьма полезно при удаленной работе с R кодом на AWS сервере.

Мнение, что «R плохо подходит для решения задач, не связанных с анализом и визуализацией данных» обычно связано с тем, что код на R пишут не-программисты и он получается трудночитаемым и поддерживаемым. Код на Python легче поддерживать на этапе использования готового продукта. Кроме того, специалистов на Python обычно легче найти на рынке.

Считаю, что одним из основных достоинств R + R Shiny является отличное соотношение «скорость vs стоимость» прототипирования MVP vs MSP приложений.

R вообще не рекомендую, тупо урезанный пайтон без будущего, с просто пипец ужа ным синтиаксисом который тупо нереально быстро читать

R вообще не рекомендую, тупо урезанный пайтон без будущего

Не люблю кошек, потому что не умею их готовить.

который тупо нереально быстро читать

Броцкого не читал, но осуждаю.

То, что ML и AI тупо в статье сведены к паре классических методов и некоторым типам нейронок — уже отметили другие комментаторы.
Но вот бывают-таки и сложные модели, где это не так.
К примеру, мне часто нужны:
1. вейвлеты (в т.ч. для спектрального анализа квази-стационарых временных рядов)
2. нормальная библиотека стохастических процессов — а не только примитивное броуновское движение
3. «экзотические» вероятностные распределения типа EV или VarianceGamma.
Где все это в питоне?

В питоне как и в любом норм языке это в либах)
открываете гугли и пишете то что вам надо и юзаете
Пример:
www.google.com/...​&sourceid=chrome&ie=UTF-8

Угу, гуглим и находим какие-то заброшенные поделки

www.google.com/...​i30j0i8i13i30.w7qKjAFgpKM

www.google.com/...​7i30j0i8i7i30.jaqgOrJRN6c

А вы думает в формуле что то изменилось?)

Я уже молчу о том что эти вещи довольно просты в реализации + довольно слабо полезны

А вы думает в формуле что то изменилось?)

Смотря о чем речь — если о генерации случайных сэмплов из EV или VarianceGamma — то там действительно все straightforward, но уже калибровка параметров EV — процесс очень нетривиальный.

эти вещи довольно просты в реализации

Ну да, очень просто переписать формулу в лоб, сложно получить что-то стОящее. Не даром вот этот тип (сейчас — профессор в ТУ-Мюнхен) в своей диссертации грамотной симуляции jump diffusion процессов уделил отдельный параграф.
oparu.uni-ulm.de/...​df?sequence=1&isAllowed=y

+ довольно слабо полезны

Это смотря в чьих руках :) Несколько лет назад я с помощью (производного от) VarianceGamma построил модель динамики спотовой цены природного газа, которая почти идеально соответствует эмпирике, как показывает вот этот QQplot.
yetanotherquant.com/fig5b.pdf
А сейчас использую EVT для стресс-теста в рамках требований Basel III — свод нормативов по риск-менеджменту для банков.

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

1. вейвлеты (в т.ч. для спектрального анализа квази-стационарых временных рядов)

Все-го лишь одно из преобразований. Правда второе по применимости после Фурье.

В анализе временнЫх рядов — первое (стационарные ряды уже мало кому интересны). Более того, в R — не просто преобразование, а уже готовый фреймворк для оценки (медленно) меняющегося спектра. Я бы конечно мог и сам запрограммить вот эту теорию — letyourmoneygrow.com/...​/2018/01/report_final.pdf — но куда удобнее брать готовое от автора, особливо если не уверен наперед в том, будет ли оно работать на практике.

Зависит от рядов и сильно. И да логичнее сейчас не самому писать, а юзать уже отлаженное. Почему-то мне кажется, что либы для R отлажены качественнее, чем для питона.

Почему-то мне кажется, что либы для R отлажены качественнее, чем для питона.

А потому что:
1. «Классику» имплементировали в R куда раньше чем в Питоне
2. Лично мой опыт говорит, что авторы новых оригинальных разработок — такие как Nason или Fryzlewitz, иплементировали свои идеи в R. Собственно, Питоном до хайпа нейронок в академической среде вообще мало кто интересовался.

1. Рекомендовать R или нет вопрос личной оценки.
2. R != Python. Но у них есть общее «под капотом» — C++.
3. Будущее R более чем прекрасно и серьезно (www.rstudio.com/pricing)
4. Синтаксис R имеет «особенности», связанные со статистической мощью языка.
5. Хорошо документированный R код читается легче C++ кода.

1. Да. А еще вопрос задачи. Лично я стараюсь не влюбляться ни в какую технологию, а использовать то, что подходит для решения задачи. При этом склеивать фрагментарное решение написанное на разных языках — порой еще тот челленж. Но тут опять-таки решаешь индивидуально, стоит ли овчинка выделки (обычно стоит, бо контейнеры-микросервисы в помощь).

2. Ну, C/C++ считай везде под капотом, это то общее, что есть не только у R и Питона, но и Линукса и PHP.

3. Да. Более того, за R (полугласно) стоит Microsoft. Вся майкросовтовская аналитика делается сначала на R, а потом на Питоне. Более того, насколько могу судить в своей области, программный код к научным статьям чаще всего пишется именно на R.

4. Тут я должен признать, что в «особенности» кода в R вызваны больше отсутствием кодекса кодера (вот такая игра слов). Каждый делает, как хочет. В Питоне с этим строже — и это хорошо.

5. А можно развить мысль?
В плюсах читать уже проще из-за статической типизации (что, правда, в последнее время портится злом по имени auto).

В R есть рекомендации по стилю кода.
Например:
1. Style guide — adv-r.had.co.nz/Style.html
2. Google’s R Style Guide — google.github.io/styleguide/Rguide.xml
3. The tidyverse style guide — style.tidyverse.org

Более того, насколько могу судить в своей области, программный код к научным статьям чаще всего пишется именно на R.

Ты в финансах, а там R это основной выбор. В том что я делаю, чаще матлаб встретишь в приличных научных статьях (речь не про скачать модельку для TF и дернуть ее из питона).

Ты в финансах

Ну, не только, как минимум, еще и в энергетике. Хотя там да — матлаб, пожалуй, даже чаще чем R используется.

Матлаб — это больше матричная числодробилка. И матстатистика в нем есть, но не столь навороченная, как в R.
Но у матлаба другие плюсы есть. Т.е. это инструменты немного для разных областей применения. Ну и собственно язык программирования в матлабе для меня привычней. Язык в R для меня непривычен.

1) это вопрос не личной оценки, а финансовых, хайринговых, сапортских вопросов.
R не выгоден по многим аспектам.
2) R != Python разумеется но R in Python)
3) У него нет будущего кроме как в группах какихто староверов или хз кого. А отсутствие массовости делает продукт не жизнеспособным априори.
4) Синтаксис никогда не связан с особенностями и не более чем кривые руки разработчиков. я бы еще поняли синтаксис если бы он был сделан в сторону скорости обработки, но это не так. А следователньо его состояние ничем необосновано и бесполезно.
5)

Хорошо документированный R код читается легче C++ кода.

Хорошо документированный R код читается легче хренового C++ кода? Ну тут вопервых нормальный сишный код сегда норм читается и никогда не вызывает проблем с быстрым пониманием. А во вторых мы вроде сравниваем R и Python)

RE:

У него нет будущего кроме как в группах какихто староверов или хз кого

Абсолютно странное заявление, у которого точно нет будущего, в отличие от R.

расскажите еще о великом будущем Lisp’a))

PYPL — R in Top10 (7)
TIOBE — R in Top15 (15)
Отличный результат для в общем-то специализированного языка.

Ну а писать серваки на R это всеравно что писать МЛ на Groovy. Что лишь подтверждает печальность языка.

R вообще-то отличный инструмент с очень приличным языком, правда немного непривычным синтаксисом.

Спасибо за статью. Какраз лично мне очень актуально. Google Colab — прямо таки находка!

Я не знаю что такое R, а значит

используйте Python и не ошибетесь

Пакет в первую очередь для матстатистики. Очень любим квантами. Наравне с экселем. Ибо вопрос не в интрументе, а в мозгах.

И да, могу сказать, что я R не очень люблю. Мне больше матлаб нравится. Но это определяется тем, какие задачи делаешь. Многие вещи на R проще и быстрее сделать, чем на матлабе, а другие наоборот. Просто у этих инструментов различные области применения, хотя можно и там и там делать.
Питон же — это хипстреская игрушка для всего и ничего сразу.

это был сарказм)
я знаю что такое R

Я пояснил для вайтишников просто.

Типа язык для статистики, но проблема в том что все тоже есть в питоне) а посему его использование вызывает вопросы

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

все тоже есть в питоне

я все библиотеки в R не знаю) как собсно и в любом языке)
Но я еще не видел кода на R который бы просто не переводился в Python.
На том же Kaggle, R юзается крайне редко.

Просто суть в том что на Питоне можно решить любую задачу а на R нет. Следовательно он более оптимален для изучения.

Если бы R решал задачи по типу кнопки «сделать пиздато» то вопросов не было бы.. но это тот же кодинг что и на другом языке. А при его узкой специфике и доволньо малом отличии вопрос «зачем плодить зоопарк?»

Если бы R решал задачи по типу кнопки «сделать пиздато» то вопросов не было бы.

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

Рекомендую к изучению „The Impressive Growth of R”
stackoverflow.blog/...​0/10/impressive-growth-r

приведи пример задачи, которую можно решить на питоне и нельзя на R?

Подписаться на комментарии