Познакомьтесь с набором R-project Toolkit в InfoSphere Streams

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

Среда InfoSphere® Streams призвана удовлетворить настоятельную потребность в платформах и архитектурах, способных обрабатывать огромные объемы потоковых данных в режиме реального времени. Популярный язык R широко используется специалистами в области статистики и углубленного анализа данных для разработки статистического ПО управления данными, статистических вычислений и графических отображений. Познакомьтесь с InfoSphere Streams R-project Toolkitt – мощным набором программных средств и пакетов, разработанных на языке R.

Шериф Сакр, старший научный сотрудник Австралийского национального института информационных и коммуникационных технологий, независимый специалист

Photo of Sherif SakrДоктор Шериф Сакр (Sherif Sakr) – старший научный сотрудник группы систем программного обеспечения в Австралийском национальном институте информационных и коммуникационных технологий (NICTA), г. Сидней. Также он совмещает должность старшего преподавателя школы компьютерных и технических наук в Университете Нового Южного Уэльса. В 2007 году Шериф получил докторскую степень в области компьютерных наук в Университете г. Констанца, Германия. Также имеет степени бакалавра и магистра компьютерных наук Каирского университета, Египет. В 2011 году занимал должность выездного научного работника группы Computing Group (XCG) подразделения Microsoft Research в Редмонде, штат Вашингтон. В 2012 году работал в штате исследователей корпорации Alcatel-Lucent Bell Labs.



12.02.2014

Обзор R Project

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

  • Набор операторов для вычислений с массивами и матрицами.
  • Большой, согласованный, интегрированный набор промежуточных инструментов для операций анализа данных.
  • Удобную и развитую среду языка статистического программирования S для анализа данных, который включает в себя условные операторы, циклы, определяемые пользователем рекурсивные функции и средства ввода/вывода.

R – это настоящий объектно-ориентированный язык программирования, такой же как C++ (и другие), где объектом может быть все что угодно: отдельное значение, переменная, наборы данных, списки нескольких типов объектов и т.д. R предоставляет разнообразные графические и статистические методы, такие как линейное и нелинейное моделирование, классические статистические испытания, анализ временных рядов, классификация, кластеризация и многое другое.

Язык R отличается хорошей расширяемостью. Пользователи могут писать новые функции и упаковывать их в R-пакет (или R-библиотеку). На практике стандартный дистрибутив R и сопутствующие пакеты образуют полностью функционирующую статистическую среду, в которой можно проводить любые виды стандартного и расширенного анализа. Кроме того, существует более 5300 пользовательских пакетов, предоставляющих огромное количество дополнительных возможностей. Вполне вероятно, столкнувшись с конкретным анализом, вы найдете для него готовый R-пакет.

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

Использование R в качестве калькулятора

Вводя в R простые арифметические выражения, можно выполнять математические расчеты.

Листинг 1. Использование R как калькулятора для сложения целых чисел
  > 1+2 
  ## [1] 3

Также можно использовать математические функции, такие как sqrt, exp и log.

Листинг 2. R как калькулятор для математических функций
  > log(0.3/(1-0.3)) 
  ## [1] -0.8472979

Кодирование структуры данных в R

R может работать с именованными структурами данных. Простейший такой структурой является числовой вектор, который представляет собой единый объект, состоящий из упорядоченного набора чисел. Чтобы создать вектор х, состоящий из пяти чисел (10.4, 5.6, 3.1, 6.4 и 21.7), используйте приведенную ниже команду.

Листинг 3. Создание вектора в R
  > x <- c(10.4, 5.6, 3.1, 6.4, 21.7)

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

Элементарные арифметические операторы – это обычные +, -, *, / и ^ для возведения в степень. Кроме того, доступны все общепринятые арифметические функции (log, exp, sin, cos, tan, sqrt) в их обычном понимании.

Функции:

  • max и min выбирают наибольший и наименьший элемент вектора соответственно.
  • range – это функция, значением которой является вектор из двух элементов, а именно c(min(x), max(x)).
  • length(x) – это число элементов в х, sum(x) – это сумма элементов, а prod(x) – их произведение.
  • Статистическая функция mean(x) вычисляет выборочное среднее; она эквивалентна выражению sum(x)/length(x).
  • var(x) вычисляет выборочную дисперсию – (sum((x-mean(x))^2)/(length(x)-1).
  • sort(x) возвращает вектор того же размера, что и х, с элементами, расположенными в порядке возрастания. Кроме того, существуют другие более гибкие возможности сортировки. Ниже приведен пример простой функции для получения среднего значения входного вектора х.
    Листинг 4. Вычисление среднего значения с помощью R
      mymean = function(x) {
      if (!is.numeric(x)) 
    	{
      	stop("Input Error")
      	}
      return(sum(x)/length(x))
      }
      
      myVar = 1:5
      mymean(myVar)
      ## [1] 3
    
      mymean("string value")
      ## Error: STOP! Can not be computed.

Описание всех деталей и возможностей языка R выходит за рамки данной статьи. За полной информацией обращайтесь к руководству по R Project (см. раздел Ресурсы).


R Project и InfoSphere Streams

Среда InfoSphere® Streams предназначена для выделения представляющих интерес закономерностей в движущейся информации (потоков данных) на временных промежутках от нескольких минут до нескольких часов. Ее бизнес-ценность состоит в том, что она обеспечивает анализ с низкой задержкой и лучшие результаты для чувствительных ко времени приложений, таких как обнаружение мошенничества или управление сетью. Бизнес-задачи, для решения которых предназначена InfoSphere Streams, принципиально отличаются от задач, обычно решаемых с помощью реляционных баз данных, стандартных платформ ETL (извлечение, преобразования, загрузка) или платформ пакетного анализа, таких как Hadoop.

R-проект Toolkit в InfoSphere Streams

InfoSphere Streams – это передовая вычислительная платформа, которая позволяет пользовательским приложениям быстро получать, анализировать и сопоставлять информацию по мере поступления данных из тысяч источников в режиме реального времени с очень высокой скоростью (миллионы событий или сообщений в секунду). Она включает в себя набор R-project Toolkit, который позволяет применять сложные алгоритмы углубленного анализа для выявления представляющих интерес закономерностей в потоках данных. Познакомьтесь с дополнительной информацией и загрузите ознакомительную версию.

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

В противоположность этому, в среде InfoSphere Streams нет необходимости хранить данные постоянно. Обычно ожидается, что предполагаемый объем данных будет настолько велик, что хранить его постоянно будет невозможно. Поэтому InfoSphere Streams позволяет создавать приложения, способные принимать огромные объемы данных, анализировать их с низкой задержкой и преобразовывать в отчеты в режиме реального времени (или близком к реальному времени).

Запросы в InfoSphere Streams определяются потоковыми приложениями и выполняются непрерывно, пока пользователь не отменит их. Потоковое приложение – это набор операторов, связанных потоками:

  • Потоковое приложение определяет, как следует анализировать набор потоковых данных.
  • Оператор – это компонент функциональности обработки, который принимает один или несколько потоков в качестве входных данных, обрабатывает кортежи и атрибуты в потоках, а также создает один или несколько потоков на выходе.
  • SPL – язык программирования для InfoSphere Streams, представляющий собой язык обработки распределенных потоков данных. Это расширяемый полнофункциональный язык, подобный C++ или Java™, который поддерживает пользовательские типы данных. Пользователь может писать собственные функции на SPL или на нативном языке (C++ или Java). Можно также писать определяемые пользователем операторы на C++ или Java.

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

  • Mining Toolkit позволяет анализировать данные в потоковом приложении в режиме реального времени. В Streams Mining Toolkit анализ предполагает (и использует) заранее заданную модель. Поддерживаются разные виды моделей и алгоритмы анализа, такие как классификация, регрессия, кластеризация и ассоциация.
  • Financial Services Toolkit обеспечивает конкурентные преимущества финансовым учреждениям.
  • Database Toolkit предоставляет средства подключения потоковых приложений к различным источникам данных, таким как solidDB, Netezza, DB2® и Oracle.
  • Internet Toolkit предоставляет средства для извлечения с помощью HTTP текстовых данных из удаленных источников и генерирования из них входного потока.

InfoSphere Streams 3.1 поддерживает R-аналитику, что позволяет выполнять R-анализ в нативном формате, используя преимущества масштабируемости и параллелизма InfoSphere Streams для достижения исключительной производительности. Поддержка R расширяет аналитические возможности семейства InfoSphere Streams. В следующих разделах приводится описание набора R-project Toolkit в InfoSphere Streams.


Набор R-project Toolkit

Набор R-project Toolkit предоставляет оператор, облегчающий интеграцию InfoSphere Streams и среды R. Краеугольным камнем этого набора является оператор RScript, позволяющий вызывать пользовательский R-сценарий при каждом поступлении кортежа в указанный порт ввода.

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

Как работает оператор RScript

Когда кортеж поступает на указанный входной порт, оператор на основании параметра streamAttributes отображает кортеж ввода на объекты, указанные в параметре rObjects. Оператор запускает сценарий, указанный в параметре rScriptFileName, и обрабатывает результаты. Оператор использует специальную функцию вывода fromRvalues для отображения значений, созданных операторами вывода в R-сценарии, на атрибуты кортежа вывода.

Оператор поддерживает дополнительный порт ввода и принимает атрибут rstring, указывающий имя R-сценария. Этот сценарий выполняется один раз. Его можно использовать для обновления или замены аналитического кода в сценариях инициализации или обработки. Например, можно выполнять команды R, которые обновляют модель анализа, или менять определение функции R. Оператор также поддерживает дополнительный порт вывода, используемый для сбора информации об ошибках, возникающих во время работы R-сценария. Кроме того, оператор получает следующие параметры:

  • rScriptFileName предоставляет информацию о пути к R-сценарию, выполняющемуся для каждого входящего кортежа.
  • streamAttributes описывает список выражений, используемых для отображения на R-объекты, используемые в R-сценарии.
  • rObjects предоставляет список строк с именами объектов R, который будет создан до выполнения R-сценария. Необходимо соответствие 1:1 с параметром streamAttributes.
  • initializationScriptFileName (необязательный) предоставляет путь к R-сценарию при инициализации оператора.
  • rCommand (необязательный) позволяет указать другие путь и параметры при вызове командной строки R.

Оператор RScript поддерживает все примитивные типы данных SPL (целые, строковые, двойной точности и времени). Кроме того, он может обрабатывать отображение между типами данных SPL и векторами R.

Оператор RScript в действии

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

Листинг 5. RScript в действии: суммирование целых чисел
 stream<int32 a, int32 b, int32 c< analyzedStream =
 	RScript(inStream) {
 	param
 		rScriptFileName : "../process.r" ;
 		streamAttributes : a, b;
 		rObjects : "in1", "in2";
 	output
 		analyzedStream:
			c = fromR("out1");
 }

В приведенном выше коде process.r – это R-сценарий, который получает два параметра (a и b) после отображения их на параметры in1 и in2. Возвращенный из R-сценария параметр out1 отображается на параметр с.

Следующий код – еще один пример, иллюстрирующий использование линейной модели для прогнозирования влияния удобрений на рост растений.

Листинг 6. RScrip в действии: применение модели прогнозирования
 stream<int32 identifier, float64 fert, float64 sizeChange,
 	rstring modelSource< analyzedStream = RScript(inStream) {
 	param
 		initializationScriptFileName : "../init.r";
 		rScriptFileName : "../process.r" ;
 		streamAttributes : fert;
 		rObjects : "f";
 	output
 		analyzedStream:
 			sizeChange = fromR("growth"),
}

В приведенном выше коде сценарий init.r выполняется один раз при запуске оператора. Он создает подключение к входным данным и линейной модели growthModel.

 growthData <- read.csv(file="../growthMonday.txt", sep=' ', header=TRUE)
 attach(growthData)
 growthModel = lm(height~fertilizer)

Сценарий process.r выполняется при каждом поступлении кортежа в указанный порт ввода. Количество удобрений вводится с помощью объектов in1 и in2. Использующий линейную модель сценарий выводит прогнозируемый рост с помощью объекта (growthModel).

 onerow <- list(fertilizer = f)
 growth = predict(growthModel,onerow)

Заключение

Основная задача платформы IBM Big Data – помочь компаниям в обработке, анализе и оптимальном использовании больших данных. InfoSphere Streams, программная платформа IBM для хранения и обработки потоковых данных, обеспечивает интеграцию с новыми программными пакетами R Project, обладающими мощными возможностями управления данными, статистических вычислений и графического отображения. Если вы готовы начать работу с различными наборами инструментальных средств InfoSphere Streams, обратитесь к разделу Ресурсы, где приведены ссылки на бесплатные учебные материалы и программное обеспечение.

Ресурсы

Научиться

Получить продукты и технологии

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Information Management
ArticleID=962408
ArticleTitle=Познакомьтесь с набором R-project Toolkit в InfoSphere Streams
publish-date=02122014