- •Министерство образования и науки рф Федеральное государственное бюджетное образовательное учреждение высшего образования «Московский авиационный институт (национальный исследовательский университет)»
- •Оглавле
- •Введение
- •Задание 1. Знакомство с gui интерфейсом библиотеки data mining алгоритмов.
- •Задание 2. Выполнение анализа данных методами data mining.
- •Задание 3. Создание программ анализа данных с использованием алгоритмовdatamining
- •Задание 4. Реализация алгоритмов построенияunsupervised моделей
- •Будем использовать arff файл сегментации потребителей:
- •Задачи обобщения
- •Задачи поиска правил ассоциации
- •Задачи сокращения размерности
- •Задачи визуализации данных
- •Задание 5. Реализация алгоритмов построения supervised моделей.
- •Всего существует три алгоритма: АлгоритмId3,cart, с4.5.
Задание 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
Что необходимо для построения модели?
Для построения модели необходимо: первоначально создать экземпляр класс 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);
Какие параметры должны быть установлены для построения ассоциативных правил?
Устанавливается минимальный размер набора. Например,
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();
Какие параметры должны быть установлены для построения кластеров?
Для решения задачи кластеризации можно использовать алгоритм 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;
Какие параметры должны быть установлены для построения дерева решений?
Для построения дерева решений можно использовать алгоритм ID3. В библиотеке Xelopes он реализован в классе com.prudsys.pdm.Models.Classification.DecisionTree.Algorithms.Id3.ID3Algorithm. Для его использования необходимо выполнить настройку параметров, которые могут быть загружены из файла algorithms.xml.
MiningAlgorithmSpecification miningAlgorithmSpecification =
MiningAlgorithmSpecification.getMiningAlgorithmSpecification( "Decision Tree (ID3)" );
Как можно классифицировать алгоритмы в соответствии с иерархией, принятой в 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)
Что такое формат 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), а многие компании предлагают различные виды поддержки для использования этой технологии.