Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Системы искусственного интеллекта. Инструменты разработки. Экспертные системы. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
21
decision_tree = decision_tree.fit(iris.data, iris.target) r = export_text(decision_tree, feature_names=iris['feature_names']) print(r)
Пример вывода дерева в текстовом виде:
|--- petal width (cm) <= 0.80 | |--- class: 0 |--- petal width (cm) > 0.80 | |--- petal width (cm) <= 1.75 | | |--- class: 1 | |--- petal width (cm) > 1.75 | | |--- class: 2
В простых и коротких наборах данных текстовый вид, на взгляд авторов, является предпочтительным.
2.3 Лабораторная работа. Реализация дерева решений
В качестве примера рассмотрим типовую программу построения дерева решений для поддержки прикладной практической задачи – прогнозирование решения о заключения кредитного договора. Этот пример является типичным представителем задачи машинной классификации, основанной на изучении данных, которые собраны в ходе предварительного анализа предметной области и аккумуляции проведенных операций.
Т а б л и ц а 2.1. Пример набора исходных данных
Возраст
Стаж
Рейтинг
Семейное
положение
Выдавать
кредит?
36
10 9 Холост
Нет
42
12 4 Женат/замужем
Нет
23 4 6
Нет инф.
Нет
52 4 4
Женат/замужем
Нет
43
21 8 Женат/замужем
Да
44
14 5 Холост
Нет
66 3 7
Нет инф.
Да
35
14 9 Холост
Да
52
13 7 Нет инф.
Да
35 5 9
Нет инф.
Да
…
24 3 5
Женат/замужем
Нет
18 3 7
Холост
Да
45 9 9
Холост
Да
Пусть набор исходных данных представляет собой таблицу, обобщающую действия (решения) условного объекта по заключению договора кредитования. Поскольку объем таких данных обычно достаточно велик, в табл. 2.1
22
представлена лишь некоторая часть данных, которая будет использована для реализации обучения модели в программе. Сами данные в текущей реализации, будут храниться в текстовом виде, в файле формата CSV (от англ. Comma- Separated Values, т. е. значения, разделённые запятыми). Пример возможного содержания файла и структуры записей представлен на рис. 2.9.
Рис. 2.9. Исходные данные в формате CSV
Согласно принципам машинного обучения, первая строка табл. 2.1 (четыре заголовка – возраст, стаж, рейтинг, семейное положение) представляет собой список признаков (от англ. features), последний столбец строки – целевая переменная (от англ. target), значение которой необходимо предсказать. Таким образом, основываясь на анализе комбинации признаков во время обучения, модель должна формировать положительный или отрицательный ответ на мнемоническую форму вопроса: «Следует ли заключать договор кредитовая,
учитывая заданную комбинацию признаков?»
23
В файле, изображенном на рис. 2.9, наименование признаков указано в первой строке и полностью соответствуют заголовкам столбцов табл. 2.1 (Age – возраст, Experience – стаж, Rank – кредитный рейтинг, Married – семейное положение). Переменная Credit соответствует целевой переменной из табл. 2.1.
В первую очередь в файл с реализацией модели (скрипт-программа), необходимо импортировать внешние библиотеки, к функциям которых будет выполняться обращение в ходе выполнения программы:
import pandas from sklearn import tree from sklearn.tree import DecisionTreeClassifier from sklearn.tree import export_text import graphviz
Библиотека pandas предназначена для обработки и анализа данных, в текущем примере используется одна из функции библиотеки, позволяющая работать с данными структурированными в файле формата CSV. Библиотека sklearn содержит реализацию различных алгоритмов машинного обучения, модуль tree – реализацию класса дерева решений и метод export_text, который уже приводился в примерах ранее. Модуль graphviz содержит программный интерфейс для обращения к библиотеке векторной графики Graphviz, с помощью которой в скрипт-программе будет реализован вывод дерева в графической форме и сохранение в файл PDF.
Для загрузки файла CSV с исходными данными в скрипт-программу можно воспользоваться методом read_csv (из модуля pandas), в качестве аргумента которому передается имя файла (в текущем каталоге исполнения скрипт-программы):
df=pandas.read_csv("data.csv")
Поскольку для построения модели необходимо, чтобы все исходные данные имели числовое представление, следует преобразовать текстовые признаки семейного положения (от англ. single – холост, married – замужем/женат, Na – нет данных) и значение целевой переменной (Credit, YES – заключить договор, NO – не заключать) в числовую форму. Для этого можно использовать метод map модуля pandas, который позволит отобразить текстовые метки в числовую форму:
d = {'single': 0, 'married': 1, 'Na': 2} df['Married'] = df['Married'].map(d)
d = {'YES': 1, 'NO': 0} df['Credit'] = df['Credit'].map(d)
24
Переменная d представляет собой словарь Python, который хранит порядок отображения (single → 0, married → 1, Na→ 0) текстовой метки и целого числа. Обратите внимание на способ замещения текста на число во второй строке листинга: выражение df['Married'].map(d) преобразует текст из столбца Married, переменной содержащей файл df, в соответствующее число и записывает результат преобразования обратно в этот же столбец. Аналогичным образом выполняется преобразование текстовых данных в целевом столбце Credit.
Теперь необходимо разделить столбцы признаков и целевой переменной, чтобы передать их по отдельности в конструктор дерева DecisionTreeClassifier:
features = ['Age', 'Experience', 'Rank', 'Married'] target = ['yes', 'no']
x = df[features] y = df['Credit']
В переменную x сохраняются значения столбцов признаков (из списка features), в переменную y – значения целевой переменной Credit. Создадим
экземпляр дерева и выполним его обучение с помощью метода fit(), аргументами которого выступают список признаков (x) и список значений целевой переменной (y):
dtree = DecisionTreeClassifier() dtree = dtree.fit(x, y)
Визуализируем дерево в виде графа и сохраним в файл PDF. Для этого воспользуемся методом export_graphviz():
dot_data = tree.export_graphviz(dtree, out_file=None, feature_names=features, class_names=target, filled=True, rounded=True, special_characters=True)
graph = graphviz.Source(dot_data) graph.render("dtree")
Аргументы метода: экземпляр дерева (dtree), список именований признаков (feature_names), значения целевой переменной (class_names), ряд настроек, касающихся оформления, которые уже приводились в предыдущих примерах. В результате работы, в каталоге хранения скрипт-программы, будет создан файл dtree.pdf, в котором будет сохранено визуализированное отображение дерева решений в виде графа (рис. 2.10).
25
Рис. 2.10. Дерево решений (векторный формат)
Рассмотрим структур полученного дерева подробнее. В вершине графа указаны несколько данных:
− Rank <= 6.5 означает, что решение по каждому клиенту с рейтингом 6.5 и
менее будет следовать за стрелкой «Истина» (влево, True), остальные — за стрелкой «Ложь» (вправо, False).
− gini=0.497 обозначает значение статистического индекса Джини,
показывающего неравномерность распределения выборок. Индекс
26
представляет собой число от 0.0 до 0.5, где 0.0 означает, что все выборки получили одинаковый результат, а 0.5 означает, что разделение выполняется точно посередине. Индекс Джини рассчитывается согласно выражению: 𝑔 = 1 − (𝑥/𝑛)2− (𝑦/𝑛)2, где x — количество положительных решений, n — количество выборок, y — количество отрицательных решений.
− Samples = 26 означает, что на данный момент в обработке присутствует
26 выборок, т. е. все доступные выборки в данном примере, поскольку это первый лист дерева.
− value = [12, 14] означает, что из 26 выборок, 12 дадут результат yes, а 14
получат no.
Второй уровень графа содержит два возможных решения: левое (ветвь True) и правое (ветвь False).
Левая ветвь:
− Индекс Джини равен 0.0, означает, что все выборки получили одинаковый
результат.
− samples = 10 означает, что в этой ветке осталось 10 выборок с рейтингом
6,5 и ниже.
− value = [10, 0] означает, что 10 выборок получают решение yes, и ни одна
– no.
Правая ветвь:
− Married <= 0.5 означает, что выборки со значением поля семейного
положения менее 0.5 будут следовать за стрелкой влево (это означает все холостые), остальные (женатые и без данных) будут следовать за стрелкой вправо.
− gini = 0.219 означает, что около 22 % выборок будут идти в одном
направлении.
− samples = 16 означает, что в этой ветке осталось 16 выборок (т. е. выборок
с рейтингом выше 6.5).
− value = [2, 14] означает, что из 16 выборок 2 оканчиваются результатом no,
а 14 – yes.
По аналогии интерпретируются остальные уровни (ветви) дерева.
Поскольку основной целью формирования дерева, в общем случае, является прогнозирование значений целевой переменной по набору признаков, то полученное дерево решений можно использовать для того, чтобы предсказать возможность положительного или отрицательного решения при той, или иной комбинации признаков. Например, запросим прогноз следующей комбинации:
print(dtree.predict([[40, 10, 7, 1]])) [0]
Мнемоническая форма запроса означает: возраст – 40, стаж – 10, рейтинг – 7, семейное положение – женат / замужем. Результат [0] во второй строке означает отрицательный прогноз (no).
27
Аналогичный запрос с другими признаками вернет положительный результат:
print(dtree.predict([[38, 5, 8, 0]])) [1]
Как уже отмечалось ранее, вместо графического, можно сформировать текстовое представление дерева:
r = export_text(dtree, feature_names=features) print(r)
Пример дерева в текстовом виде продемонстрирован на рис. 2.11.
Рис. 2.11. Дерево решений (текстовый формат)
28
3. ЭКСПЕРТНЫЕ СИСТЕМЫ
3.1. Компоненты экспертной системы
Экспертные системы (ЭС, expert system  это программно-технические средства (в более узком смысле  программы для ЭВМ) призванные, используя логику мышления человека, выполнять функции эксперта при решении задач в рамках некоторой предметной области. В этих системах используются извлеченные из экспертов знания, которые в виде формализованной информации могут потребоваться в процессе логического вывода. За счет возможности накапливать знания многих людей, сохранять и предоставлять возможность их использовать, ЭС могут обеспечивать повышение уровня объективности проводимой экспертизы, иногда и формирование конечных решений. В составе ЭС обычно имеется подсистема объяснения, которая призвана объяснять полученные выводы и логику их формирования, примерно так же, как это делает эксперт-человек. По существу, экспертные системы – это модели поведения экспертов в определенной области знаний.
Основой для создания экспертных систем и других интеллектуальных систем служит инженерия знаний. Инженерия знаний – это раздел искусственного интеллекта, в рамках которого решаются вопросы, связанные с извлечением знаний, представлением знаний и манипулированием знаниями.
Выявленные знания в структурированном виде накапливаются в базе знаний, которая состоит из фактов (статических сведений о предметной области), а также правил анализа и процедур обработки информации как набора инструкций, используемых для выработки решений. Обоснованных советов и иных необходимых пользователю сведений.
Экспертные системы нашли весьма широкое применение, первые ЭС предназначались в медицине для диагностики заболеваний. Кроме того, экспертные системы находят применение в самых различных сферах деятельности людей при решении широкого спектра вопросов. Главным образом в системах управления самыми различными системами, например, при формировании портфеля инвестиций или оценке финансовых рисков и конкурентов в вопросах конструирования, в частности, при разработке технологий. Экспертные системы в качестве составляющих входят в работу различных «умных» механизмов: от бытовой техники до сложнейших объектов инфраструктуры (электростанций, систем предупреждения об опасностях или объектов военного назначения).
Обобщенная структура экспертной системы представлена на рис. 3.1.
29
База данных
База знаний
Машина вывода
Подсистема
объяснений
Интерфейс
инженера знаний
Интерфейс
пользователя
+
Инженер
знаний
Эксперт
Рис. 3.1. Обобщенная структура экспертной системы
Основные компоненты ЭС:
− база знаний – ядро ЭС, совокупность формализованных знаний
предметной области, записанная в форме, понятной эксперту, а также хранящаяся в машинном представлении;
− база данных (рабочая память) – служит для хранения данных,
описывающих текущее состояние решаемой задачи;
− машина вывода – на основе знаний, содержащихся в базе знаний,
обеспечивает реализацию механизмов формирования новых знаний.
Наличие у ЭС базы знаний и машины вывода является ее отличительным признаком.
В состав экспертной системы обычно включены:
− подсистема объяснений, призванная в наглядном виде предоставлять
разъяснения о том, как получены те или иные заключения;
− интерфейс инженера знаний – подсистема, предназначенная для
пополнения базы знаний извне;
− пользовательский интерфейс.
Экспертная система работает в двух основных режимах: в режиме приобретения знаний и режиме консультации.
В режиме приобретения знаний общение с ЭС осуществляет эксперт при посредничестве инженера по знаниям. Эксперт описывает проблемную область в виде совокупности данных (фактов) и правил. Факты определяют объекты, их характеристики и значения. Правила и факты обеспечивают возможность манипулирования с объектами, в том числе и получение новых знаний.
В режиме консультации общение с ЭС осуществляет пользователь, который может даже и не быть специалистом в проблемной области. Исходные данные (факты) от пользователя поступают через интерфейс в машину вывода.
Машина вывода на основе входных данных и правил из базы знаний формирует
30
решение задачи. Если принятое решение не понятно пользователю, то он может воспользоваться возможностями подсистемы объяснений.
Наибольшее распространение получила продукционная модель представ- ления знаний, когда база знаний состоит из набора правил. Перебором правил в базе знаний управляет машина вывода. Для этих целей используются процедуры реализующие процессы поиска. Эти процедуры обычно «зашиты» в машине вывода.
Информация из базы данных последовательно сопоставляется с компонентами базы знаний, в результате чего при определенных условиях могут формироваться новые знания, которые участвуют в дальнейшей работе ЭС. Такого рода циклы повторяются до тех пор, пока не будет получено искомое решение или ЭС «признается» в невозможности продолжения поиска решения.
Для реализации ЭС созданы экспертные системы-оболочки (EXSYS, GURU, KEE, EMYCIN, Карра), инструментальные среды, в которых задействованы технологии программирования (OPS 5, KEATS), языки логического программирования (Лисп, Пролог), языки на основе фреймов (KRL, FRL), продукционно-фреймовые языки (PILOT/2) и языки объектно­ориентированного программирования (SmallTalk). Традиционные объектно­ориентированные языки программирования обычно используются не для создания ЭС, а при разработке модулей СИИ.
3.2. Этапы разработки экспертной системы
Рассмотрим основные этапы разработки ЭС при решении задач, связанных с принятием решения в сфере взаимодействия между партнерами и конкурентами.
3.2.1. Идентификация задачи
На стадии идентификации определяются цели и задачи создания ЭС, а также существенные особенности задачи.
Целью и задачами могут быть формализация знаний экспертов; улучшение качества принимаемых решений; автоматизация работы эксперта или пользователя; тиражирование знаний эксперта; повышение компетентности пользователей и др. К существенным особенностям относятся предметная область, широта постановки задачи, требуемые ресурсы.
Основное содержание этой стадии состоит в получении ответа на вопрос: «Подходит ли данная предметная область для применения ЭС, или, другими словами, осуществляется оценка выполнимости проекта?»
При анализе деятельности фирмы (группы фирм) целесообразно ввести оценку конкурентоопасности, характеризующую степень возможного негативного воздействия, которое можно ожидать со стороны конкурентов.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]