Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчет №1.docx
Скачиваний:
52
Добавлен:
10.05.2018
Размер:
619.57 Кб
Скачать

Задание 3. Создание программ анализа данных с использованием алгоритмовdatamining

Первоначально создадим экземпляр класс MiningInputStream для загрузки исходных данных, например, из файла формата ARFF.

MiningInputStream inputData = new MiningArffStream("data.arff");

Затем выделим метаданные загруженных данных.

MiningDataSpecification metaData = inputData.getMetaData();

Далее создадим экземпляр класса MiningAlgorithm. Для настройки процесса построения модели создадим экземпляр класса MiningSettings и MiningAlgorithmSpecification. У данных экземпляров устанавливаются необходимые параметры. Создание конкретных экземпляров классов зависят от используемого метода и решаемой задачи.

Сделанные настройки должны быть проверены с помощью метода: verifySettings():

miningSettings.verifySettings();

Созданному экземпляру алгоритма передаются исходные данные и настройки.

algorithm.setMiningInputStream( inputData );

algorithm.setMiningSettings( miningSettings );

algorithm.setMiningAlgorithmSpecification(

miningAlgorithmSpecification );

Затем вызовем метод buildModel() построения модели, который возвращает построенную модель в виде экземпляра класса MiningModel.

MiningModel model = algorithm.buildModel();

Любая построенная модель может быть сохранена в формате PMML

FileWriter writer = new FileWriter("example.xml");

model.writePmml(writer);

или в текстовом формате

writer = new FileWriter("example.txt");

model.writePlainText(writer);

Если построенная модель является экземпляром класса SupervisedMiningModel, то, следовательно, она может быть применена к новым данным с цель определения значения зависимой переменной.

MiningVector vector = inputData.read();

double predicted = model.applyModelFunction(vector);

Далее рассмотрим особенности решения задач поиска ассоциативных правил.

В результате работы приведенного кода будут получены следующие частные наборы в соответствии с выполненными настройками:

0: 1 Supp = 50.0

1: 1 3 Supp = 50.0

2: 2 Supp = 75.0

3: 2 3 Supp = 50.0

4: 2 3 5 Supp = 50.0

5: 2 5 Supp = 75.0

6: 3 Supp = 75.0

7: 3 5 Supp = 50.0

8: 5 Supp = 75.0

Построенные ассоциативные правила

0: 3 => Supp = 50.0, Conf=66,67

1: 1 => 3 Supp = 50.0, Conf=100

2: 3 => 2 Supp = 75.0, Conf=66,67

3: 2 => 3 Supp = 50.0, Conf=66,67

4: 3 5 => 2 Supp = 50.0, Conf=100

5: 5=> 2 3 Supp = 75.0, Conf=66,67

6: 3 => 2 5 Supp = 75.0, Conf=66,67

7: 2 5 => 3 Supp = 50.0, Conf=66,67

8: 2 => 3 5 Supp = 75.0, Conf=66,67

9: 2 3=> 5 Supp = 75.0, Conf=100

10: 5 => 2 Supp = 75.0, Conf=100

11: 2 => 5 Supp = 75.0, Conf=100

12: 5 => 3 Supp = 75.0, Conf=66,67

13: 4=> 5 Supp = 75.0, Conf=66,67

  1. Что необходимо для построения модели?

Для построения модели необходимо: первоначально создать экземпляр класс MiningInputStream для загрузки исходных данных, например, из файла формата ARFF.

MiningInputStream inputData = new MiningArffStream("data.arff");

Затем выделить метаданные загруженных данных.

MiningDataSpecification metaData = inputData.getMetaData();

Далее создать экземпляр класса MiningAlgorithm. Для настройки процесса построения модели создается экземпляр классов MiningSettings и MiningAlgorithmSpecification. У данных экземпляров устанавливить необходимые параметры. Создать конкретных экземпляры классов

Сделанные настройки должны быть проверены с помощью метода: verifySettings():

miningSettings.verifySettings();

Созданному экземпляру алгоритма передать исходные данные и настройки.

algorithm.setMiningInputStream( inputData );

algorithm.setMiningSettings( miningSettings );

algorithm.setMiningAlgorithmSpecification(

miningAlgorithmSpecification );

Затем вызывать метод buildModel() построения модели, который возвращает построенную модель в виде экземпляра класса MiningModel.

MiningModel model = algorithm.buildModel();

Любая построенная модель может быть сохранена в формате PMML

FileWriter writer = new FileWriter("example.xml");

model.writePmml(writer);

или в текстовом формате

writer = new FileWriter("example.txt");

model.writePlainText(writer);

Если построенная модель является экземпляром класса SupervisedMiningModel, то, следовательно, она может быть применена к новым данным с цель определения значения зависимой переменной.

MiningVector vector = inputData.read();

double predicted = model.applyModelFunction(vector);

  1. Какие параметры должны быть установлены для построения ассоциативных правил?

Устанавливается минимальный размер набора. Например,

miningAlgorithmParameter[0] = new MiningAlgorithmParameter();

miningAlgorithmParameter[0].setName("minimumItemSize");

miningAlgorithmParameter[0].setType("int");

miningAlgorithmParameter[0].setValue("1");

miningAlgorithmParameter[0].setMethod("setMinimumItemSize");

miningAlgorithmParameter[0].setDescr("Minimum size for large items");

Устанавливается минимальный размер набора. Например,

miningAlgorithmParameter[1] = new MiningAlgorithmParameter();

miningAlgorithmParameter[1].setName("maximumItemSize");

miningAlgorithmParameter[1].setType("int");

miningAlgorithmParameter[1].setValue("-1");

miningAlgorithmParameter[1].setMethod("setMaximumItemSize");

miningAlgorithmParameter[1].setDescr("Maximum size for large items");

Устанавливается параметр позволяющий генерировать ассоциативные правила, а не только частые наборы. Например,

miningAlgorithmParameter[2] = new MiningAlgorithmParameter();

miningAlgorithmParameter[2].setName("generateRules");

miningAlgorithmParameter[2].setType("boolean");

miningAlgorithmParameter[2].setValue("true");

miningAlgorithmParameter[2].setMethod("setGenerateRules");

miningAlgorithmParameter[2].setDescr("Allow to generate

association rules");

Все дополнительные параметры должны быть добавлены в спецификацию алгоритма:

miningAlgorithmSpecification.setInputAttribute (miningAlgorithmParameter );

Далее должен быть создан экземпляр алгоритма, выполняющего построение модели ассоциативных правил:

String className = miningAlgorithmSpecification.getClassname();

if( className == null )

throw new MiningException( "className attribute expected." );

Class algorithmClass = = Class.forName( className );

Object algorithm = algorithmClass.newInstance();

AssociationRulesAlgorithm miningAlgorithm = (AssociationRulesAlgorithm) algorithm;

После создания необходимо вызвать метод метод buildModel() для построения модели класса AssociationRulesMiningModel.

AssociationRulesMiningModel model =

(AssociationRulesMiningModel) algorithm.buildModel();

  1. Какие параметры должны быть установлены для построения кластеров?

Для решения задачи кластеризации можно использовать алгоритм KMeans. В библиотеке Xelopes он реализован в классе com.prudsys.pdm.Models.Clustering.CDBased.Algorithms.KMeans.KMeans. Для его использования необходимо выполнить настройку специфичных параметров.

MiningAlgorithmSpecification miningAlgorithmSpecification =

MiningAlgorithmSpecification.getMiningAlgorithmSpecification("KMeans");

Далее должен быть создан экземпляр алгоритма, выполняющего кластеризацию:

String className = miningAlgorithmSpecification.getClassname();

if( className == null )

throw new MiningException( "className attribute expected." );

Class algorithmClass = = Class.forName( className );

Object algorithm = algorithmClass.newInstance();

ClusteringAlgorithm miningAlgorithm = (ClusteringAlgorithm) algorithm;

  1. Какие параметры должны быть установлены для построения дерева решений?

Для построения дерева решений можно использовать алгоритм ID3. В библиотеке Xelopes он реализован в классе com.prudsys.pdm.Models.Classification.DecisionTree.Algorithms.Id3.ID3Algorithm. Для его использования необходимо выполнить настройку параметров, которые могут быть загружены из файла algorithms.xml.

MiningAlgorithmSpecification miningAlgorithmSpecification =

MiningAlgorithmSpecification.getMiningAlgorithmSpecification( "Decision Tree (ID3)" );

  1. Как можно классифицировать алгоритмы в соответствии с иерархией, принятой в CWM и Xelopes?

Спецификация CWM определяет метамодель (модель модели данных), представляющую как бизнес, так и технические метаданные, которые в большинстве случаев присутствуют в области технологии Хранилищ данных и бизнес аналитики. Она используется как основа для обмена экземплярами метаданных между гетерогенным программным обеспечением, поставляемым различными производителями. Системы, которые "понимают" метамодель CWM, обмениваются данными в форматах, которые согласуются с этой моделью.

CWM выражен на языке UML (Unified Modeling Language, Унифицированный язык моделирования). Но, хотя UML является нотационным основанием для определения CWM, CWM расширяет базовую метамодель UML с помощью концепций технологий Хранилищ данных и бизнес-анализа.

Можно сказать, что CWM расширяет язык UML в том смысле, что каждый метакласс (metaclass) CWM наследуется напрямую, либо ненапрямую из метаклассов UML. Например, метакласс "Реляционная Таблица (Relational Table) CWM" является непосредственным наследником Класса UML (UML Class), а "Реляционный Столбец (Relational Column)" — прямой потомок Атрибута UML (UML Attribute). Таким образом, CWM можно характеризовать как язык определенной области применения, предназначенный для определения моделей Хранилищ данных.

Другой стандарт OMG — Meta Object Facility (Средство метаобъекта, далее MOF) — определяет общие интерфейсы и семантику для взаимодействующих метамоделей. MOF — это пример мета-метамодели, или модели метамодели (подмножество UML). Он также определяет набор IDL-преобразований (Interface Definition Language, язык описания интерфейса, который устанавливает спецификацию интерфейса для обнаружения и управления моделей с помощью программных APIs).

Помимо определения общей семантики для метамоделей MOF также служит в качестве модели для UML (то есть в конечном итоге MOF определяет язык, на котором выражается метамодель UML). Поскольку CWM наследуется из UML, MOF также является моделью и для CWM. Все модели CWM выражаются на UML и реализуют семантику MOF.

Мета уровень

Уровень моделирования

Примеры

M3

Meta- Metamodel/Meta-meta-metadata (мета-метамодель/мета-мета-метаданные)

MOF Class, Attribute, Association, Package, Operation

M2

Metamodel/Meta-metadata (метамодель/мета-метаданные)

UML Class, AttributeCWM Table, Column

M1

Model/Metadata (модель/метаданные)

Product: TablePoductType: Column

M0

Data/Object (данные/объект)

"Toaster" ("тостер")Television" ("телевизор")"Stereo" ("стереосистема"))

Наконец, третий стандарт, который непосредственно задействован в обмене метамоделями — это XMI. XMI (XMLMetadata Interchange, Обмен метаданными XML) — это стандарт OMG, который устанавливает правила преобразования метамоделей MOF в XML. XMI определяет, как использовать XML-теги для представления сериализованных моделей, совместимых с MOF. Метамодели MOF транслируются в XML DTD, а модели - в XML-документы, которые согласуются со своими DTD.

Каждая метамодель CWM представляется как XML DTD (в соответствие с правилами XMI), так и определение IDL. В первом случае модели CWM преобразуются в поток (serialize), после чего ими обмениваются, как документами XMI. При экспорте метаданные посредством XMI-документа, необходимо выполнить XMI-преобразование (MXI-rendering) в форме, которая легальна по отношению к DTD. При импорте данных с помощью XMI-документа, следует проверять модель на допустимость по этим DTD.

Во втором случае моделей объектов CWM создаются в памяти или хранятся в репозитории — в этой ситуации IDL предпочтительней, поскольку он определяет необходимые интерфейсы, подписи методов и структуру совокупности (см. ниже), которые эта модель должна поддерживать.

Итак, CWM фактически состоит из ряда составных метамоделей (или суб-метамоделей), которые организованы в виде следующих 4 слоев: базовый слой (Foundation), источники данных (Resources), анализ (Analysis) и управление Хранилищем (Management)

  1. Что такое формат PMML?

PMML - это XML-диалект, который используется для описания статистических моделей и моделей data mining. Его главное преимущество заключается в том, что PMML-совместимые приложения позволяют легко обмениваться моделями данных с другими PMML-инструментами. Разработка и внедрение PMML осуществляется IT-консорциумом Data Mining Group.

Одно из существенных достоинств PMML, по словам его сторонников, - это то, что PMML делает data mining более демократичным, т.е. превращает его из занятия, доступного лишь избранным, искушенным в тонкостях уже существующих программных продуктов, в средство, которым могут воспользоваться многие. В результате пользователи, не знакомые с тонкостями ранее разработанных программ, могут эффективно работать с уже созданными моделями данных PMML. Пользователям необходимо часто использовать модели - ежедневно или даже несколько раз в день, и это именно то, для чего существует PMML, - для практической работы с моделями данных.

Как и другой долго разрабатывавшийся стандарт, XML-язык запросов (XML Query language, сокр. XQuery), PMML также потребовал немало времени для своего создания. Но в отличие от Xquery, PMML развивался с течением времени. Пять лет назад появилась его первая версия - 1.1. Сегодня существует уже третья версия этого диалекта (3.0), а многие компании предлагают различные виды поддержки для использования этой технологии.