PolyAnalyst - новинка Data Mining

Валерий Вегеле

Россиской компанией *Мегапьютер Интеллидженс* разработана система машинного извлечения знаний (Machine Knowledge Discovery System) PolyAnalyst v.2.0 для OS/2 Warp.

Хранилищам данных (Data Warehouse) и проблемам переработки данных был посвящен специальный номер *Компьютерры* (# 120). В наши дни проблема выявления скрытых в массивах данных закономерностей стала очень актуальной и все чаще заставляет переходить от метафорических рассуждений об *искусственном* интеллекте к созданию действительно интеллектуального инструментария. Так, например, IBM объявила о планах выпуска Intelligent Desicion Server - мощной системы класса Data Mining.

PolyAnalyst (PA) - это не очередной *инновационный* статистический пакет, а действительно новая система класса Data Mining (DM), разработанная на основе технологий искусственного интеллекта. Знакомство с PolyAnalystом оставляет хорошее впечатление. Пакет вполне подходит на роль *автоматического аналитика*.

Многие программы такого рода, базировавшиеся на нейронных сетях, могли бы быть *обучены* продуцированию знаний из имеющихся баз данных, однако не могли объяснить эксперту результат своего труда. Стоит ли напоминать, что объясняющая система до сих пор рассматривается в качестве одной из важнейших в области искусственного интеллекта. PolyAnalyst позволяет представить обнаруженные закономерности в символической форме - как математические формулы, таблицы предсказаний, структурные законы и алгоритмы. То есть - в форме, которая естественна и удобна для понимания. Иными словами, PolyAnalyst не только *открывает* знания, но и объясняет их. Самое интересное - это то, как PolyAnalyst ищет скрытые в данных закономерности.

Прежде всего оговоримся: вскрывает закономерности именно программа, а не пользователь - и это главное отличие от статистических методов, где функциональную зависимость задает пользователь, а программа лишь подбирает параметры. В PolyAnalyst от пользователя требуется указать лишь зависимую переменную. Роль переменных выполняют поля баз данных, а вид зависимости *подсказывают* сами данные. Интересно, что извлекаемые функции могут не содержать некоторых переменных.

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

Центральный пункт программы - раздел Explore, где предлагаются на выбор три варианта автоматического исследования: анализ данных на существование взаимозависимости, построение многопараметрической линейной регрессии и поиск взаимозависимостей в данных, представление их в символьной форме.

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

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

Построение линейной многомерной зависимости специально выделено в отдельную задачу. Какая бы зависимость в общем случае ни обнаружилась, всегда полезно иметь под рукой наиболее простую.

На третьем уровне пакет демонстрирует всю свою мощь, выпуская - как джина из бутылки - запатентованную технологию Core PolyAnalyst (ядро системы), которая, являясь интеллектуальным программером, автоматически порождает и отбрасывает различные гипотезы о взаимозависимости в данных в форме функциональных процедур (программ объемом до 4 Кбайт).

Ядро не нуждается ни в каких предположениях о форме гипотез: они строятся автоматически, как бы сложны они не были. Генерируемые зависимости охватывают широкий класс функций: степенные, показательные, тригонометрические и их комбинации, составные *если... то*, а также алгоритмы. Если предложенных средств оказывается недостаточно, класс может быть расширен, можно добавить любую экзотическую программируемую функию - например, функцию Якоби.

Рабочая среда PolyAnalyst предоставляет пользователю объектно-ориентированный испытательный полигон для написания сценария и проведения исследования. Вся информация представлена в виде объектов нескольких классов. Гибкие и интуитивные операции на этих объектах позволяют создавать и модифицировать данные по желанию пользователя, работать как с таблицами, так и с различными типами графиков, использовать иерархию объектов.

PolyAnalyst поставляется в двух вариантах - индивидуальном и клиент-серверном. Для уменьшения времени исследования один клиент может одновременно работать с несколькими PolyAnalyst-серверами. Кстати, ориентация OS/2 Warp на параллельные вычисления сыграла свою роль в выборе платформы для системы. В стадии завершения находится клиент PolyAnalyst для MS Windows.

Для использования индивидуальной версии системы достаточно нынешнего аппаратного минимума - 486 DX-66, 8 Мбайт памяти и 10 Мбайт на диске.

Чтобы довести пакет до уровня серьезного инструмента, команде аналитиков и программистов потребовалось несколько лет исследований с регулярным опробированием наработок на реальных задачах, а не на *шуточных тестах*. Что же касается практического применения, то судьба продукта напрямую зависит от расширения практики использования хранилищ данных и роста потребностей в Data Mining. Сегодня в числе пользователей системы - банки, медицинские и правительственные учреждения, исследовательские организации в России, США, Швеции, Англии и Германии.