Информационное письмо
Образец оформления статьи
Анкета автора
22.02.2016

Выбор языка программирования для задачи анализа данных методом анализа иерархий

Шкарбан Александр Сергеевич
магистрант кафедра информатики Санкт-Петербургский Государственный Экономический Университет Санкт-Петербург, РФ
Аннотация: В ходе выполнения работ по разработке системы анализа данных было выяснено, что есть множество языков программирования, предоставляющих тот или иной функционал, применимый к задачам анализа данных (Python, R, Java, Matlab, и другие). Данная статья призвана рассмотреть наиболее часто упоминаемые из них с точки зрения применения к задаче анализа данных и сузить круг предлагаемых решений до одного, максимум двух. Принятие решения осуществляется методом анализа иерархий Т. Саати с применением ППП «СППР Выбор».
Ключевые слова: анализ данных, язык программирования, метод анализа иерархий, Python, R, JavaScript, Matlab
Электронная версия
Скачать (646.6 Kb)

1. Постановка задачи

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

Основная задача, в рамках которой решается проблема выбора языка программирования, сформулирована следующим образом: «Разработка системы анализа деятельности кредитных организаций». Иными словами, аналитической системы, способной присваивать кредитный рейтинг. Предполагается осуществлять поиск информации в открытых источниках, ее сбор и подготовку, а затем примененять к подготовленным данным специальный алгоритм, на основании результатов выполнения которого должно быть сформулировано решение о присвоении рейтинговой категории, а также прогноза по ней. [8]

Таким образом, получаем базовое требование: нам необходим инструмент, позволяющий производить основные действия в рамках анализа данных: их сбор, очистку, подготовку и проведение над ними базовых операций (агрегирование, преобразование, применение различных функций). В ходе анализа литературы, был собран представленный ниже перечень инструментов для анализа данных. [1][3][6]

2. Python

Появившись в 1991 году, Python стал одним из самых популярных динамических языков программирования (наряду с Perl, Ruby и некоторыми другими). Наиболее широкую известность Python и Ruby приобрели как инструменты веб-разработки (Rails и Django). Эти языки принято называть скриптовыми.

Из всех интерпретируемых языков Python выделяется большим и активным сообществом научных расчетов. Особенно широкое распространение данный язык получил в связи с появлением улучшенных библиотек (прежде всего, pandas), что сделало его серьезным конкурентом в решении задач манипулирования данными. В сочетании с достоинствами Python как универсального языка программирования это делает его отличным выбором для создания приложений обработки данных. Своим успехом в качестве платформы для научных расчетов Python также обязан простоте (разумеется, относительной) интеграции с кодом на С, С++ и FORTRAN. Наиболее актуальная на момент написания статьи версия языка – v.3.5.1. Распространяется бесплатно.

3. R

Свободно распространяемый интерпретируемый язык программирования для статистической обработки данных и работы с графикой. Разработан как бесплатная ветвь развития языка S. Является куда менее универсальным нежели Python, тем не менее, успел завестись не менее обширным кругом поддерживающих его разработчиков. Наиболее актуальная на момент написания статьи версия языка – v.3.2.3. Распространяется, как уже было сказано, бесплатно.

4. Java

Нечасто в публикациях на тему анализа данных можно встретить упоминания о языке Java. Его присутствие обусловлено тем, что именно на нем иллюстрировались примеры в книге Марманиса. Было решено прислушаться к мнению профессионала и добавить язык в сравнительную базу. Сами же авторы книги объяснили свое решение тем, что написана она (книга) преимущественно для веб-разработчиков, остальным же, в случае необходимости, предлагается «перевести» код на более привычный язык. [4]

Наиболее актуальная на момент написания статьи версия языка – v.8.73. Распространяется бесплатно.

5. Matlab

Несмотря на широкую известность исключительно как пакета программных продуктов для математических вычислений, является также высокоуровневым интерпретируемым языком программирования. Как язык программирования был разработан в 1970 году. Реализует куда более широкий спектр возможностей, нежели обозначенные выше языки с учетом библиотек расширений. Наиболее актуальная на момент написания статьи версия языка – v.8.6. Проприетарное ПО.

6. Анализ иерархий

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

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

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

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

Рисунок 1 Матрица парных сравнений для критериев отбора языка программирования

Рисунок 1 Матрица парных сравнений для критериев отбора языка программирования

Расшифровывая значения вектора предпочтений, можно сказать, что главным приоритетом является базовый функционал для анализа данных. Далее по важности в порядке убывания следует простота усвоения. Время, отведенное на разработку, действительно ограничено. Далее универсальность языка, ведь финальная цель разработки – информационная система. Затем – дополнительный функционал, необходимый больше для удобства пользователя и наконец, наименее важным выбрана форма лицензирования. В конце концов, неужели, в случае чего, ничего нельзя будет предпринять? Уровень общей связности – 13%, что является вполне приемлемым показателем. [5]

Переводя всё описанное выше в оценки для матриц парных сравнений для каждого из четырех рассматриваемых решений (рис.2), получаем следующее распределение оценок (рис.3). Общая связность модели – 8%. 

Рисунок 2 Матрицы парных сравнений для каждого из решений

Рисунок 2 Матрицы парных сравнений для каждого из решений


Рисунок 3 Результат вычислений

Рисунок 3 Результат вычислений

С достойным отрывом лидирует язык Python. Незначительно отстают R и Matlab. В этом есть рациональное зерно, так как язык R преимущественно используется во взаимосвязи с математическими пакетами. Как и ожидалось, Java – не лучшее решение для анализа данных, несмотря на свою общепризнанную мощь как инструмента разработки ПО. Таким образом, было принято решение продолжить разработку на языке Python.

Список литературы:

1. Будников А.И. Сравнительный анализ производительности реализаций инструментария Qt для языков С++ и Python // Новосибирск: ООО "Центр развития научного сотрудничества". – 2014 – 129-132 с.

2. Граничин О.Н., Кияев В.И. Информационные технологии и системы в современном менеджменте. – СПб.: Издательство ВВМ. – 2014. – 897 с.

3. Маккинли У. Python и анализ данных // пер. с англ. Слинкин А. А. - М.: ДМК Пресс. - 2015. – 482 с.

4. Марманис Х., Бабенко Д. Алгоритмы интеллектуального Интернета. Передовые методики сбора, анализа и обработки данных // пер. с англ. – СПБ.:Символ-Плюс.– 2011.– 480 с.

5. Саати Т. Принятие решений методом анализа иерархий // М.:Радио-Связь. – 1994 – 278 с.

6. Смирнов В.А. Новые компетенции социолога в эпоху «больших данных» // Мониторинг общественного мнения: экономически и социальные перемены.: Всероссийский центр изучения общественного мнения (Москва). - №2. – 2015 – 44-54 с.

7. Трофимов В.В. Информационные технологии в экономике и управлении. М.: Юрайт, 2014. – 482 с.

8. Федеральный закон от 13.07.2015 «О деятельности кредитных рейтинговых агентств в Российской, внесении изменения в статью 76.1 федерального закона «О центральном банке Российской Федерации (Банке России)»».