2008 г.
Байесовский классификатор и регрессионная модель в ORTD: практический пример
Антон Шмаков, старший консультант отдела
бизнес-анализа
и хранилищ данных
Консалтинговая
группа «Борлас» (Москва)
Источник: Oracle Magazine - Русское издание
Введение
Oracle
Real Time
Decisions (ORTD)
– специальный инструмент от компании
Oracle, предназначенный для
автоматизации принятия решений в режиме
реального времени (ранее об этом продукте
была опубликована статья «Глубинный анализ данных в режиме
реального времени: Oracle Real Time Decisions»).
Он позволяет строить сложные прогностические
модели, опираясь на анализ исторических
и оперативных данных. Кроме мощного
аналитического движка, ORTD
предоставляет бизнес-пользователям и
разработчикам полную инфраструктуру
как для построения моделей, так и для
их повседневного исполнения.
В
статье «Решения «растут» на
деревьях» (Decisions
Grow
on
Trees,
by
Ron
Hardman)
описывается конкретный тип классификации
данных, называемый деревья решений.
Этот метод был не так давно реализован
в продукте Oracle
Data
Miner
(ODM).
Результаты его работы легко воспринимаются
визуально и могут быть легко объяснены
в бизнес-терминах.
В
этой статье мы хотели бы познакомить
читателей с ORTD
на практическом уровне. В ней описывается
весь путь от установки и настройки ORTD
и до создания проекта и получения
практических результатов. В качестве
бизнес задачи предлагается взять пример
из уже упоминавшейся статьи «Решения
«растут» на деревьях». Следует
отметить, что в Real
Time
Decisions
реализованы Байесовский классификатор
и регрессионная модель, деревья решений
в нем не реализованы. Мы построим
небольшой тестовый проект в ORTD,
целью которого будет продемонстрировать
работу в ORTD
и сравнить результаты работы Байесовского
классификатора в Real
Time
Decisions,
с деревьями решений в ODM.
Постановка задачи
Рассмотрим
бизнес ситуацию. Производитель предлагает
два продукта, А и B.
Относительно них имеется очень скудная
информация, а именно тип продукта
(PRODUCT),
версия продукта (VERSION),
время его последней модификации
(LAST_UPGRADE_YEAR)
и отзыв покупателей (FEEDBACK).
Производитель хочет, во-первых, узнать
как связаны отзывы покупателей с
характеристиками продукта и, во-вторых,
построить модель для прогнозирования
будущих отзывов. В упоминаемой статье
автор строит модель классификации на
основе деревьев решений в Oracle
Data
Miner.
Мы же попробуем построить Байесовскую
модель в Oracle
Real
Time
Decisions,
c
помощью которой мы сможем проанализировать
входные данные.
Как начать работать в ORTD
I. Установка Oracle Real Time Decisions
- Скачать
дистрибутив
Oracle Real Time Decisions с
сайта
Oracle
-
Разархивировать (Unzip)
его, найти файл rtd_2.2_OC4J_win.zip
и разархивировать его в папку, которая
будет RTD_HOME
(например: С:\Oracle\RTD)
-
Подключиться к SQL*Plus
под SYSDBA
и выполнить следующие команды.
SQL>create user rtd identified by rtd;
SQL>grant resource,connect to rtd;
-
Установить схему с метаданными в rtd.
Перейти в папку RTD_HOME/scripts
и запустить SDDBTool.cmd
-
Ввести информацию и нажать кнопку Next
-
Выбрать Initialize.
-
Далее для установки необходимо, чтобы
у вас был установлен OC4J.
Его можно установить либо отдельно,
либо он входит в состав Oracle
Business
Intelligence
EE
Basic Installation (BI_EE_HOME/oc4j_bi).
Далее OC4J_HOME
– папка, куда установлен OC4J.
Поскольку
администрирование ORTD
осуществляется в JConsole
через JMX
протокол, надо настроить его поддержку
в OC4J.
-
Найти файл OC4J_HOME/bin/oc4j.cmd
открыть его на редактирование, найти
строку начинающуюся с :oc4j
и добавить после нее следующий код:
set JVMARGS=%JVMARGS% -Dcom.sun.management.jmxremote=true
set JVMARGS=%JVMARGS% -Dcom.sun.management.jmxremote.port=12345
set JVMARGS=%JVMARGS% -Dcom.sun.management.jmxremote.authenticate=true
set JVMARGS=%JVMARGS% -Dcom.sun.management.jmxremote.ssl=false
Для
удобства настроим ORTD
на отдельный порт 8080.
-
Найти файл OC4J_HOME/j2ee/home/config/default-web-site.xml,
скопировать в его в ту же директорию с
новыми именем rtd-web-site.xml.
Затем в файле rtd-web-site.xml
сделать следующие изменения и сохранить:
- Заменить
внутри тега <web-site>
значение атрибута port
на 8080
- Заменить
внутри тега <web-site>
значение атрибута display-name
на OC4J
10g
RTD
Web
Site
- Удалить
все теги <web-app>
- Заменить
внутри тега <access-log>
значение атрибута path
на ../log/rtd-web-access.log
Скриншот 2
-
Найти файл OC4J_HOME/j2ee/home/config/server.xml
открыть его на редактирование, добавить
после строки
<web-site default="true" path="./default-web-site.xml" />
строку
<web-site default="true" path="./rtd-web-site.xml"
/>.
-
Найти (JAVA_HOME
– папка с JDK,
которая используется для запуска OC4J)
JAVA_HOME/jre/lib/management/jmxremote.password
(если такого файла нет, создать его
скопировав из jmxremote.password.template)
и раскомментировать строчки:
monitorRole QED
controlRole R&D
-
Зайти в свойства файла, далее
Безопасность->Дополнительно->Разрешения.
Убрать галку с «Наследовать от
родительского объекта…». Удалить
все разрешения кроме разрешения для
владельца файла, которого можно найти
на закладке Владелец.
Скриншот 3
-
Запустить
OC4J сервер
командой
OC4J_HOME/bin/oc4j.cmd
–start
-
Зайти в консоль управление OC4J
по адресу http://oc4j_host:port/em
(Для отдельного OC4J
порт будет 8888, для Oracle
BI
EE
порт будет 9704.) администратором.
Для
корректной работы ORTD
надо настроить JDBC
источники в OC4J
для схемы с метаданными.
-
Перейти на закладку Administration
и затем в JDBC
Resources.
В разделе Connection
Pools
нажать на Create.
-
Ввести следующие значения, остальные
оставить без изменения и нажать кнопку
Apply
-
Свойство |
Значение |
Application |
Default |
Connection
Pool Type |
New
Connection Pool |
Name |
RTDConnectionPool |
Connection
Factory Class |
Oracle.jdbc.driver.OracleDriver |
URL |
Ваша
строка соединения к базе данных |
Username |
rtd |
Password
(Use Cleartext Password) |
rtd |
Скриншот 4
Скриншот 5
-
Нажать на копку Create
в разделе Data
Sources
-
Ввести следующие значение, остальные
оставить без изменения и нажать кнопку
Finish
-
Свойство |
Значение |
Application |
Default |
Data
Source Type |
Managed
Data Source |
Name |
RTD_DS |
JNDI
Location |
jdbc/SDDS
(жестко
прошито
в
ORTD) |
Connection
Pool |
RTDConnectionPool |
Скриншот 6
Скриншот 7
-
Проверить, что созданные соединения,
нажав на Test
Connection.
-
Перейти по адресу http://oc4j_host:port/em
и затем на закладку Applications.
Теперь
можно «задеплоить» приложение
ORTD
на сервер.
-
Нажать на копку Deploy
-
Выбрать архив из RTD_HOME/package/RTD.ear
и нажать Next.
Скриншот 8
-
Выбрать значения и нажать Next
-
Свойство |
Значение |
Application
Name |
OracleRTD |
Parent
Application |
default |
Bind
Web Module to Site |
rtd-web-site |
Скриншот 9
-
Нажать
Deploy
-
Oracle Real Time Decisions доступен
по
адресу
http://oc4_host:8080/ui
Создадим
и
настроим
схему
SURVEYS из
статьи
«Решения
«растут»
на
деревьях»
(Decisions Grow on Trees, by Ron Hardman). Кроме
того, зарегистрируем ее в JDBC
источниках в OC4J,
чтобы мы могли работать с ней в Real
Time
Decisions.
II. Настройка схемы SURVEYS
-
Скачать
файл
sample
data file.
-
Разархивировать его и перейти к папке,
содержащей скрипт create_user.sql
-
Подключиться к SQL*Plus
под SYSDBA
и выполнить скрипт create_user.sql
-
Зайти в консоль управление OC4J
по адресу http://oc4j_host:port/em
администратором.
Настроим
дополнительный JDBC
источник для схемы Survyes.
-
Перейти на закладку Administration
и затем в JDBC
Resources.
В разделе Connection
Pools
нажать на Create.
-
Ввести следующие значения, остальные
оставить без изменения и нажать кнопку
Apply
-
Свойство |
Значение |
Application |
Default |
Connection
Pool Type |
New
Connection Pool |
Name |
SurveysConnectionPool |
Connection
Factory Class |
oracle.jdbc.driver.OracleDriver |
URL |
Ваша
строка соединения к базе данных |
Username |
surveys |
Password
(Use Cleartext Password) |
surveys |
-
Нажать на копку Create
в разделе Data
Sources
-
Ввести следующие значение, остальные
оставить без изменения и нажать кнопку
Finish
-
Свойство |
Значение |
Application |
Default |
Data
Source Type |
Managed
Data Source |
Name |
SURVYES_DS |
JNDI
Location |
jdbc/SURVEYSDS |
Connection
Pool |
SurveysConnectionPool |
-
Проверить, что созданные соединения,
нажав на Test
Connection.
-
Перейти
в
папку
OC4J_HOME/j2ee/home/applications/OracleRTD
- Найти
файл ./rtis/WEB-INF/web.xml
и вставить в конец перед тегом </web-app>
следующий текст
<resource-ref
id="SURVEYSDS_RTIS">
<res-ref-name>SURVEYSDS</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Unshareable</res-sharing-scope>
</resource-ref>
- Аналогичным
образом найти и изменить файл
./soap/WEB-INF/web.xml.
Только в качестве id
теперь будет SURVEYSDS_Axis
- Перейти
в
папку
OC4J_HOME/j2ee/home/application-deployments/OracleRTD
- Найти
файл ./rtis/WEB-INF/orion-web.xml
и добавить после строки
<resource-ref-mapping
name="SDDS" location="jdbc/SDDS" />
строку
<resource-ref-mapping
name="SURVEYSDS" location="jdbc/SURVEYSDS" />
- Аналогичным
образом найти и изменить файл
./soap/WEB-INF/orion-web.xml.
- Перезапустить
OC4J.
Итак,
теперь, у нас есть полностью настроенный
Oracle
Real
Time
Decisions
и мы можем приступить к созданию проекта.
Настройка
Oracle
Real
Time
Decisions
осуществляется через стандартный
инструмент Java
JConsole,
работающий через JMX
протокол.
III. Настройка доступа в Oracle Real Time Decisions.
-
Открыть
JAVA_HOME/bin/jconsole.exe
-
Если у вас запущен OC4J,
то jconsole
найдет его, и он будет в списке доступных
соединений.
-
Нажать Connect
Из
всех закладок самая важная для нас –
это MBeans,
поскольку MBeans
и протокол JMX
позволяют читать и устанавливать
атрибуты, вызывать операции (методы)
MBean,
подписываться и получать нотификации.
-
Перейти на закладку MBeans
и раскрыть в дереве OracleRTD.
-
Открыть SDClusterPropertyManager->SecurityManager
Включим
поддержку аутентификации средствами
самого Oracle
Real
Time
Decisions.
-
Справа откроются свойста, поставить
true
в строке AuthenticationEnabled,
проверить, что в строке
AuthenticationProviderClass
стоит com.sigmadynamics.server.security.DBAuthenticator
Скриншот 11
Создадим
администратора
-
Выбрать в дереве, SDManagement->SecurityManager
и затем справа закладку Operations.
-
В строке с кнопкой createUser
вписать значения username
– admin,
description
– admin,
password
– admin
и нажать кнопку .
Скриншот 12
-
В строке с кнопкой assignPermission
вписать userOrGroup
– admin,
permCode
– 0 и нажать кнопку.
Скриншот 13
Вся
разработка для Real
Time
Decisions
ведется в Decision
Studio,
специальном инструменте, построенном
на основе движка Eclipse.
IV. Создание проекта в Oracle Real Time Decisions
-
Открыть
Decision Studio из
RTD_HOME\eclipse\eclipse.exe.
Начать
новый
проект,для
этого
выбрать
в
меню
File > New > Inline Service Project.
-
Ввести название для проекта Surveys
и выбираем Basic
Template
в качестве шаблона. (По умолчанию файлы
с проектом располагаются в директории
C:\Documents
and
Settings\WIN_USER\Oracle
RTD
Studio\Surveys)
Скриншот 14
Интерфейс
Decision
Studio
устроен следующим образом.
Скриншот 15
-
Справа в Проводнике проекта появляется
созданный нами проект Surveys.
Открыть
элемент
Surveys > Service Metadata > Application. Это
основной объект, в котором содержится
вся информация о проекте. Ввести описание
для проекта и перейти на закладку
Permissions.
Скриншот 16
Для
того, чтобы можно было заходить в проект
из Decision
Studion
(Web-приложение
для конечного пользователя, необходимо
дать доступ пользователя к проекту.
-
В
разделе
User or Groups нажимаем
Add и
далее
Select Server. В
появившемся окне вводим имя хоста и
номер порта, где установлен RTD,
а также имя пользователя “admin”
и пароль “admin”.
Нажимаем Connect
и возвращаемся обратно в окно добавления
пользователей.
-
Нажать галочку Show
Users
и затем кнопку Get
Names.
В таблице появится созданный нами ранее
пользователь admin.
Выбрать его нажать OK.
-
Выбрать пользователя admin
и нажать в столбец Granted
напротив строк Deploy
Service
from
Studio
и Download
Service.
После этого все 4 строчки должны быть
помечены.
Скриншот 17
На
предыдущих шагах, мы настроили в OC4J
и ORTD
поддержку нашего источника данных
Surveys
Data
Source.
-
Настроим источник информации для
проекта. Нажать правую кнопку мыши на
элементе Surveys
> Service
Metadata
> Data
Sources
и выбрать New
SQL
Data
Source
-
Ввести
название
Surveys Data Source
- Справа откроется
окно со свойствами, нажать кнопку Import.
-
Свойства сервера должны совпадать с
настроенными нами ранее при импорте
пользователя admin,
нажать Next
-
Выбрать
SURVEYSDS в
качестве
JDBC Data Source и
таблицу
CUSTOMER_SATISFACTION и
нажать
Finish.
- Все колонки таблицы
появятся в Output.
- Перенести
колонку
Input Customer_Satisfaction_Id
направо в input
Скриншот 18
К
этому моменту мы создали новый проект,
настроили доступ пользователя admin
к нему, настроили источник данных из
схемы Surveys.
Теперь настроим основную логику работы.
Создадим
сущность, описывающую событие, что
конкретный продукт получил или
положительную или отрицательную оценку.
-
Нажать правую кнопку мыши на элементе
Surveys
> Service
Metadata
> Entities
и выбрать New
Entity
-
Ввести название Satisfaction
-
Нажать на кнопку Import
и выбрать в качестве источника Surveys
Data
Source
-
В таблице появится список полей из
таблицы
-
Нажать
кнопку
Add Key, ввести
Display Label – Id, Data Type – Integer. Созданный
ключ появится в таблице с полями.
Скриншот 19
-
Перейти на закладку Mapping.
В
таблице поля, которые были импортированы,
автоматически настроены на источник
Surveys
Data
Source.
Созданное нами поле Id
не имеет привязки к источнику. Нам надо
привязать созданный нами атрибут на
входные атрибуты.
-
В
таблице
Data Source Input Values нажать
на
поле
в
Input Value на
поле
CUSTOMER_SATISFACTION_ID.
-
Выбрать
Attribute or variables и
сущность
Satisfaction, поле
Id.
-
Выбрать
File > Save All
Во
всех проекта Real
Time
Decisions
есть специальная сущность Session,
которая создается при открытии новой
сессии к серверу. Нам надо связать
сущность Session
с только что созданной сущностью
Satisfaction
-
Открыть
Surveys > Service Metadata > Entities > Session
-
Нажать
Add Attribute, ввести
название
Satisfaction, выбрать
Data Type – Other, затем
Entity Types и
Satisfaction
-
Нажать
Select в
около
Session Keys from Dependent Entities и
выбрать
Session > Satisfaction > Id
Скриншот 20
Для
построения анализа зависимостей оценки
типа продукта, его версии и год обновления
, надо создать группу возможных оценок
продукта.
-
Нажать правую кнопку мыши на элементе
Surveys
> Service
Metadata
> Choices
и выбрать New
Choice
Group,
ввести название Feedback.
-
На
закладке
Choices Attributes нажать
Add, ввести
название
code, Data Type – String
C
помощью атрибута code,
будем определять оценку, которую получает
той или иной продукт. Создадим сами
оценки.
-
Нажать правую кнопку мыши на элементе
Surveys
> Service
Metadata
> Choices
> Feedback
и выбрать New
Choice
-
Ввести имя NEGATIVE,
на закладке Attributes
Values
ввести значение в поле Attribute
Value
для атрибута code
– NEGATIVE
Скриншот 21
-
Аналогичным
образом,
нажать
правую
кнопку
мыши
на
элементе
Surveys > Service Metadata > Choices > Feedback и
выбрать
New Choice
-
Ввести
имя
POSITIVE, на
закладке
Attributes Values ввести
значение
в
поле
Attribute Value для
атрибута
code – POSITIVE
Перейдем
к созданию модели для поиска зависимостей
между оценками продукта и его
характеристиками.
-
Нажать правую кнопку мыши на элементе
Surveys
> Service
Metadata
> Models
> Feedback
и выбрать New
Choice
Model
-
Ввести название FeedbackAnalysis,
на закладке Choice
выбрать Choice
Group
– Feedback
Скриншот 22
Необходимо
исключить саму оценку из анализа
зависимостей.
-
На
закладке
Attributes в
разделе
Excluded Attributes нажать Select и
выбрать
Session > Satisfaction > Feedback
Теперь
создадим простейший информатор, который
будет добавлять новые прецеденты к
модели анализа FeedbackAnalysis
-
Нажать
правую
кнопку
мыши
на
элементе
Surveys > Service Metadata > Integration Points > Informants
и
выбрать
New Informant, ввести
название
Process
Для
работы информатора надо выбрать Session
Key
и ввести логику его работы.
-
Нажать
Select в
Session Keys, выбрать
Satisfaction / Id
-
Ввести 0 в поле Order,
убрать галку с Force
Session
Close
и перейти на закладку Logic
Скриншот 23
На
закладке Logic
вводится вся логика работы информатора.
Логика пишется на языке Java.
Список всех методов можно посмотреть
в документации. Для обращения к созданным
сущностям и объектам, используется
стандартная нотация. Поскольку в Real
Time
Decisions
есть сущность по умолчанию Session,
то мы можем обратиться к ней всегда.
Кроме того, на предыдущих шагах, мы
связали Сущность Session
c
сущностью Satisfaction.
-
Ввести следующий код
Скриншот 24
Теперь
создадим еще одного информатора, который
будет закрывать сессию.
-
Нажать
правую кнопку мыши на элементе Surveys
> Service
Metadata
> Integration
Points
> Informants
и выбрать New
Informant,
ввести название End
-
Аналогичным образом выбрать Session
Key
– Satisfaction
/ Id
-
Поставить Order
– 1 и галку Force
Session
Close,
которая означает после отработки этого
информатора сессия будет закрываться.
-
На закладке Logic
ввести logInfo(“Close”);
Остается
последний шаг, указать модели анализа
выбора FeedbackAnalysis,
где осуществляется добавление нового
прецедента.
-
Открыть
Surveys > Service Metadata > Models > FeedbackAnalysis
-
Перейти
на
закладку
Learn Location, выбрать
On Integration Point, нажать
Select и
выбрать
Process.
Скриншот 25
-
Выбрать
File > Save All
После
того, как мы создали все необходимые
структуры, для того чтобы их протестировать
, необходимо «задеплоить» проект
на сервер, для этого надо выбрать в меню
Project >
Deploy. Затем
выбрать
проект
Survyes, ввести
название
Inline Service – Surveys, Deploymeny State – Development,
отметить
Terminate active sessions и
нажать
Deploy.
Если
все было сделано правильно, то проект
удачно «отдеплоится» на сервер и
может приступать к тестированию. Если
возникнут ошибки, то их список можно
посмотреть, выбрав в меню Windows
> Show View > Problems.
Для
тестирования необходимо выбрать Windows
> Show
View
> Test.
Скриншот 27
В
Integration Point надо
выбрать
Process, тогда
в
таблице
Request Inputs появится
одно
поле
Id. Введем
значение 25 и нажмем справа вверху на
кнопку Execute
Request.
Сервер выполнит наш запрос и запишет
результаты в лог. Откроем закладку Log.
Скриншот 28
Сервер
сделает запрос к таблице CUSTOMER_SATISFACTION
по указанному Id,
возьмем все характеристики по продукту,
и запишет в модель анализа FeedbackAnalysis
положительный или отрицательный отзыв.
Для
того, чтобы не перебирать руками все
записи в таблице CUSTOMER_SATISFACTION,
для построения модели анализа. В состав
Oracle
Real
Time
Decisions
входит специальный инструмент для
моделирования работы системы. Называется
он Oracle
RTD
Load
Generator
и находится RTD_HOME/scripts/loadgen.cmd.
Запустим его.
V. Моделирование работы системы
-
Нажать
Create new Load Generator Script
-
Перейти на закладку General
и ввести следующую информацию
-
Свойство |
Значение |
Client
Configuration File |
RTD_HOME/client/clientHttpEndPoints.properties |
Graphs
Refresh Interval in Seconds |
1 |
Inline
Service |
Surveys
(мы указывали название, когда деплоили
проект на сервер) |
Random
Number Generator Seed |
-1 |
Think
Time |
Fixed
Global Think Time |
Constant |
0 |
Number
of Concurrent Scripts to Run |
1 |
Maximum
Number of Scripts to Run |
4920 |
Enable
Logging |
Убрать
галку |
-
Перейти на закладку Variables,
выбрать Script,
нажать правую кнопку мыши и выбрать Add
Variable
-
Ввести
название
var_Id, Contents – Integer Range, Minimum – 1, Maximum – 4920,
Access Type – Sequential
Скриншот 29
-
Перейти на закладку Edit
Script
-
Нажать правую кнопку мыши на белом фоне
и выбрать Add
Action
-
Ввести следующую информацию
-
Свойство |
Значение |
Type |
Message |
Integration
Point |
Process
(Точное название, как он называется
в проекте) |
Inline
Service |
Surveys
(мы указывали название, когда деплоили
проект на сервер) |
Is
Asynchronous |
Не отмечен |
-
В таблице Input
Fields
добавить новое поле, поставить галку
на Session
Key,
Name
– id,
выбрать Variable
- var_Id.
Скриншот 30
-
Аналогично добавить еще один шаг в
скрипт, нажать правую кнопку мыши на
белом фоне и выбрать Add
Action
-
Ввести следующую информацию
-
Свойство |
Значение |
Type |
Message |
Integration
Point |
End
(Точное название, как он называется
в проекте) |
Inline
Service |
Surveys
(мы указывали название, когда деплоили
проект на сервер) |
Is
Asynchronous |
Не отмечен |
-
В таблице Input
Fields
добавить новое поле, поставить галку
на Session
Key,
Name
– id,
выбрать Variable
- var_Id
-
Можно сохранить настроенную конфигурацию
в файл.
Построенная
нам скрипт будет генерит последовательно
id
с 1 по 4920 и вызывать шаги Process
и End,
моделируя работу оператора, который
вводит информацию об отзывах о продуктах.
Запустим
выполнение построенного нами скрипта.
Скриншот 31
Если
все было сделано правильно, то в поле
Total
Finished
Scripts
будет стоять 4920, а в поле Total
Errors
– 0. Это означает, что все запросы были
успешно обработаны сервером Real
Time
Decisions.
VI. Просмотр результатов
Чтобы
посмотреть результаты, надо зайти в
Decision Center - приложение для среды J2EE,
которое обеспечивает доступ к проекту
через Web и позволяет бизнес пользователям
просматривать и администрировать
проекты, следить за работой всей системы,
собирать статистику. На сегодняшний
момент корректно Decision
Center
работает только с Internet
Explorer.
-
Зайти по адресу http://oc4j_host:8080/ui,
и ввести имя пользователя и пароль
admin/admin
-
Выбрать
Open Inline Service и
далее
Surveys
После
этого открывается интерфейс Decision
Center,
слева отображается дерево объектов
системы, которые можно анализировать.
-
Выбрать
Surveys (Development) в
дереве,
затем
справа
выбрать
Interactive Integration Map.
На
Integration
Map
отображается вся информация о логике
работы системы, в ней присутствуют все
объекты взаимодействия: информаторы
(Informants)
и советчики (Advisors).
В ней можно интерактивно выполнять тот
или иной объект, указывая его входные
параметры. В нашем тестовом проекте мы
ввели только два информаторы Process,
которые записывает очередную реакцию
на продукт в модель FeedbackAnalysis
и End,
который закрывает сессию.
Скриншот 32
-
Выбрать
Surveys > Decision Process > Feedback
Ветка
Decision
Process
является для нас наиболее важной, потому
что именно там, находится вся информация
о построенной модели для анализа отзывов
покупателей.
-
Выбрать закладку Performance
Скриншот 33
Мы
увидим общую информацию по группе
выборов Feedback,
сколько было положительных и отрицательных
отзывов.
-
Перейти на закладку Analysis
Скриншот 34
На
этой закладке выводится общая информация
по прогнозированию значений атрибутов.
Мы видим, что наилучшие прогноз получается
на негативных отзывах (NEGATIVE),
причем наибольшую влияние на отзыв
оказывает атрибуты LAST_UPGRADE_YEAR,
VERSION,
PRODUCT.
-
Перейти в дереве слева в NEGATIVE
или POSITIVE
и затем на закладку Analysis
-
На закладке Best-fit
указаны атрибуты и их значения, которые
наиболее сильно влияют на отзыв покупателя
или наибольшим образом коррелированны
с отзывом.
Скриншот 35
Для
NEGATIVE
мы видим, что наибольшая корреляция
наблюдается с LAST_UPGRADE_YEAR
= 1991, VERSION
= 1 и PRODUCT
= A
(в порядке степени корреляции)
Скриншот 36
В
то время как для POSITIVE
наиболее характерно VERSION
= 3, LAST_UPGRADE_YEAR
= 2006 и PRODUCT
= B
(в порядке степени корреляции).
-
Перейти на закладку Drivers
Скриншот 37
Для
NEGATIVE
указано, качество предсказания 83%, причем
по LAST_UPGRADE_YEAR
качество, даже выше, чем вся модель –
85%.
-
Нажать
на
ссылку
Satisfaction LAST_UPGRADE_YEAR
Скриншот 38
Получим,
что негативные отзывы наиболее сильно
коррелированны со следующими значениями
атрибута LAST_UPGRADE_YEAR:
1999, 2001, 2002 (в порядке степени влияния).
Скриншот 39
Для
позитивных отзывов получим следующее
распределение по атрибуту LAST_UPGRADE_YEAR
Скриншот 40
Наиболее
сильно коррелированные годы для POSITIVE:
2005,2006,2003,2004 (в порядке степени влияния).
Скриншот 41
Аналогичным
образом, мы посмотреть результаты по
атрибутам VERSION
и PRODUCT.
В
результате получаются следующие наиболее
устойчивые кластеры
NEGATIVE:
LAST_UPGRADE_YEAR: 1999, 2001, 2002
VERSION: 1,2
PRODUCT: A
POSITIVE:
LAST_UPGRADE_YEAR: 2005, 2006, 2003, 2004
VERSION: 3
PRODUCT: B
Таким
образом, мы получили следующие результаты:
основное расщепление или ветвление
осуществляет по атрибуту LAST_UPGRADE_YEAR,
если он меньше 2003 года, то отзыв
отрицательный, иначе он положительный.
При этом если учитывать атрибуты VERSION
и PRODUCT
в анализе, то получается, что отрицательный
отзыв получают продукт A
с версиями 1 и 2, а положительный B
с версиями 3.
Заключение
Если
посмотреть на результаты, которые были
получены в статье «Решения «растут»
на деревьях» (Decisions
Grow
on
Trees,
by
Ron
Hardman)
с полученными нами, то видно, что они
совпадают. Отличия лишь в максимальной
достоверности классификации и
представлении самих результатов. В Data
Mining
Option
была получена точность предсказания
на уровне 90%. В Real
Time
Decisions
максимальная точность была 83%. Связано
это с тем, что в Real
Time
Decisions
использовался Байесовский классификатор,
а в Oracle
Data
Mining
деревья решений, которые в данном случае
оказались лучше. С точки зрения графической
интерпретации результатов, в Oracle
Data
Miner
они были представлены в виде иерархической
группировки признаков и их значений
(дерева решений). В Real
Time
Decisions
они же были представлены в виде
упорядоченных списков коррелированных
признаков и их значений. Каждый вариант
представления информации имеет свои
достоинства и недостатки.
На
данном примере очевидными становятся
различия в применении Oracle
Data
Mining
и Real
Time
Decisions.
В Data
Mining
можно легко и быстро осуществить сложный
и глубокий анализ на уровне базы данных,
причем достоверность классификации
будет выше. С другой стороны Real
Time
Decisions
позволяет сроить менее глубокий анализ,
но в режиме реального времени. В нашем
случае в качестве он-лайн системы,
которая генерила события выступал
специальный инструмент LoadGen,
но с тем же успехом можно подключить и
любое бизнес приложение. Real
Time
Decisions
в реальном времени будет пересчитывать
модель и строить закономерности между
признаками.
|
|