Конвейер Wolfram Data Science охватывает такие этапы работы со слабоструктурированными данными, как постановка задачи, ее формализация, сбор данных, трансформация, тонкая настройка модели и т. д. Источник: stephenwolfram.com |
Проведенный при поддержке компании Softline недавний семинар был посвящен линейке программных продуктов Wolfram Research, включая широко известную систему Mathematica.
Для решения аналитических и численных математических задач создано немало программных продуктов, в том числе Mathcad, Matlab, Maple, Mathematica. Все это не обычные библиотеки прикладных программ для математических расчетов, которые можно просто вызывать, а высокоуровневые системы с мощными возможностями интеграции, визуализации и т. д., как правило имеющие собственные языки программирования.
В целом в Wоlfram Research сегодня ориентируются на создание комплексных решений на стыке различных областей (скажем, ИТ, математика и медицина). Программные продукты компании предполагают простоту применения и высокую единообразность, включая общий язык Wolfram Language, обработку информации непосредственно на веб-сайтах, высокоразвитые средства визуализации. Примерами могут служить Wolfram Data Drop (сервис для обработки и перемещения данных) или System Modeler (моделирование биохимических и физико-технических объектов собственным объектно-ориентированным языком).
В Mathematica, в марте получившей обновление в виде версии 10.1, очень быстро продолжает расти число самых разнообразных функций. Конек Wolfram — работа со слабоструктурированными данными. В работе с базами данных, помимо традиционных применений, усиливается функциональность, рассчитанная на специализированные базы данных. Можно говорить о целом конвейере Wolfram Data Science, куда входят, например, такие этапы, как постановка задачи, ее формализация, сбор данных, трансформация (включая «очистку» и преобразование данных), тонкая настройка модели и т. д.
В Wolfram Data Science общую сложность задачи определяют три основные компонента — размер, гетерогенность, сложность алгоритма решения; они диктуют целесообразность использования того или иного программного инструментария. Mathematica ориентирована на символьную парадигму, на применение списков. Если все три компонента сложны и трудоемки, эта ориентация может привести к неудовлетворительной производительности и излишней сложности. Если статистическая обработка в своей основе медианная (считаются средние значения), что типично для обработки медицинских данных и для экономических задач, например финансовых данных, то можно использовать Excel или написать простенькую дисперсионную программку на языке Wolfram. А если обработка нужна «экстремальная», могут понадобиться более сложные программы на Питоне, Си и других языках. Символьно-строчечная парадигма Mathematica при работе с большими побайтовыми массивами еще более увеличивает его реально используемый размер, замедляя вычисления. Написать в Mathematica можно быстро, а считать — значительно медленнее, чем на Си. Но современные специализированные языки программирования (например, R) развиваются в направлении общего пользования; вероятно, такое будет происходить и с языком Wolfram (в частности, шаги по поддержке традиционных массивов уже делаются). Если задачи незначительны по сложности, гетерогенности и размеру, можно вообще обойтись Excel. Если велики гетерогенность и сложность, а размер маленький или средний, хорошо применять Mathematica. Если еще и размер данных велик, лучше применять Си и профессиональный инструментарий (SAS, Statistica).
Язык Wolfram — интегратор, великолепный для иллюстраций, презентаций. Огромное количество форматов данных, которые можно читать и обрабатывать, делает его удобным инструментом для сбора и трансформации данных; очень просто связываться с различными базами данных, в том числе специализированными; легко и эффективно загружаются всевозможные данные из Интернета.
Поскольку в исходных данных имеются ошибки, для их устранения можно применить процедуры первоначальной специальной обработки, например на базе алгоритмов нейросетей.
Язык Wolfram — интерпретируемый, а не компилируемый. Не следует ждать от него высокой производительности: если она очень важна, следует обратиться к обычным языкам программирования. Та же проблема и с функциями Mathematica. Имеющиеся возможности распараллеливания и работы c GPU/CUDA довольно ограниченны, быстрых функций в Mathematica не добавилось — они по-прежнему последовательные, но можно на языке Wolfram организовать параллельное выполнение их нескольких экземпляров.