Содержание


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

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

Comments

Обзор 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.

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

В противоположность этому, в среде 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, обратитесь к разделу Ресурсы, где приведены ссылки на бесплатные учебные материалы и программное обеспечение.


Ресурсы для скачивания


Похожие темы


Комментарии

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

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