Применение метода дерева решенийx

advertisement
Применение метода дерева решений при имитационных экспериментах
Применение метода дерева решений при имитационных
экспериментах с продукционной моделью системы
профессор Подлесных В.Г.
Высшая Школа Экономики, кафедра ИТАС
vpodlesnyh@yandex.ru
Введение. В работе рассматривается методика и комплекс программ для имитационного
моделирования систем с использованием продукционной парадигмы программирования
на языке CLIPS. Рассмотрены вопросы построения и автоматической реализации
сокращенных планов имитационных экспериментов, обеспечивающие адекватность
моделей классификации с помощью деревьев решений по выбранному целевому атрибуту,
что позволяет просто решать задачи типа “что сделать, чтобы…”
Ключевые слова: продукционная система, дерево решений, планирование
экспериментов, адекватность модели, классификация.
Исследователя сложной предметной области с помощью компьютерной
модели часто интересует задачи класса “что сделать, чтобы…”. Этот
подход, в отличие от простой альтернативы “что будет, если...”, применяется
по отношению к одной наиболее важной, с его точки зрения, целевой
функции системы, например, числу обслуженных заявок, или среднему
времени ожидания в узле, или коэффициенту загрузки канала обслуживания
и пр.
Такую задачу можно попытаться решать приближено путем
построения деревьев решений на сымитированных на модели данных
[Подлесных, 2014]. Такая оптимизация не будет глобальной, отыскивающей
экстремум на множестве входных переменных и параметров, как это делает
известная стохастическая программа-оптимизатор OptQuest [Glover, 1997],
но зато экономична и быстро реализуется с помощью аналитической
платформы Deductor Studio [www.basegroup.ru], давая, кроме того, варианты
приемлемых решений. Дело в том, что в различных подмоделях (ветвях
дерева решений) целевые терминальные классы могут дублироваться при
разных наборах значений входных переменных.
Имитационные эксперименты выполняли на объектно-продукционной
модели, реализованной на языке CLIPS [Частиков и др., 2001].
Продукционная модель состоит из правил (продукций), помещенных в
объектную среду языка С. Интерпретатор продукций на каждом шаге
модельного времени оценивает выполнимость условий правил, отыскивая
наиболее подходящее правило к данной ситуации. Правила продукции
позволяют гибко управлять процессом решения задачи, основываясь на
текущих фактах. Интерпретатор правил выполняет сопоставление образцов
(шаблонов фактов, включающих в себя переменные) с текущими фактами,
выполняя, по сути, запросы к текущим фактам из левой части продукций. В
случае выполнения условий сразу нескольких
продукций действует
механизм разрешения конфликтов, учитывающий явно установленные
Применение метода дерева решений при имитационных экспериментах
пользователем относительные приоритеты правил и выбранную
пользователем стратегию поиска (в глубину, в ширину и др.). На каждом
шаге срабатывает только одно выбранное правило. Правая, командная часть
этого правила производит выполнение ряда действий: добавляет в текущий
список и/или исключает из него факты, посылает сообщения объектам для
модификации значений атрибутов, вызывает обработчики сообщений и пр.
Продукционная среда легко организует пошаговое выполнение операций,
необходимое для имитационной модели, построенной по принципу ∆Т
(наращивания модельного времени). Загрузка программ в среде CLIPS
осуществляется из меню File путем выбора команды Load… или Load Batch.
В первом случае после команд (reset) и
(run) будет осуществлен
однократный прогон программы со сбросом результатов в текстовый файл.
Вторая команда позволяет осуществить многократный автоматический
запуск программы с разными значениями входных переменных и с
дописыванием результатов в текстовый файл. Для реализации второго
варианта необходимо предварительно создать командный файл с
расширением .bat, например, run.bat, где указать условия для каждого
запуска. Остановимся пока на варианте однократного запуска модели
model.clp с помощью команд Load и run. Эта упрощенная модель
применяется
при отладке
встроенных генераторов
заданных
распределений случайных величин. После выбора Load открывается
стандартное диалоговое окно открытия файла, в котором следует выбрать
файл model.clp и нажать клавишу “Открыть”.
Рис.1. Окно диалога с результатами загрузки программы model.clp.
На экран будут выведен список всех используемых конструкторов
правил и их имен (рис.1). При успешной проверке список заканчивается
сообщением TRUE и строкой приглашения для ввода дальнейших команд.
Применение метода дерева решений при имитационных экспериментах
Такими командами являются (Reset), (run) или (step). Для их выбора можно
использовать меню Execution.
Команда Reset обязательна. Она обновляет факты и создает факт
initial-fact, которым пользуется левая часть начального правила в том случае,
когда нет иных фактов
его инициализации. Наблюдаемый результат
выполнения команды (Reset) после открытия файла будет зависеть от
предварительного выбора режима наблюдения, который предварительно
устанавливается с помощью позиции Watch из меню Execution. Появится
панель (рис.2), которая позволяет наблюдать по шагам за логикой работы
программы, т.е. искать логические ошибки, поскольку программа пишется в
декларативном стиле (правила “что сделать”, а не “как”).
Рис.2. Окно установки режима наблюдения за ходом выполнения
программы
.
По умолчанию отмеченной является только позиция Compilations. В
этом случае после выполнения команды Reset будут добавлены все
конструкторы, но отображаться на экране будет только
строка
приглашения. Этот режим используют для прогона отлаженной программы.
Если добавить
позицию Facts, то после выполнения команды Reset в
диалоговое окно будет помещен упорядоченный список индексированных
фактов (рис.3), который будет обновляться на каждом шаге.
Применение метода дерева решений при имитационных экспериментах
Рис.3. Отображение исходных фактов программы моделирования.
С помощью опций меню Execution можно также настраивать
приоритеты правил и устанавливать подходящую стратегию разрешения
конфликтов, позволяющую реализовать принцип запуска самого важного из
конкурирующих на данном шаге правил. Стратегию выбирает пользователь
программы. В нашем случае он должен выбрать стратегию “в ширину”
(breadth), отвечающую порядку обслуживания FIFO (рис.4). Исходный текст
программы model.clp можно редактировать с помощью редактора WordPad
или Блокнота.
Рис.5. Панель настройки стратегии решения задачи.
Полученные результаты можно посмотреть в текстовом файле data.txt в
той же папке, который автоматически обновляется при очередном прогоне
программы. Этот файл удобно использовать для контроля эффективности
вносимых изменений в исходные данные программы моделирования,
Применение метода дерева решений при имитационных экспериментах
например, при замене функции распределения. В программе также
предусмотрена возможность сохранять результаты в файле data.xml.
Для накопления статистических данных обслуживания программа
может запускаться многократно в автоматическом режиме с помощью
командного файла run.bat.
Этот файл можно создать в Блокноте и
поместить в ту же папку, где содержатся CLIPS, model.clp и data.txt.
Просмотреть и изменить командный файл можно из контекстного меню,
выбрав команду “Изменить”. При запуске по команде Load Batch программа
создает структурированный выходной файл data.xml в той же папке.
Файл data.xml можно использовать для экспорта в базу данных Access
результатов множества экспериментов. В командном файле можно
динамически поменять и запускаемый рабочий файл. Для этого достаточно
между очередными командами (run) и (reset) вставить строки:
(clear)
(load modelх.clp),
где указать имя другого файла. Это дает возможность объединить в
одном выходном файле данные экспериментов с различными моделями.
Командный файл позволяет
задавать при каждом прогоне новые
значения переменных. Для этого используется функция присвоения bind ?x,
задающая значение переменной “x” при данном прогоне модели, которое
перебивает значение, заданное в исходном тексте программы. Поэтому
появляется возможность автоматизации планирования и
реализации
экспериментов с помощью составления командного файл.
Был
бы
ошибочным
путь
планирования
однофакторных
экспериментов, при которых в серии опытов изменяются значения только
одной входной переменной при фиксированных значениях остальных.
Получаемые при этом данные не будут корректными, поскольку при других
значениях зафиксированных переменных влияние данной переменной на
выходные характеристики может существенно измениться. Это связано с
нелинейными эффектами взаимодействия переменных. Кроме того, для
осуществления однофакторных экспериментов потребовалось бы огромное
число опытов. Эти недостатки устраняет известная теория планирования
экспериментов, в которой столбцы кодированных значений любой пары
переменных ортогональны (влияние данной переменной не зависит от
других переменных). В данной работе теория планирования используется в
сочетании со средствами автоматизации составления плана и
соответствующего командного файла в среде Excel.
Существуют простейшие планы полного (ПФЭ) и дробного (ДФЭ)
факторного экспериментов. ПФЭ 2k – это план комбинирования k факторов,
каждый из которых принимает значения на двух уровнях (+1, -1). При
значениях k >= 20 требуется более 105 опытов. На помощь приходит ДФЭ 2kn
, где k – число факторов (его нельзя сокращать!), n – число тех их них,
которые введены в матрицу планирования путем замены в расширенной
матрице ПФЭ 2k
любых n столбцов произведений факторов, также
Применение метода дерева решений при имитационных экспериментах
обладающих свойством ортогональности, на n недостающих линейных
факторов. Такие произведения, парные или более высокого порядка,
называют генерирующими соотношениями (ГС). Число опытов сокращается
в 2n раз, но одновременно сокращается объем получаемых результатов, что
может сделать построенную по ним модель данных не адекватной.
Приходится идти на компромисс (trade-off) между приемлемым временем
прогона модели и допустимым сокращением объема данных с точки зрения
адекватности модели. В простейшем случае для проверки адекватности
достаточно получить сопоставимые правила описания терминальных узлов в
дереве решений, (см. ниже) при двух разных ГС.
Многократный ручной расчет ГС – трудоемкая рутинная процедура,
при выполнении которой трудно избежать ошибок. Возникает задача
автоматизации составления матриц планирования ДФЭ с последующей
заменой кодированных значений на соответствующие натуральные и
составления командного файла, реализующего этот план в среде CLIPS. Эта
вспомогательная, но важная задача
решена с использованием среды MS
Excel.
Для ознакомления с реализацией этой задачи следует открыть файл
Excel с именем ДФЭ_20_11. На листе 1 в правой его части имеется 11 строк,
состоящих каждая из 9 элементов управления типа CheckBox. Перед каждой
строкой имеется надпись, предлагающая выбрать
разные произвольные
комбинации из 4 – 6 окошек (основных факторов) для получения 11 ГС.
Основные 9 факторов выбирается пользователем. Кодированные значения
основных факторов комбинируются по плану ПФЭ 29. Эта неизменяемая
часть плана (шаблон). Комбинации значений остальных 11 факторов зависят
от выбора ГС, поэтому правая часть плана будет автоматически изменяться, а
вместе с ней и получаемые данные при реализации каждого варианта плана
ДФЭ.
В программе-макросе кодированное значение в каждой ячейке
получают путем перемножения кодированных значений, возвращаемых
некоторым
подмножеством
функций,
выбранных
с
помощью
соответствующих
элементов
СheckBox.
Например,
функция
SetZ1_ValueForObs25(i) должна взять значение из i-ой строки столбца для
числа заявок первого типа Z1. Использоваться оно будет при вычислении i-го
значения в столбце для переменной х10 = Obs25 (время обслуживания во
втором узле пятого типа заявок). Событие выбора функции, входящей в
данное ГС, описывается кодом:
Private Sub Z1_Obs25_Click()
End Sub
Здесь z1_Obs25 это свойство Name этого CheckBox, по которому
функция SetZ1_ValueForObs25 проверяет, что она выбрана, а надпись х1
около окошечка на листе1 – это свойство Caption (имя выбранной
переменной). Приведем текст функции:
Применение метода дерева решений при имитационных экспериментах
Function SetZ1_ValueForObs25(i) As Integer
If z1_Obs25 = True Then
SetZ1_ValueForObs25 = Worksheets("Лист1").Cells(i, 1)
Else
SetZ1_ValueForObs25 = 1
End If
End Function
Если данный CheckBox выбран (True), то функция возвращает
значение, взятое на листе1 из ячейки в строке i 1-го столбца
(соответствующего в данном случае переменной z1 ядра плана), т.е. +1 или 1. В противном случае функция всегда возвращает 1, что не влияет на
результат перемножения значений других функций, образующих ГС.
Аналогично возвращают свои значения и другие функции, входящие в
данную комбинацию ГС. Их алгебраическое произведение (+1 или -1)
вносится в i-ую строку столбца переменной, в данном случае х10. Таким
путем заполняется кодированными значениями правая часть плана ДФЭ 2 20-11
на листе1.
Следующей задачей макроса является перевод кодированных значений
в соответствующие натуральные значения плана на листе 2, с которыми
должен проводиться
имитационный эксперимент.
Для этого надо
предварительно выбрать для каждого фактора натуральные значения
верхнего (+1) и нижнего (-1) уровня. Эти значения берутся
из
экспериментальных данных, а затем могут уточняться в тексте программы
для получения приемлемых результатов моделирования. В нашем случае
эти значения заданы в макросе по литературным данным[Азбель,1986].
Задача выполняется в цикле для всех 512 строк и 20 столбцов (Лист2).
Последней задачей автоматизации является составление командного
файла с использованием той же программы макроса. Эта задача реализуется
в цикле по i с шагом 24. Именно столько строк требуется в будущем
командном файле для описания одного эксперимента, которое включает в
себя: строку j, где j- № эксперимента; строки с командами (reset) и
(seed(round(time))), 20 строк, начинающихся с функции bind для присвоения
значения соответствующим переменным, которые берутся из k-ой строки
плана на Листе2 из соответствующих столбцов. Последней является строка с
командой (run). В результате получаем заготовку командного файла в
табличной форме на листе3. Далее надо выделить столбец 1, где содержится
вся полученная информация, и скопировать его в WordPad. Но перед этим
нужно преобразовать формат всех чисел, заменив разделитель в виде
запятой, принятой в Excel, на точку, принятую в среде CLIPS. Далее нужно
вставить в начало файла стандартные строки с указанием имен выходного
файла и файла модели. В конец нужно добавить выходные строки и команду
(close). Далее нужно сохранить файл, указав расширение .bat.
Применение метода дерева решений при имитационных экспериментах
Элементарное исследование адекватности модели можно провести с
использованием двух различных ГС с оценкой сравнительных результатов
обслуживания путем построения деревьев решений. Разные ГС используют
разные выборки данных из общего комбинаторного пространства, но они
должны давать похожие деревья. Если деревья будут сильно отличаться, то
следует поменять ГС или, что гораздо сложнее, увеличить объем выборки
(изменить план и программу автоматизации его составления). Идентичность
деревьев можно проверить по похожести значений атрибутов правил “если,
тогда” попадания в сходственные целевые вершины деревьев.
Главной задачей
является построение
деревьев решений,
обеспечивающих практическую полезность выявляемых с их помощью
правил классификации примеров из таблицы смоделированных данных. Это
не простая задача, так как часто построенное дерево обладает излишней
ветвистостью и содержит множество классов с малым числом примеров в
них, что снижает обобщающую ценность дерева для принятия решений.
Пользователь должен предварительно выбрать целевой атрибут из
числа выходных характеристик качества обслуживания.
Целевой
атрибут не участвует в делении, но качество дерева при пробном делении
примеров по значениям разных входных атрибутов будут оцениваться по
минимуму энтропии информации в целевых классах. Энтропия
характеризует неоднородность классов, которая по ходу деления
уменьшается. Энтропия информации для чистых классов на терминальном
уровне
равна нулю. Энтропия подсчитывается
по известным
функциональным критериям Квинлана, либо Джини [Паклин, Орешков,
2010]. Для каждого числового атрибута алгоритм Джини будет искать
пороговое значение в упорядоченном списке
значений, при котором
разделение примеров на потомки, (число которых равно числу значений
входного атрибута деления), дает минимум энтропии, которая оценивается
по целевого атрибута. Для категориальных атрибутов алгоритм Джини
рассмотрит все возможные способы разделения множества категорий на два
класса, и выберет то, которое дает минимум энтропии. В итоге на каждом
шаге будет выбран “лучший” либо числовой, либо категориальный атрибут.
Подобные алгоритмы реализуют так называемое “обучение с учителем”. В
итоге на терминальном уровне образуются наиболее
упорядоченные
классы: чистые или с минимальным числом примесей. Образовавшиеся
классы должны содержать достаточное число примеров. Пути в любую
терминальную вершину
можно описать с помощью
правил
“если..,тогда..”. Такой путь в дереве называют шаблоном целевого класса или
моделью данных Data Mining. Он то и представляет собой новую и
практически полезную информацию, позволяющую решать задачи типа “что
сделать, чтобы…”.
Дерево должно
обобщать близкие примеры и не быть слишком
ветвистым с чрезмерным
числом мелких классов. Для этого следует
осуществить переход от числовых к категориальным (интервальным)
Применение метода дерева решений при имитационных экспериментах
оценкам целевого атрибута.
Смоделированные данные из файла data.xml
должны быть предварительно импортированы в БД, в данном случае, Access
в виде, например, таблицы Test. Пользуясь запросами на выборку, можно
перейти от числового к категориальному
значению целевого атрибута,
создав новое поле для категориальной переменной, например, z-finished. На
основной форме базы данных выбрать объект “Запросы” и выбрать в
контекстном меню опцию “Создание запроса в режиме конструктора”. На
экране должна появиться форма для составления запроса на выборку.
В окне Test следует найти имя поля, по числовым значениям которого будет
производиться отбор записей в новое поле z-finished текстового типа. Пусть,
например, таким является числовое поле с именем zayavok-finished. На нем
следует сделать двойной щелчок. Имя этого поля покажется в нижней
таблице в строке “Поле”. Далее следует установить курсор на поле “Условие
отбора”, где задать один из диапазонов ограничений на значение, например,
>41 And <55. После этого следует нажать на верхней панели значок
“Выполнить” с изображенным на нем восклицательным знаком. Выбрать в
основном меню “Запрос” и далее “Обновление”.
Рис.6. Фрагмент обновленной таблицы по заданному условию отбора в новое
поле (последняя колонка).
Повторив действия для других условий отбора, получим полностью
заполненное
соответствующими
символьными значениями новое
категориальное поле z-finished
в таблице Test (рис.6), которое при
построении деревьев решений заменит числовое поле zayavok-finished.
Аналогичным образом следует поступить с некоторыми числовыми
входными атрибутами, в частности, с дисперсией потока поступления
(disp_post). В базовом варианте используются экспоненциальные потоки,
при которых дисперсия максимальна и равна квадрату среднего интервала
времени между событиями поступления заявок. При тестировании
программы использовались
также другие нестандартные функции
распределения с меньшей, иногда в десятки раз, дисперсией. Базовая
дисперсия получила категорию great, меньшие значения дисперсии
Применение метода дерева решений при имитационных экспериментах
заменялись на категории middle и little. Дисперсия – важный параметр,
поскольку является причиной очередей (несмотря на то, что λ/µ < 1). Закон
распределения задавался в программе, по сути, категориальным значением
дисперсии поступления.
Деревья решений получали с помощью аналитической платформы Deductor
Studio 4.4 фирмы “Аналитические технологии” (BaseGroup, г.Рязань)
[www.basegroup.ru]. В качестве исходных данных использовали таблицу Test
БД Access после
преобразования
некоторых числовых атрибутов в
категориальный тип. Среда Deductor позволяет редактировать типы полей.
Алгоритм построения дерева решений определяет относительную важность
входных атрибутов возможного деления данных по наибольшей скорости
уменьшения энтропии информации вершин-потомков. Поэтому на вершине
дерева оказывается самый эффективный атрибут деления. Например, на
рис.7 первым атрибутом деления оказался атрибут sred_disp_obsl_2 (средняя
дисперсия обслуживания в 1-ом узле 2-го типа заявок). Терминальная
вершина дерева характеризуется категориальным значением количества
обслуженных заявок: mnogo, norm, malo (этот атрибут выбран целевым). При
установке курсора на терминальный узел и нажатии кнопки с изображением
очков, систем выдает правило “если, тогда..”, которое фактически означает
“что сделать, чтобы..”. Как видно, для z-finished = mnogo действует правило:
Если sred_disp_obs1_2 = 5.215 И zayavok_4 = 12 И trep1/2 = 0.5 (время
ремонта каналов 1/2) Тогда mnogo. Однако имеется и альтернативное
решение: если sred_disp_obs1_2 = 5.215 И zayavok_4 = 12 И trep = 1.5 И
zayavok_1 = 12, тогда тоже mnogo (рис. 7)
Рис.7. Пример построения дерева решений и получения правил
классификации.
Применение метода дерева решений при имитационных экспериментах
Адекватность получаемой модели данных при сокращенном плане
экспериментов оценивали по идентичности правил “Если..,тогда” (см. рис.7),
описывающих сходственные терминальные узлы дерева (классы), при
выборе
различных ГС. Иными словами,
для допустимой степени
сокращения объема экспериментов эти правила должны быть похожи
независимо от ГС. В противном случае надо применять план с ядром 2 10 и
выше, т.е. с большим числом опытов. В нашем случае компромисс
достигается уже при 512 экспериментах, о чем свидетельствует похожесть
правил для
ГС1 и ГС2 сходственных терминальных вершин дерева
решений.
ГС1
ГС2
Если
Если
zayavok_5 = 30 И
zayavok_5 = 30 И
sred_disp_post = 176,26 И
sred_disp_post = 179,11 И
sred_disp_obs1_2 = 5,21
sred_disp_obs1_2 = 7,22
Тогда
Тогда
z-finished = mnogo
z-finished = mnogo
Подобных примеров - множество, для разных ГС при сравнении других
терминальных вершин. Это подтверждает возможность получения
адекватной модели искомых классов при относительно небольшом объеме
выборочных данных дробного эксперимента.
Предстояло также убедиться в существенном влиянии дисперсии генератора
случайных величин на характеристики качества обслуживания. Применяли
генераторы нестандартного типа с одинаковым заданным математическим
ожиданием и различными графиками функций распределения, т.е. с
различной дисперсией. Сравнивали результаты с базовым экспоненциальным
генератором при том же математическом ожидании. Дисперсия при этом
изменялась в пределах от pj2 до pj2/50 (где pj – средний интервал времени
между заявками). Величина дисперсии поступления при построении дерева
решения задавалась в категориальном виде: disp_post = great (для
экспоненты), midle или little – для остальных случаев. Как и предполагалось,
атрибут disp_post часто оказывается первым (самым важным) атрибутом
ветвления дерева. Аналогично ведет себя другой “сильный” атрибут – число
каналов обслуживания в узле 2, что вполне логично, если целевым атрибутов
выбрано число обслуженных заявок (рис.8)
Применение метода дерева решений при имитационных экспериментах
Рис.8. Фрагмент дерева решений с варьированием числа каналов в узле 2.
Выводы. Рассмотренные метод и программные средства для построения
деревьев решений позволяют классифицировать результаты спланированных
имитационных экспериментов и тем самым просто решать задачи типа “что
сделать, чтобы…”, имея правила “если.., тогда..” для терминальных вершин
дерева (классов). Метод дает альтернативные решения, реализуя при этом
обучающую функцию программирования имитационной модели и обработки
результатов. Методика и комплекс программ в течение ряда лет успешно
применяются в лабораторном практикуме по курсу “Моделирование систем”.
Необходимую документацию и полный код программы можно получить,
обратившись к автору по электронной почте: vpodlesnyh@yandex.ru.
Литература
1. [Азбель,1986] Азбель В.О. Организационно-технологическое проектирование
ГПС. Л.,”Машиностроение”, 1986.
2. [Палин, Орешков, 2010] Паклин Н.Б.,Орешков В.И. Бизнес-налитика: от данных к
знаниям.: Учеб. Пособие, 2-е изд.- СПб.: Питер, 2010, с.428-465.
3. [Подлесных, 2014] Подлесных В.Г. Продукционная парадигма моделирования
сложных объектов и систем, ВШЭ, 2014. В этом сборнике.
4. [Частиков и др., 2001] Частиков А.П., Гаврилова Т.А., Белов Д.Д. Разработка
экспертных систем: среда CLIPS. - СПб., БХВ Петербург, 2001.
5. www.basegroup.ru. Сайт компании “Аналитические технологии”, г.Рязань.
Статья принята к публикации в сборнике трудов научно-практического семинара
кафедры ИТАС, выпуск 17, март 2014 г.
Download