Смекни!
smekni.com

Логическое и функциональное программирование (стр. 2 из 16)

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

ЕСЛИ А ТО В,

ЕСЛИ (условие1) И (условие2) И … И (условиеN) ТО (условиеN+1),

где условиеi может быть Xi =C1, Xi < C2, Xi > C3, C4 < Xi < C5 и т.д. Здесь Xi - переменная, Cjконстанта.

Так классификация лиц в рассматриваемом примере может быть произведена с помощью четырех логических правил:

1. ЕСЛИ (голова овальная) И (есть носогубная складка) И (есть очки) И (есть трубка) ТО (класс1).

2. ЕСЛИ (глаза круглые) И (лоб без морщин) И (есть борода) И (есть серьга) ТО (класс1)

3. ЕСЛИ (нос круглый) И (лысый) И (есть усы) И (брови подняты вверх) ТО (класс2).

4. ЕСЛИ (оттопыренные уши) И (толстые губы) И (нет родинки) И (есть бабочка) ТО (класс2).

Математическая запись этих правил выглядит следующим образом:

Такие правила имеют две основных характеристики: точность и полноту.

Точность правила – это доля случаев, когда правило подтверждается, среди всех случаев его применения (доля случаев В среди случаев А).

Полнота – это доля случаев, когда правило подтверждается, среди всех случаев, когда имеет место объяснимый исход (доля случаев А среди случаев В).

Правила могут иметь какие угодно сочетания точности и полноты. За исключением одного случая, если точность равна нулю, то равна нулю и полнота, и наоборот.

Точное, но неполное правило: Люди смертны (А – человек, В – смертен).

Неточное, но полное правило: Студенты посещают занятия (А – студент, В - посещает).

Методы поиска логических закономерностей в данных обращаются к информации не только в отдельных признаках, но и в сочетании признаков. Это основное преимущество этих методов перед многими другими методами в ряде случаев.

Вернемся к примеру.

На первом шаге определяется признак с наибольшей дискриминирующей силой. Для этого определяется отношение вхождения объектов в разные классы в соответствии со значениями разных признаков:

Признаки Х1 Х2 Х3 Х4 Х5 Х6 Х7 Х8 Х9 Х10 Х11 Х12 Х13 Х14 Х15 Х16
Кл1/Кл2 3/3 4/6 4/6 5/5 3/3 6/4 4/6 3/3 5/5 6/4 6/4 3/3 5/5 4/6 4/6 5/5

Здесь одинаковой и максимальной силой обладают сразу семь признаков: Х2, Х3, Х6, Х7, Х10, Х11, Х14, Х15. Поэтому случайным образом выбираем один из них в качестве ведущего. Пусть это будет Х6. От этого признака отходит две ветви. Первая для значения Х6 = 0, а вторая – для Х6 = 1.

Объекты Признаки
Х1 Х2 Х3 Х4 Х5 Х6 Х7 Х8 Х9 Х10 Х11 Х12 Х13 Х14 Х15 Х16
2 1 0 1 1 0 0 1 1 0 1 1 1 0 0 1 0
7 1 1 0 1 0 0 0 0 1 1 0 0 1 1 1 1
12 1 0 1 0 1 0 1 0 1 0 1 1 0 1 1 0
13 1 1 0 1 1 0 1 1 1 0 0 0 1 0 0 1
14 0 1 1 1 0 0 1 0 1 0 1 0 0 1 1 1
16 0 1 1 1 0 0 1 1 0 0 1 0 1 0 1 1
2/2 1/3 1/3 2/3 2/2 1/4 1/4 1/2 1/3 2/0 1/3 1/1 1/2 1/2 2/3 1/3

Для ветви Х6 = 0 окончательное решение дает признак Х10. Он принимает значение 1 на объектах 2 и 7 из первого класса и значение 0 на объектах 12, 13, 14 и 16 второго класса. Ветвь Х6 = 1 устроена значительно более сложно и требует дополнительных ветвлений. В результате получаем дерево.

Как следует из рисунка дерево логического вывода, выросшее из признака Х6 имеет 6 исходов. Только два из этих исходов имеет по четыре объекта (полнота 4/8). Один исход группирует три объекта (полнота 3/8), один – два объекта (полнота 2/8) и три исхода включают по одному объекту (полнота 1/8). Отсюда, качество алгоритма не очень высоко, так как обладает малой полнотой. Алгоритм, кроме того, способен приводить к качественным решениям только в случае независимых признаков.

Домашнее задание

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



Компьютерное задание

Реализовать дерево решений, прямой и обратный вывод средствами Access. Для реализации необходимо использовать VBA. В Access 2000 по умолчанию установлена модель данных ADO (ActiveXDataObjects). Для установки MSDE, что соответствует модели данных DAO, используемой в Access 97, необходимо использовать другой файл установки. Необходимо вставить установочный компакт диск и дважды щелкнуть на имени файла SETUPSQL.EXE в папке &bsol;Sql&bsol;x86&bsol;Setup.

Иерархия ADO проще иерархии объектов модели

Объекты ADO предназначены для организации доступа к источникам данных, их редактирования и обновления. Модель ADO включает в себя объекты, необходимые для выполнения следующих задач:

1. Соединение с источником данных.

2. Создание объекта, реализующего команды SQL.

3. Указание столбцов, таблиц и значений в качестве переменных параметров в команде SQL.

4. Выполнение команды SQL.

5. Сохранение результатов выполнения в хеше.

6. Создание виртуального представления в хеше, чтобы пользователь мог сортировать, фильтровать данные в БД и перемещаться по ней.

7. Редактирование данных.

8. Обновление источника данных в соответствии со всеми изменениями сделанными в хеше.

9. Фиксация или отмена изменений, внесенных в ходе транзакции, и последующее закрытие транзакции.

К классам объектов в модели ADO относятся:

· Connection – представляет среду, в которой будет выполняться обмен данными с источником данных. Соединение должно быть установлено до начала выполнения любых других операций.

· Command – способ управления источником данных. Можно удалять, добавлять, обновлять и считывать данные из источника.

· Parameter – представляет переменные компоненты объекта Command. В командах часто необходимо указывать вспомогательные параметры, уточняющие способ выполнения команд. Параметры являются изменяемыми, так что перед выполнением команд их можно модифицировать

· Recordset – служит локальным хешем данных, считанных из источника данных.

· Field – представляет столбец таблицы Recordset. Поле содержит свойства определяющие поле. Пример таких свойств – Type, Value.

· Error – возвращает результат всякий раз, когда в приложении возникает ошибка. Каждый объект Connection имеет отдельное семейство объектов Error.

· Property – определяетобъекты Connection, Command, Field, Recordset. Каждый объект ADO обладает набором свойств, задающим объект и управляющим его поведением.

· Collection – служит для объединения сходных объектов в группы.

Обращение к объектам ADO выглядит так:

ADODB.имя_объекта.

При создании нового проекта, Access 2000 загружает только библиотеку объектов ADO. Если необходимо работать с DAO, добавляется библиотека объектов DAO в диалоге Preferences редактора VB. Для открытия VBEditor надо нажать Alt + F11. Диалог Preferences открывается командой меню Tools>References. В этом диалоге надо выбрать DAO 3.6 ObjectLibrary.

Для того чтобы связать объект Recordset в модели ADO с данными необходимо:

Dim rst As New ADODB.Recordset

rst.Open SQLVar,CurrentProject.Connection

Здесь SQLVar символьная переменная, в которой определяется набор данных либо как выражение SQL, либо как имя таблицы. Например, если необходимо открыть таблицу с именем Student, вторая строка будет выглядеть:

rst.Open“Student”, CurrentProject.Connection

В случае DAO необходимо создать объектную переменную rst типа Recordset без ADODB, а затем использовать метод OpenRecordset:

Set rst = CurrentDB.OpenRecordset(SQLVar, dbOpenDynaset).

Здесь необходимо быть аккуратным, поскольку написание для объектов Recordset в обеих моделях одинаково.

Для перехода в обеих моделях используются методы Move:

· rst.MoveFirst | MoveLast | MoveNext | MovePrevious | Moven – соответственно : Перейти к первой записи | к последней | к следующей | к предыдущей | на n записей

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

Переменная_Recordset критерий, Пропустить Строки, Направление Поиска, Старт

Здесь:

· критерий – строковое значение (обязательно в кавычках), определяющее имя столбца (поля), оператор сравнения и искомое значение. Это единственный обязательный параметр.

· Пропустить строки – обозначает число строк, начиная с текущей или стартовой позиции, которое необходимо пропустить перед началом поиска.

· Направление поиска определяет должен ли поиск вестись по направлению к концу набора (adSearchForward) или к началу (adSearchBackward).

· Старт – закладка, обозначающая начальное положение указателя текущей записи при поиске: adBookmarkFirst (1) – первая запись, adBookmarkLast (2) – последняя запись, adBookmarkCurrent (0) – текущая запись.