Python и R vs. SPSS и SAS

Этот материал — перевод статьи Джерона Кромме, доступной на сайте R-bloggers по ссылке: https://www.r-bloggers.com/python-r-vs-spss-sas/

В работе с клиентами мы по большей части пользуемся такими статистическими языками программирования как SAS, SPSS, R и Python. Из них SAS и SPSS, вероятно, наиболее используемые. Однако интерес к R и Python – языкам с открытым исходным кодом – растёт. В последние годы, некоторые из наших клиентов перешли от использования SAS или SPSS на R и/или Python. А для тех, кто (ещё) не перешёл, большинство коммерческого программного обеспечения (включая SAS и SPSS) сегодня имеет возможность подключения R и Python.

SAS был разработан в Государственном Университете Северной Каролины, и изначально предназначался для анализа большого количества сельскохозяйственных данных. Аббревиатура SAS расшифровывается как Система Статистического Анализа (Statistical Analysis System). В 1976 году, в ответ на рост спроса на подобные инструменты, была основана компания SAS. Статистический Пакет для Социальных Наук (Statistical Package for the Social Sciences, SPSS), был разработан для использования в социальных науках и является первым статистическим языком программирования для ПК. Он был разработан в 1968 году в Стэнфордском Университете, а восемью годами позже была основана компания SPSS, проданная в 2009 году компании IBM.

В 2000 году Оклендский Университет выпустил первую версию R, языка программирования, в первую очередь ориентированного на статистическое моделирование, с открытым исходным кодом и распространяющегося под лицензией GNU. И только Python [из инструментов, о которых мы говорим в этой статье] не был создан в университете. Python разработан Датчем – большим фанатом комедийной группы Монти Пайтон (именно ей язык обязан своим названием). Ему был нужен проект на рождественские праздники – и она создал этот язык, основанный на ABC. В свою очередь, ABC – это язык, созданный им же, целью которого было обучение непрограммистов программированию. Python – это многоцелевой язык, как, например, C++ и Java, но намного проще их в изучении. Программисты поддержали идею и создали множество модулей для Python, в том числе обеспечив большие возможности для статистического моделирования. Именно поэтому мы обсуждаем Python наравне с другими инструментами.

В этой статье мы сравним эти четыре языка по методам и техникам, простоте изучения, визуализации, поддержке и стоимости. Мы фокусируемся именно на языках, пользовательские интерфейсы SAS Enterprise Miner и SPSS Modeler останутся за рамками обсуждения.

Статистические методы и техники

Мой взгляд на анализ данных такой: существует континуум между описательными моделями с одной стороны и предсказательными с другой. Выбор, который вы делаете во время подготовки модели, зависит от вашей цели. Возьмём для примера отток клиентов. Вы можете спросить почему клиенты уходят, или задаться вопросом о том, какие это клиенты. Первый вопрос связан с целью объяснить потерю клиентов, а второй – с целью его прогнозировать. Это фундаментально разные вопросы, и ответ на них влияет на остальные решения, которые вам придётся принимать. Предсказательный анализ данных тесно связан с такими терминами, как «добыча данных» (Data Mining) и машинное обучение.

SAS и SPSS – инструменты, пришедшие с описательной стороны анализа данных. Они разработаны в академическом окружении, где тестирование гипотез играет основную роль. Это ставит их в невыгодную позицию по сравнению с R и Python с точки зрения количества доступных методов и техник анализа. Сегодня и SAS и SPSS имеют инструменты для добычи данных (SAS Enterprise Miner и SPSS Modeler), но это отдельные программы, которые требуют отдельных лицензий.

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

Python разработан с большим упором на (бизнес-)приложения, в основе своей это не академический и не статистический инструмент. Это делает Python очень мощным в случаях, когда алгоритмы используются напрямую в приложениях. Следовательно, его применимость в статистике преимущественно сфокусирована на предсказательном анализе. Python в основном используется в приложениях для добычи данных или машинного обучении, где аналитик данных не сталкивается с необходимостью вмешиваться в процесс. Python также силён в анализе изображений и видео, например мы использовали Python этим летом, чтобы создать собственный беспилотный автомобиль. Кроме того, Python – самый простой в использовании язык с фреймворками для анализа больших данных, такими как Spark.

Простота изучения

И SPSS, и SAS снабжены удобным пользовательским интерфейсом, так что их пользователю необязательно программировать. Кроме того, в SPSS есть функция Paste, которая позволяет генерировать синтаксис из действий, выполненных через пользовательский интерфейс, а у SAS есть инструмент Proc SQL, что делает программирование на SAS значительно легче для людей, знакомых с языком запросов SQL. SAS и SPSS синтаксически очень далеки друг от друга, а также сильно отличаются от других языков программирования, так что если вам нужно выучить один из них «с нуля» — желаем удачи!

Хотя для R и существуют графические оболочки, такие как Rattle, они очень далеки от SAS и SPSS с точки зрения функциональности. R прост в изучении для программистов, однако многие аналитики не имеют опыта в программировании. У R самая крутая кривая изучения, это самый сложный язык для начала. Но как только вы усвоите основы, он станет значительно легче. Для того, чтобы облегчить начало использования языка, мы создали курс под названием «Испытать R», нацеленный на (заинтересованных) аналитиков данных / учёных. Python основан на ABC, который в свою очередь разработан с единственной целью – обучить непрограммистов программированию. Читаемость – одно из основных преимуществ Python. Всё это делает Python максимально простым в освоении языком. Так как сфера его применения очень широка, графического интерфейса для Python не существует.

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

Поддержка

SAS и SPSS – коммерческие продукты и предоставляют официальную поддержку. Это мотивирует некоторые компании выбирать именно их: в случае, если что-то пойдёт не так, всегда можно получить поддержку.

Существует искажённое представление о поддержке проектов с открытым исходным кодом. У них действительно нет официальной поддержки от создателей или владельцев, однако оба языка обладают большими сообществами, которые с радостью помогут вам решить возникающие проблемы. И в 99 случаях из 100 (если не чаще) вопросы, которые вы хотите задать, уже были заданы и получили ответ на таких сайтах, как Stack Overflow. Кроме того, существует множество компаний, предоставляющих профессиональную поддержку как для R, так и для Python. Итак, хотя ни у одного из этих языков нет официальной поддержки, на практике вы скорее получите ответ на вопрос, связанный с R или Python, чем с SAS или SPSS.

Визуализация

Графические возможности SAS и SPSS очень функциональны; несмотря на возможность делать небольшие изменения в графиках, полная настройка визуализации в SAS и SPSS может быть очень обременительной задачей, если не невозможной. R и Python предлагают намного больше возможностей для настройки и оптимизации ваших графиков благодаря широкому набору доступных модулей. Наиболее широко используемый модуль для R это ggplot2, обладающий большим набором графиков, в которых вы можете изменить практически всё. Эти графики также легко сделать интерактивными, что позволит пользователям «поиграть» с данными через такие приложения, как Shiny.

Python и R взяли (и до сих пор берут) многое друг от друга. Один из лучших примеров такой связи – это то, что в Python также доступен модуль ggplot, обладающий практически идентичной функциональностью и синтаксисом, что и в R. Другой широко используемый инструмент для визуализации в Python это Matplotlib.

Стоимость

R и Python – это инструменты с открытым исходным кодом, что делает их доступными бесплатно для всех. С другой стороны, как мы уже обсудили, они сложнее в освоении, чем SAS или SPSS, обладающие графическим интерфейсом. В результате, аналитики, в чьём арсенале есть R и/или Python, могут претендовать на более высокие заработные платы, чем те, кто не освоил эти инструменты. Обучение сотрудников, незнакомых с R или Python также стоит денег. Таким образом, на практике использование языков программирования с открытым исходным кодом нельзя назвать полностью бесплатным, однако в сравнении со стоимостью лицензий на SAS или SPSS они однозначно выигрывают.

Мой выбор

«Программное обеспечение как секс: лучше, когда оно бесплатное»

— Линус Торвальдс (создатель Linux)

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

Какой из двух языков я использую зависит, как уже говорилось, от стоящей задачи. Python – это многоцелевой язык и разработан с фокусом на приложения. Python силён в приложении к машинному обучению, следовательно я использую его для задач распознавания лиц или объектов, а также для глубокого обучения. R я использую для задач, связанных с анализом поведения потребителей, когда основным становится описание; если я знаю, каких клиентов теряет компания, мне также нужно понимать почему.

Два этих языка по большей части взаимодополняют друг друга. Существуют библиотеки для R, которые позволят вам запускать код на Python (reticulate, rPython), и модули для Python для запуска кода на R (rpy2). Это позволяет ещё больше усилить связку двух языков.


Джерон Кромме, Старший консультант в сфере Data Science