Реинжиниринг (Data Mining). Продукт PolyAnalyst
Вам, наверное, интересно, что такое Data Mining и с чем его едят? Термин Data Mining буквально переводится как «заготовка данных». По оценкам западных специалистов, современный аналитик до 80% (!) времени тратит даже не на подготовку, а на поиск и извлечение необходимых данных из разнообразных потоков деловой информации. (В скобках заметим, что отечественные информационные потоки, даже при видимом обилии данных, в большинстве своем малопригодны для немедленного использования, что только усложняет задачу специалистам.)
Потому представьте себе, что каждый день к вам на сервер «падает» 20-30 Мб деловой информации... Представили? А во что может превратиться сама по себе процедура поиска в таких объемах, вы почувствовали? Между прочим, на российских просторах такие «задачи» сегодня уже не редкость.
А между тем существуют инструменты, предназначенные специально для обработки таких объемов информации. Их предназначение широкое: от проведения развитого контекстного поиска до «извлечения знаний» из баз различных форматов.
Например, PolyAnalyst — это российская система класса Data Mining, разработанная на основе технологий искусственного интеллекта (эволюционное программирование, генетические алгоритмы). Она прежде всего призвана помочь в следующем:
• в обнаружении и быстром показе взаимосвязи между разными рынками;
• между разными элементами рынка;
• между ценными бумагами;
• и соответственно в принятии решений в финансовом анализе для работающего на компьютере эксперта.
В последнем эксперту важно точно знать, чем определяются те или иные выводы, не упущены ли какие-либо факторы, о которых система могла не знать, и т. д. Единственной гарантией точности ответа может быть лишь четкое понимание причин, по которым принимается то или иное решение. Объясняющая подсистема справедливо рассматривается в качестве одной из важнейших в области искусственного интеллекта.
Следует отметить, что PolyAnalyst позволяет представить обнаруженные закономерности в символьной форме — как математические формулы, таблицы предсказаний, структурные законы и алгоритмы. Другими словами говоря, все представляется в естественной и удобной для понимания форме. Появление таких систем означает переход от накопления и оперативного использования данных к их анализу, к поиску и выявлению закономерностей, скрытых в постоянно пополняемых хранилищах. А сами элементы автоматической обработки и анализа данных становятся неотъемлемой частью концепции электронных хранилищ данных (data warehouse).
Конечно, желательно, чтобы системы выработки знаний отражали объективные закономерности, а не просто описывали данные какими-то эмпирическими функциями. PolyAnalyst как раз и стремится к объективности, «отлучая» пользователя от выбора модели и основываясь исключительно на самих данных.
PolyAnalyst также строит эмпирические модели исследуемых объектов или явлений, основываясь исключительно на самих исходных данных. Программа осуществляет автоматизированный анализ данных, вскрывая внутренние связи и взаимозависимости, «похороненные» в больших массивах информации. Обнаруживаемые пакетом PolyAnalyst знания об объекте вы можете интегрировать с используемым набором программ поддержки принятия решения. Наряду с вашим опытом, когда вы принимаете решение, они могут оказаться ключевым моментом в достижении успеха. В общем, универсальный характер пакета делает его использование весьма гибким.
А еще пакет PolyAnalyst встраивается практически в любое хранилище данных. Это позволяет в значительной степени автоматизировать процесс предварительного анализа и подготовки выборок данных. Связь с хранилищем может быть осуществлена по входным (по отношению к PolyAnalyst) данным, по выходными по управлению. Операция запуска исследования может быть совершенно рутинно запущена из хранилища. Модульная организация пакета PolyAnalyst также имеет свои преимущества: некоторую «минимальную» конфигурацию программы можно постепенно доращивать до полного корпоративного решения.
Как правило, пользователь начинает исследование с некоторой предварительной модели и перед программой ставится задача совершенствования существующей модели. А поскольку в PolyAnalyst машина и человек говорят на одном и том же языке, пользователь легко формулирует свою начальную модель, которую система должна улучшать. В итоге может возникнуть что-то типа сотрудничества машины и квалифицированного пользователя: что-то вы подсказываете программе, что-то — программа вам. На наш взгляд, довольно-таки весело. А то все либо только машина, либо только вы. Хотя, конечно, вся «наука», вся весьма и весьма сложная «начинка» спрятана от пользователя. Программа задумана так, чтобы максимально облегчить работу с ней пользователям-непрограммистам и в то же время гарантировать высокое качество и достоверность результатов. А главное, все результаты анализа формулируются в текстовой и графической формах. А они чрезвычайно удобны для восприятия человеком.
|
Система PolyAnalyst состоит из пяти основных модулей. Центральный пункт меню программы — раздел Explore, где предлагаются на выбор 5 вариантов автоматизированного исследования:
• предварительный анализ данных на существование взаимозависимости;
• поиск нелинейных взаимозависимостей в данных и представление их в символьной форме;
• классификация;
• кластеризация;
• построение многопараметрической линейной регрессии.
Методы, которые реализуют в модуле универсальной предварительной обработки данных, являются традиционными для автоматизации аналитической обработки данных.
Задача модуля ARNAVAC — сузить пространство поиска, отбрасывая малозначимые точки, оценивая наилучшую точность. А также выявляя в многомерном пространстве наиболее значимые (имеющие некоторую степень влияния) факторы вообще без каких-либо предположений о виде влияния.
Чтобы выделить структурный компонент на фоне бесструктурного шума, программа для начала сравнивает распределения зависимой переменной в разных областях пространства независимых переменных. Именно тот набор координат, в которых различие наиболее сильно, и соответствует наиболее влияющим параметрам. ARNAVAC обнаруживает в массивах данных функционально связанные кластеры и фильтрует случайные выбросы, связанные, например, с ошибкой ввода данных оператором. Далее, например, нам удается установить взаимозависимость, пусть даже слабую. Тогда об этом будет сделано сообщение с указанием статистических характеристик, визуализацией значимой области и выпавших точек. По содержанию эта же задача может быть «вывернута наизнанку» — модуль может использоваться не для отсеивания ошибок, а для поиска естественных по своей природе исключений с целью их идентификации и независимого анализа. Этот модуль будет совершенно естественно использовать для определения моментов нестабильности рынка. А также, если хотите, для анализа «выбросов» рынка по отношению к некоторому индикатору с целью определения момента перехода на другую стратегию игры.
Наиболее интересная центральная часть системы позволяет строить нелинейные регрессионные модели (читаем умные книжки про статистику и все такое, если подзабыли маленько). При этом можно использовать не только числовые и логические переменные, но и так называемые категориальные переменные. Core PolyAnalyst — ядро системы, основанное на принципах эволюционного программирования. Также это автоматический генератор функциональных процедур, служащих для описания скрытых закономерностей. Его цель и назначение — автоматическая генерация различных гипотез и их проверка. Хорошо известен тот факт, что статистические пакеты требуют априорных допущений о моделях. При работе с пакетом PolyAnalyst не нужно заранее допускать какие-либо закономерности в данных: это может сделать программа анализа функциональных зависимостей. Вот принципиальное отличие от статистических методов, где функциональную зависимость задает пользователь. В PolyAnalyst от пользователя требуется лишь указать зависимую переменную.
Ядро системы работает следующим образом: оно автоматически порождает и отбрасывает различные гипотезы о взаимозависимости в данных на своем внутреннем языке. Причем происходит это в форме функциональных процедур (программ объемом до 4 Кбайт). А это в свою очередь мощный язык — ведь на нем можно выразить практически любой алгоритм.
Процесс построения этих программ осуществляется прежде всего как эволюция программ. Этим метод отчасти похож на генетические алгоритмы. Только затем в полученную программу вносятся некоторые модификации с применением методов так называемых обобщающих преобразований. Преобразования же гарантируют, что «потомки» будут описывать анализируемый набор данных не хуже, чем исходная «родительская» программа. Таким образом, формируется популяция программ, конкурирующих в точности выражения исходной зависимости. Из популяции выделяются растущие, постепенно усложняющиеся генетические линии. А для контроля статистической значимости применяется рандомизированное тестирование.
Также ядро позволяет обнаруживать многофакторные зависимости, которым оно придает вид функциональных выражений. Не забыли предусмотреть такую возможность как построение структурных и классификационных правил (по автоматически формируемым обучающим примерам). При этом анализу подвергаются исходные данные различных типов: действительные числа, логические и категориальные величины. Далее выводятся правила. Они принимают вид либо функций, либо циклов, либо условных конструкций. В особо трудных случаях отношения могут быть запрограммированы на языке символьных правил. Этот язык, служащий для формализации описания обнаруживаемой информации, может также использоваться для ввода предположений аналитика. Вмешавшись во время работы модуля и отредактировав анализируемое правило, вы можете своими руками подтолкнуть программу в желаемое русло.
Стоит помнить, что метод классификации, основанный на двух рассмотренных модулях, предназначен для построения моделей на базе логических полей и для прогнозирования этих полей. Характерная задача модуля классификации — построение стратегии игры: продавать ли ценную бумагу или, напротив, придержать до лучших времен? Допустим, анализируемое правило есть выражение, найденное модулем анализа функциональных зависимостей или многопараметрической линейной регрессии. Тогда классификационное правило является просто условным выражением, принимающим одно из двух значений в зависимости от того, превосходит ли результат применения правила пороговое значение.
Еще одна задача, решаемая PolyAnalyst, — кластеризация, определение: однородны ли исходные данные или они каким-либо образом группируются (и если группируются, то по каким признакам).
Если обратиться к традиции, то она нам скажет следующее: для статистических пакетов построение линейной многомерной зависимости специально выделено в отдельную задачу. «Автоматический аналитик» строит множественную линейную регрессионную зависимость как наиболее простое и доступное описание исходных данных. А использует он при этом быстродействующий алгоритм, автоматически выбирающий наиболее влияющие параметры. В PolyAnalyst традиционно же значительное внимание уделяется оценке значимости.
Построение PolyAnalyst по модульному принципу произведено не просто так, а потому что модульность способствует удобству работы. Заменой модулей можно переориентировать искусственную эволюцию на решение любой другой задачи, выполняемой порождаемыми программами. В числе других модулей системы — база накопленных процедур и модуль оценки значимости получающихся моделей, который с разных сторон проверяет их достоверность.
PolyAnalyst, безусловно, ориентирован на автоматизированную обработку данных. Однако возможность «ручной стирки» (вмешательства) также предусмотрена. Вы можете разбивать данные на подмножества, делать выборки, формулировать критерий, по которому будут выбираться участки для анализа, а еще можно добавлять нужные вам функции. В общем, простора для творчества достаточно.
К тому же по своей сути PolyAnalyst не накладывает особых ограничений на анализируемые данные: скорее всего, вас будут сдерживать не ограничения программы, а возможности компьютера — его память и производительность. Всего Poly-Analyst позволяет одновременно исследовать до 1000 полей и до 100 000 записей!
Конечно, интерфейс программы не является определяющим фактором в принятии решения о том, нужна ли она вам. Однако, приятно, когда личико хорошенькое. А у PolyAnalyst оно замечательное. Интерфейс данной программы прост и строг. Открыв программу, вы увидите пять пустых окон:
• четыре рабочих — для представления данных, графиков, функциональных и логических зависимостей (правил), отчетов о результатах анализа;
• и пятое окно, в котором отображаются текущие процессы и их рабочее время.
По мере вашей работы рабочие окна начнут быстро заполняться пиктограммами, отображающими созданные вами и программой объекты. И вообще все механизмы PolyAnalyst «спрятаны» внутри системы и невидимы для пользователя. Пользователь взаимодействует со специальным модулем трансляции и представления полученных данных и ничего не ведает. А там на неведомых дорожках случаются таинственные вещи и происходят невероятные события. PolyAnalyst предоставляет пользователю объектно-ориентированную рабочую среду для написания сценария и проведения исследования. Причем вся информация представляется в виде объектов нескольких классов. Абсолютно все логические объекты, возникающие в процессе анализа данных (подмножества данных, правила, зависимости, функциональные преобразования данных, графики, отчеты, текущие процессы в работе программы), представляются на экране монитора в виде графических объектов. И с ними, наконец, могут производиться интуитивно понятные операции с помощью мыши или клавиатуры.
|