Мнение

MATLAB все еще актуален?

Jupyter Notebook теперь де-факто является языком общения для науки о данных. Что случилось с MATLAB?

В последний раз я использовал MATLAB в конце 90-х. Я заканчивал свою инженерную степень и смоделировал сигма-дельта аналого-цифровой преобразователь. Я помню, как использовал MATLAB и Simulink в университете. Это был последний раз, когда я использовал MATLAB в университете.

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

В то время как индустрия и средства массовой информации, похоже, продвигали Python, Pandas, Numpy и сопутствующую экосистему как «правильный выбор» и каким-то образом исчезли из MATLAB, мне интересно, связано ли это с тем, что первая экосистема более полезным и продуктивным по сравнению с MATLAB, или есть некоторый уклон в сторону экосистемы с открытым исходным кодом.

Как оба языка справляются с базовой линейной алгеброй

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

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

Несмотря на то, что у меня появилось определенное количество летных часов с использованием Jupyter Notebooks, Pandas и Numpy, я все еще нахожу их API и синтаксис неинтуитивными. Особенно это происходит, когда я пытаюсь перевести и визуализировать матрицы при использовании Numpy.

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

MATLAB — это язык манипулирования матрицами (его собственное название — сокращение от Matrix, Laboratory), и его синтаксис гораздо более интуитивен и ближе к тому, что он представляет: язык, предназначенный для для линейной алгебры по дизайну.

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

Роль интерактивных блокнотов

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

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

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

Эта интерактивная среда возникла на заре вычислительной техники. На самом деле MATLAB всегда был интерактивным, и даже такие программы, как Macsyma, разработанная в 1968 году, уже были интерактивными. Mathematica также представила концепцию Notebook в 1988 году, так что если кто-то думает, что интерактивный процесс разработки — это современный Python, то это не так.

Тем не менее, этот подход с визуальными кодированными блоками более уникален или лучше реализуется в Jupyter Notebooks, и он полезен и продуктивен. Очевидно, это одна из причин его успеха. В MATLAB теперь есть аналогичная среда под названием Live Editor, но у нее не было этой функции до 2016 года. До этого это были просто программы и интерактивная командная строка.

В настоящее время я изучаю эту версию Notebooks для MATLAB (которая, как я уже упоминал, называется Live Editor), и считаю ее очень полезным инструментом.

Я думаю, что отсутствие ноутбуков было одной из причин сокращения MATLAB и внедрения Jupyter Notebooks в экосистему Python. Я не мыслю сейчас никаких исследований или изысканий в этой области без них, и я думаю, что это разделяют многие люди, работающие в этой области.

Абстракция Dataframe

Фрейм данных Pandas — еще одна «большая» штука Jupyter Notebooks. Я стараюсь не использовать их, когда это возможно, потому что я обрабатываю очень большие объемы данных, а Pandas не эффективен, как Numpy.

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

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

MATLAB можно считать эквивалентным Numpy, и в нем отсутствует эквивалентный Pandas Dataframe. Теперь у него есть таблицы и расписания, которые можно рассматривать как эквивалентные версии Pandas.

Хотя на форумах MATLAB обсуждается много предостережений по поводу производительности таблиц и расписаний, я думаю, что то же самое относится и к кадрам данных Pandas. Таблицы и расписания кажутся отличными, и, в частности, функции, связанные с отметками времени и обработкой часовых поясов, теперь намного лучше в MATLAB, чем где-либо еще — у меня есть эта конкретная потребность, поэтому иногда я обращаю внимание на — .

Хотя Pandas иногда может быть обязательным, более осторожное использование простых массивов также может привести к структурам, эквивалентным Pandas Dataframe. Нередко столбцы именуются отдельными переменными, которые присваивают именам определенные индексы столбцов матрицы. Вы можете сделать это как в матрицах MATLAB, так и в массивах Numpy. Делая это, вы получаете полную производительность.

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

Влияние экосистем машинного обучения и искусственного интеллекта

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

Количество современных библиотек и фреймворков, которые можно включить в Jupyter Notebooks, огромно. Скорее всего, это среда с большей гибкостью и возможностями, и все эти базовые библиотеки и фреймворки написаны на низком уровне и высоко оптимизированы даже для GPU и параллельного развертывания. Тем не менее, его интеграция с Python немного искусственна, поскольку Python — это язык программирования общего назначения, а не матричный язык. Я подозреваю, что чем больше часов у экрана будет, тем меньше будет проблем.

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

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

Очевидный вопрос о стоимости

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

Этот момент во многом зависит от целей и сценария и его стоит обсудить.

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

На момент написания статьи комплектная студенческая версия MATLAB, Simulink и 10 наиболее распространенных наборов инструментов стоит около 75 долларов, а каждый дополнительный набор инструментов — менее 10 долларов. Это почти символическая плата, учитывая сложность и предполагаемую аудиторию программного обеспечения. Если вы зачислены в какую-либо программу на получение степени, изучение и изучение MATLAB почти бесплатно. Университеты, вероятно, также предоставят доступ к нему через свои академические лицензии.

Для личного некоммерческого использования затраты выше, MATLAB сам по себе не дорог, но наборы инструментов сделают окончательный счет немного дороже, но, тем не менее, вы найдете доступные цены около 300–500 долларов в зависимости от количества наборов инструментов, которые вы хотите добавить. . Если вам нужно больше ящиков для инструментов, цены будут расти. Это не похоже на студенческую версию, но стоимость все еще довольно разумна и доступна для личного использования.

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

Что говорит рынок

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

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

Вердикт

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

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

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

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

Ресурсы, которые я считаю полезными для MATLAB

Помимо уже упомянутых недорогих вариантов оценки MATLAB (студенческая лицензия и домашняя лицензия), существует 30-дневная пробная версия, и, если я правильно понял, информация, предоставляемая Mathworks при создании учетной записи, MATLAB предоставляет вам доступ на 20 часов в месяц. к их онлайн-версии облачного MATLAB.

Я изучил несколько руководств на YouTube, а также прочитал пару книг. В качестве вводного/освежающего материала я настоятельно рекомендую официальный курс MATLAB Onramp. Он интерактивен и очень хорошо продуман как по содержанию, так и по интерактивности. Его прохождение занимает 2 часа, и есть дополнительные курсы Onramp по машинному обучению и искусственному интеллекту, которые я намерен пройти в следующий раз.

Дополнение

В дополнение к уже упомянутым некоммерческим лицензиям малые предприятия, заинтересованные в коммерческом использовании MATLAB, должны знать, что MATLAB можно приобрести по очень конкурентоспособной цене лицензии Startup, которая составляет около 1500 долларов США. Лицензия действительна только для стартапов, отвечающих следующим требованиям: основанные в течение последних 5 лет, менее 15 инженеров и доход менее 1 миллиона долларов США. Ограничения кажутся довольно разумными, а цена делает MATLAB практически бесплатным для стартапов.

Отказ от ответственности

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

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

MATLAB и Simulink являются зарегистрированными товарными знаками MathWorks.

Mathematica – зарегистрированная торговая марка компании Wolfram.

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