![RapidMiner logo](https://habrastorage.org/files/d42/23b/d0c/d4223bd0c0c74ec6b2c19163994571b6.png)
Помимо самого майнера есть ещё и сервер RapidMiner Server (ранее назывался RapidAnalytics, до версии 6) который может использоваться как репозиторий для хранения и выполнения процессов майнера (в том числе по расписанию), «шарить» соединения к источникам данных между пользователями, отдавать данные из процессов майнера как веб-сервис.
К нашему с вами сожалению, с 6 версии создатели майнера решили начать зарабатывать денежку на продажах этого ПО и сменили лицензию с AGPL на Business Source. Тем не менее 5 версия AGPL и мы можем её использовать свободно и без ограничений. Поэтому в статье будет рассмотрена именно она. Также отметим, что в шестой версии не так много новых операторов и функций (пожалуй самое интересно это поддержка облака), и для большинства задач хватит RapidMiner 5 Community.
Установка
Не так давно c официального сайта ссылки на скачивание RapidMiner 5 были удалены, поэтому соберем RM из исходного кода который возьмем в официальном проекте на гитхабе.
Для сборки RapidMiner'a из репозитория нам понадобится
- Установленные Java и JDK
- Apache Ant
- Git клиент
![Рабочее окно rapidminer](https://habrastorage.org/files/1ba/78f/8a0/1ba78f8a0a4a4957b21666abf33534c4.png)
git clone https://github.com/rapidminer/rapidminer-5.git
следующий шаг соберем проект
ant build
ant release.makePlatformIndependent
теперь запустим майнер
.\scripts\RapidMinerGUI.bat
для линукса соответственно
./scripts/RapidMinerGUI.sh
Перед вами откроется окно как на картинке справа. Нажимаем на New Process и идем дальше.
Основные понятия
Перед тем как на примере посмотреть основные принципы работы с RapidMiner сделаем небольшое введение в его основные понятия.
Процесс
Совокупность операторов соединенных между собой в заданном порядке для выполнения требуемой задачи анализа/обработки данных.
![RapidMiner process](https://habrastorage.org/files/4f3/af5/710/4f3af5710b9e42c7ae867f78e47a90bd.png)
Оператор
![RapidMiner Operator](https://habrastorage.org/files/ace/e40/68c/acee4068c91943f6a55cb2e9c67b7539.png)
В интерфейсе программы операторам соответствует вкладка Operators — где в иерархии они сгруппированы по функциональному признаку. Чтобы воспользоваться оператором необходимо нажать на него и перенести в рабочую область процесса.
Репозиторий
![](https://habrastorage.org/files/b01/8b0/729/b018b07297234900932d0e014ee3df66.png)
Во вкладе Repositories в RM тут можно увидеть только Samples, DB и Local Repository. Первое как уже понятно из название набор процессов — примеров, DB — текущие соединения к базам данных доступных в майнере (определяются через Tools -> Manage Database Connections) и Local Repository, место для хранения собственных процессов на компьютере.
Контекст процесса
![](https://habrastorage.org/files/816/f60/2bd/816f602bd53c46aba89f729974b02b8e.png)
- Process input — данные передающиеся на вход процесса. Тут можно указать путь к данными внутри репозитория.
- Process output — тут указывается путь в репозитории, куда будет сохранен результат работы процесса.
- Macros — это глобальная переменная доступная в процессе из любого места. Может принимать в качестве значения только строки или числа.
Отметим, что Process input и Process output обозначены в процессе кружками по границе процесса с надписями inp и res. Чтобы воспользоваться данными из входа или сохранить их нужно соединить соответствующий кружок с входом/выходом операторов.
Самое лучшее обучение — практика. Сделаем небольшой процесс на основе которого увидим основные принципы работы с майнером.
Небольшая задачка
Вы директор небольшой компании, которая занимается созданием сайтов, промышленным дизайном и т.д. Достаточно часто, ввиду большого количества заказов и недостатка сотрудников вы нанимаете фрилансеров из разных стран (т.к. клиенты со всего мира) и исправно вносите информацию о выполненных работах в эксель табличку указывая имя исполнителя, род работы, дату оплаты, сумму и валюту оплаты. В какой то момент вам захотелось получить сумму затрат, в рублях (на курс ЦБ), которую вы понесли в разбивке по видам работ на конкретную дату (более интересные случаи — разбивка по месяцам, сотрудникам остаются на собственные эксперименты).
![](https://habrastorage.org/files/af5/02c/6ff/af502c6ff47542f4973f591a0d5d2281.png)
![Открытие папки Нажмите для открытия диалогового окна выбора файла](https://habrastorage.org/files/ed3/284/53c/ed328453cca34c46ae49c38740b472aa.png)
Обратим внимание на нажатую кнопку
![](https://habrastorage.org/files/21b/411/260/21b41126047847d5a47f2b583939447d.png)
Выставляем параметры как на картинке справа и жмем на Edit list справа от data set meta data information снизу. Выставляем все как на картинке ниже
![](https://habrastorage.org/files/ed2/391/30f/ed239130fcd24f1faa602176e5663121.png)
Как можно догадаться тут мы выставляем названия колонок, галочка ставится, чтобы исключить или включить колонку из результата парсинга, тип и роль. Роли отличные от attribute могут понадобиться в майнинге, в обычном же случае они как правило не требуются.
Нажимаем Apply и переходим к следующему шагу. Добавим оператор Filter examples (Data Transformation -> Filtering), его вход соединим с выходом Read CSV, а выход с выходом процесса обозначенным кружочком и надписью res. У вас получится такая картина
![](https://habrastorage.org/files/14c/4fe/43e/14c4fe43e67047e9805bcd897cbb10d1.png)
![](https://habrastorage.org/files/486/8dc/5f6/4868dc5f635a406da017aa23bd364608.png)
![](https://habrastorage.org/files/5b2/099/553/5b20995535bf431b91032c7681ac0f00.png)
Так вкладка Context на данном шаге у вас будет выглядеть как на картинке справа. Макрос (напомню, т.е. глобальную переменную) мы определили и теперь воспользуемся им для фильтра записей по дате из нашего CSVшничка. Жмем на оператор Filter Examples выбираем в condition class attribute_value_filter и в parameter string пишем: date = %{date}. Слева мы указали название колонки по которой происходит фильтрация, по центру операция проверки на равенство и справа взятие значения из макроса.
Посмотрим, что получилось. Жмём на кнопочку запуска процесса
![](https://habrastorage.org/files/74b/666/9db/74b6669dbfbb4f548814a62feeb11808.png)
![](https://habrastorage.org/files/ddc/f0a/a80/ddcf0aa807e14b4bb84205ab62194399.png)
![](https://habrastorage.org/files/92a/899/439/92a89943926f470488d7fa07985c7ccd.png)
Первый результат получен, но нам хотелось бы видеть затраты в рублях по курсу ЦБ РФ. Переключаемся на Design Perspective нажатием на
![](https://habrastorage.org/files/d98/770/d55/d98770d55c994063b30ee4373f2ccfb6.png)
![](https://habrastorage.org/files/be5/f9d/7f4/be5f9d7f46a640469475c38e81dab626.png)
Где url: http://www.cbr.ru/scripts/XML_daily.asp?date_req=%{date}
Обратим внимание, что мы подставили макрос в параметр оператора.
Получить данные мы получим, но что-то должно их преобразовать в ExampleSet — т.е. таблицу с данными. В первом случае эту роль выполнял Read CSV, а сейчас как не трудно догадаться мы воспользуемся Read XML (Import -> Data -> Read XML). Тянем оператор, соединяем его вход с выходом оператора Open file и делаем следующие настройки (если вы испытываете трудности с xpath воспользуйтесь мастером импорта нажав наImport configuration wizard).
![](https://habrastorage.org/files/202/639/0b7/2026390b7db44748b84147c9f881d5c9.png)
Необходимо определить какие атрибуты RapidMiner возьмет для ExampleSet. Нажимаем на Edit enumeration справа отxpath for attributes, добавляем две записи
Value[1]/text() — стоимость в рублях единицы валюты
CharCode[1]/text() — буквенный код валюты
Теперь необходимо выставить типы значений для атрибутов. Для этого нажимаем на Edit list справа от data set meta datainformation и выставляем как на картинке ниже
![](https://habrastorage.org/files/bd0/999/532/bd099953288149ffa1733d73bc18dee5.png)
На данном этапе мы имеем процесс который у вас должен выглядеть так
![](https://habrastorage.org/files/06a/930/081/06a930081a9f489d9140bf21473c7fd4.png)
Пришло время сделать конвертацию валют в отфильтрованных по дате данным. Для этого, как можно догадаться, нам потребуется каким то образом объединить котировки и данные. В этом нам поможет оператор Join (Data Transformation -> Set Operations -> Join). Теперь делаем следующее. Берем выход оператора Filter examples, который на данный момент у нас соединен с выходом процесса и соединяем с оператором Join, делаем аналогичное с оператором Read XML.
![](https://habrastorage.org/files/309/7a9/3cf/3097a93cf57e4edc8c53e474147bffbe.gif)
Теперь нажмем на оператор Join и определим как именно будут объединятся данные. Убираем галочку use id attribute as key, так как объединение у нас происходит по полю currency, появится новый параметр key attributes нажмем слева от него наEdit list, в диалоге Add entry и в обоих полях пропишем — currency. Сохраняем изменения. Можем посмотреть, что получилось, аналогично тому как это делалось выше нажав на кнопочку
![](https://habrastorage.org/files/74b/666/9db/74b6669dbfbb4f548814a62feeb11808.png)
![](https://habrastorage.org/files/3cb/200/ea3/3cb200ea3ce4494a969867f23b115835.png)
Мы все ближе к заветной цели — узнать сколько же мы потратили в рублях на наши задачи. Остался последний штрих, собственно сама конвертация. Добавим в процесс оператор Generate Attributes (Data Transformation -> Attribute Set Reduction and Transformation -> Generation) и соединим его вход с выходом оператора Join, а первый выход около которого написано exp (сокращенно ExampleSet)к выходу процесса. Как понятно из названия оператора его задача добавить новый атрибут, для этого нажмем на оператор и справа в его настройках на Edit list, кнопка напротив function descriptions. Дадим название атрибуту и как его считать
![](https://habrastorage.org/files/317/c72/2d1/317c722d10fc43f0a214f86f7ab4dbba.png)
Сохраняем изменения и выполняем процесс, наш результат
![](https://habrastorage.org/files/852/076/cb8/852076cb8df34ca98d60a821cf3b08cb.png)
Ура! Вот она заветная цифра затрат в рублях которую мы понесли по курсу ЦБ на дату оплаты. Развить данную задачу можно очень далеко, к примеру сделать вывод информации за месяц, в группировке по типу работ, исполнителю или датам. В общем, простор фантазии.
Полезные материалы
Комментарии (6)
kypexin
31.10.2015 21:27Хочу отметить, что начиная с версии Studio 6.5 RapidMiner вернулся к концепции open source, и эта версия не имеет ограничений по памяти, как бесплатные предыдущие (6.0 — 6.4). А разница в возможностях между 5 и 6 версиями местами очень существенная.
volokhonsky
03.11.2015 10:33Я не очень понял, что этот RapidMiner должен заменять. Системы бизнес-аналитики вроде Tableau, QlickView?
Что там насчёт сервера? Допустим мне надо делать автоматически обновляющиеся на основании баз данных графики и предоставлять к ним доступ в интранете компании — это то средство, которое мне поможет?convex
04.11.2015 11:54Автор просто осветил только ETL-возможности RapidMiner, которые, так сказать, скорее на втором плане. На самом деле инструмент для Data Mining / Machine Learning больше. Вот, например, посмотрите: docs.rapidminer.com/studio/getting-started/3-creating-model.html
Хотя RapidMiner Server и позволяет строить отчеты, но BI полноценный он заменить не может.volokhonsky
04.11.2015 14:20О, спасибо! Тогда попробую пощупать, как оно. Я для аналогичной операции пользуюсь пакетом rpart в R. Судя по Вашей ссылке, в RapidMiner визуализация деревьев принятия решений выглядит довольно симпатично.
convex
04.11.2015 20:30Кстати, можете поставить R Extension и использовать свои наработки из RapidMiner
mickvav
Напомнило OpenDX