Научная статья на тему 'Анализ средств языка программирования R'

Анализ средств языка программирования R Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
758
119
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ЯЗЫК R / ПАРАЛЛЕЛИЗАЦИЯ / НЕЙРОННЫЕ СЕТИ / R LANGUAGE / PARALLELIZATION / NEURAL NETWORKS

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Мамедов Вячеслав Сергеевич

Проведен анализ средств языка программирования R, отмечены достоинства среды R. Представлена реализация нейронных сетей на языке R, описан алгоритм, реализующий параллелизацию вычислений. Проведено сравнение языка программирования R с другими языками программирования.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Мамедов Вячеслав Сергеевич

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

LANGUAGE FEATURES ANALYSIS OF THE R PROGRAMMING LANGUAGE

The article provides language features analysis of the R programming language, outlines the advantages of the R environment. The paper presents the implementation of neural networks in the R language, describes the algorithm executing the parallelization of computations. The article includes the comparison of the R programming language with other programming languages.

Текст научной работы на тему «Анализ средств языка программирования R»

АНАЛИЗ СРЕДСТВ ЯЗЫКА ПРОГРАММИРОВАНИЯ R

В. С. Мамедов

Донской государственный технический университет, Ростов-на-Дону, Российская Федерация

Relecor3@gmail.com

Проведен анализ средств языка программирования Я, отмечены достоинства среды К Представлена реализация нейронных сетей на языке Я, описан алгоритм, реализующий па-раллелизацию вычислений. Проведено сравнение языка программирования Я с другими языками программирования.

LANGUAGE FEATURES ANALYSIS OF THE R PROGRAMMING LANGUAGE

V. S. Mamedov

Don State Technical University, Rostov-on-Don, Russian Federation

Relecor3@gmail.com

The article provides language features analysis of the R programming language, outlines the advantages of the R environment. The paper presents the implementation of neural networks in the R language, describes the algorithm executing the parallelization of computations. The article includes the comparison of the R programming language with other programming languages.

Ключевые слова: Язык R, параллелизация, Keywords: the R language, parallelization, neural

нейронные сети. networks

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

R — язык со многими функциями для выполнения статистического анализа и графического отображения результатов, которые визуализируются в собственном окне и могут быть сохранены в различных форматах. Результаты статистического анализа могут быть отображены на экране, а промежуточные результаты (P-values, коэффициент регрессии и т. п.) могут быть сохранены в файле и использоваться для последующего анализа.

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

Rstudio — интегрированная среда разработки (IDE). В отличие от Rgui, у данной оболочки есть заранее разделенные области и дополнительные модули (например, история команд, рабочая область). По мнению некоторых пользователей, Rstudio имеет более удобный интерфейс, упрощающий работу с R. Ряд особенностей, таких как цветовая подсветка и автоматическое завершение кода, удобная навигация по скрипту и другие, делают Rstudio привлекательной не только для новичков, но и для опытных программистов.

f$ RGui (32-bit)

Файл Правка Пакеты Окна Справка

^ R Console

ШСШСИ

> library[datasets)

> 3tr(cars)

'data.frame1 : £0 obs. of 2 variables: $ speed: nura 4 4 7 7 8 9 10 10 10 11 ... $ dist : nura 2 10 4 22 16 10 IS 26 34 17

> summary(cars)

speed

dist

Min. 4 0 Min. 2 00

1st Qu. 12 0 1st Qu. 26 00

Median 15 0 Median 36 00

Mean 15 4 Mean 42 98

3rd Qu. 19 0 3rd Qu. 56 00

Max. 25 0 Max. 120 00

> head[cars) speed dist

> attach(cars)

> par(mfrow = c(l, 3)}

> hist(speed, breaks = 10, col = "light blue")

> hist (di3tr breaks = 10, col = "pinlc")

> plot[speed, dist, main = "Corr: speed and dist", pc$

> cor(speed, dist) [1] 0.8068949

> legend("topleft", ™R = 0.81")

> detach(cars)

■ I

5 C:\Users\l\Documents\script,R - Редактор R

### Подключаем пакет datasets с пробными таблицами данных ### library(datasets)

# Рассмотрим таблицу с данными о скорости

# движения машин и их тормозного пути (cars)

str(cars) summary(cars) head(cars)

# Визуализируем данные и корреляцию между скоростью и тормозным пу attach(cars)

par(mfrow = c(l, 3))

hist(speed, breaks = 10, col = "light blue") hist(dist, breaks =10, col = "pink")

plot(speed, dist, main = "Corr: speed and dist", pch=21, bg="light

cor(speed, dist)

legend("topleft", "R = 0.81")

|ienach (cars)

! | ИГ К

[ R Graphics: Device! (ACTIVE)

Histogram of speed Histogram of dist

сезсжш

Corr: speed and dist

à

Ьш

5 10 15 20 25

О 40 80 120

5 10 15 20 25

Рис. 1. Среда разработки Rgui

U RStudic

File Edit Code View Plots Session Build Debug Tools Help

at*i s J3i an*G°

@ j script.R* x

H П Source on Save О

Run 5 _ Source

Environment History

ь Project: (None) *

=n

& В J*lmportDataset-

= List-

3

4

5

6

7

8 9

10 11 12

13

14

15

16

17

18 IS 20 21

# Рассмотрим таблицу с данными о скорости

# движения машин и их тормозного пути (cars)

str :'cars) summary(cars) head(cars!

# визуализируем данные и корреляцию между скоростью и тормозным путем

attach fears; hi st:'speed, breaks = 10 h- st(dist, breaks = 10, plot(speed, dist, main

bg="lightgreen") cor(speed, dist: 1egend C 'topleft", "R = 0.81") detach cars

col = "light blue") col - "pink") "corr: speed and dist", pch=21,

rrr

(Top Level] £

Q package;data5etsT

Console / f£> =n

3rd Qu.:19. 0 3rd Qu. : 56. 00 A

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Max. :25.0 Max. :120.00

> head(cars)

speed dist

14 2

2 4 10

3 7 4

4 7 22

5 8 16

б 9 10

> # визуализируем данные и корреляцию между скоростью и

> # тормозным путем -,

> attach(cars)

> hi st(speed, breaks = 10, col = "light blue")

> 1 -

Data

О cars Values

ability.... <promise> ai г mi les <Promise> Ai г Passe... <Promise> air quai ity<promi se> ariscombe <Promise>

50 obs. of 2 variables Q

Files Plots

Packages

о #Zoom ■S.Qport- O, / ■

Histogram of speed

d

I—I—I—I 10 15 20 25

speed

Рис. 2. Среда разработки Rstudio

R в терминале Linux/UNIX. Данный вариант предпочтителен для анализа большого объема данных через сервер, суперкластер или суперкомпьютер. Большинство из них работают на операционных системах класса Linux/UNIX, доступ к которым осуществляется через терминал команд. ЕЗ- ®

TerminaS

echo 'System is initializing.... please wait' sh-4.3$ echo "System is initializing.... please wait1 System is initialiiing.... please wait sh-4.3$ R

R version 3.2.9 (2615-04-16) -- "Full of Ingredients" Copyright (C) 2015 The R Foundation for Statistical Computing Platform: x86_64-redhat-linux-gnu (64-bit)

R is free software and comes with ABSOLUTELY HO WARRANTY. You are welcome to redistribute it Lrnder certain conditions. Type 'licenseO' or 'licencef)' for distribution details.

R is a collaborative project with many contributors.

Type 'contributor^)" for more information and

'citation()' on how to cite R or R packages in publications.

Type 1deno()' for some demos, 'help{)' for on-line help, or 1 help.start()" for an HTML browser interface to help. Type 'q()' to quit R.

[1] Б

> b <- "R is easy"

> b

[1] "ft is easy"

Рис. 3. Среда разработки в терминале Linux

Достоинства среды R:

• является бесплатной и кроссплатформенной;

• имеет богатый арсенал статистических методов;

• обладает качественной векторной графикой;

• насчитывает более 7000 проверенных пакетов;

• является гибкой в использовании:

- позволяет создавать и редактировать скрипты и пакеты,

- взаимодействует с другими языками, например, с C, Java и Python,

- может работать с форматами данных для SAS, SPSS и STATA;

• объединяет активное сообщество пользователей и разработчиков;

• поддерживает регулярные обновления и тех. Поддержку;

• обрабатывает большое количество данных (до 1 Гб);

• дает возможность использовать ее как программу (на основе готовых пакетов);

• позволяет создавать таблицы произвольной структуры;

• параллельные вычисления (пакеты foreach и doParallel).

Параллелизация вычислений в R. Учитывая, что вычисления по нескольким независимым моделям хорошо распараллеливаются, используем возможность, предоставляемую языком R, и со-

здадим кластер из нескольких ядер нашего процессора или компьютеров локальной сети, независимо от ОС этих компьютеров. иЬгагу(ёоРага11е1) ; загрузка нужных библиотек 11Ътагу([огеасК)

puskCluster<-function(){ ; определение кол-ва ядер на ПК cores<-detectCores() cl<-makePSOCKcluster(cores) ; registerDoParallel(cl) ; создание кластера

clusterSetRNGStream(cl); добавление в каждый поток генератора случайных чисел

return(cl) }

Рис. 4. Реализация нейронных сетей на языке R Опишем пакеты языка R для реализации нейронных сетей:

«deepnet» — простой пакет, реализующий модель DN БЛЕ и DN SRBM. При реализации пакета длина набора входных данных при обучении без учителя и с учителем одинакова. Отсутствует возможность провести тонкую настройку в два этапа. Предназначен для освоения и опробования моделей на начальном этапе.

агИ» — очень развитый и широкий пакет моделирования для DN БКВЫ. Построен на базе оригинальных программ Хинтона на языке т для Ыа^аЪ.

«Н20» — профессиональный пакет, предназначен для обучения моделей глубоких сетей (и не только) на «больших наборах данных» (>1 Гб), записанных в о^у-файлах.

Программная реализация (индикатор и эксперт). Опишем программную реализацию индикатора и эксперта, использующих сеть для получения торговых сигналов. Возможна реализация в двух вариантах:

1. Работа по обучению нейросети проводится в Rstudio вручную. После получения приемлемых результатов нейросеть сохраняется в соответствующем каталоге. Затем запускается эксперт

л

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

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

Рис. 5. Схема взаимодействия индикатора и эксперта Сравнение языка Я с другими языками программирования.

Суммирование столбцов

Я с#

р.у<-арр1у(1Ы,2,тт)/жш(1Ы) ёвиЫв тт = 0; foreach(DataGridViewЯow г т data-{ sum += Convert.ToDouble(r.Cells[0].Value); } MessageBox.Shсw(sum. ^З^щО);

ГСЧ

Я

с#

> )пс (п, р [1], р [2]...) Random rnd=new Random();

п-число данных г^.ЖХ^10);

^пс- закон вероятности

р-значение параметров закона

Закон Параметры

Гауссовское распределение г^ГШ^, mean=0, sd=1)

Экспоненциальное распределение rexp(n, rate=1)

Распределение Пуассона rpois(n, lambda)

Распределение Коши rcauchy(r, location=0, scale=1)

Распределение Стьюдента (1) г^П, df)

Распределение Фишера (К) г)(п, ф, ф)

Распределение Пирсона (X2 ) rchisq(n, ё))

Библиографический список

1. Третье поколение нейросетей: глубокие нейросети [Электронный ресурс] / MQL5. — Режим доступа: https://www.mql5.com/m/artides/П03#3_1 (дата обращения : 01.05.16).

2. R-FAQ (часто задаваемые вопросы) [Электронный ресурс] — Режим доступа: https://cran.r-project.org/doc/FAQ/R-FAQ.html#What-is-R_003f (дата обращения : 01.05.16).

i Надоели баннеры? Вы всегда можете отключить рекламу.