- •Системи підтримки прийняття рішень методичні вказівки
- •Частина 1
- •Содержание
- •1 Лабораторная работа № 1. Создание хранилищ данных. Olap – технология анализа данных 14
- •2 Лабораторная работа № 2. Прогнозирование с помощью нейронных сетей в программе Deductor 43
- •2.3 Контрольные вопросы 59
- •3 Лабораторная работа № 3. Знакомство с Neural Network
- •4 Рекомендованная литература 78 Введение в сппр
- •1 Лабораторная работа № 1 Тема: Создание хранилища данных. Olap – технология анализа данных.
- •1.1 Аналитическая платформа Deductor
- •1.2 Хранилища данных – подготовка данных для анализа
- •Принципы организации хранилища:
- •1.3 Описание бизнес-задачи по созданию аналитической отчетности аптечной сети
- •1.4 Создание хранилища данных в системе Deductor
- •1.5 Анализ данных с помощью кросс-таблиц и визуализации
- •1.5.2 Срезы из хранилища данных и olap кубы
- •1.5.3 Кросс-диаграмма
- •1.5.4 Фильтрация данных в кубе
- •1.6 Задание к лабораторной работе
- •1.7 Контрольные вопросы
- •2 Лабораторная работа № 2 Тема: Нейронные сети. Прогнозирование с помощью нейронной сети в программе Deductor
- •2.1 Нейронные сети: основные понятия
- •2.1.1 Искусственный нейрон и нейронная сеть
- •2.1.2 Обучение
- •2.1.3. Нейронные сети обратного распространения
- •2.2 Прогнозирование с помощью нейронных сетей в Deductor
- •2.2.1 Исходные данные
- •2.2.2 Расчет автокорреляции столбцов
- •2.2.3 Удаление аномалий и сглаживание
- •2.2.4 Скользящее окно 12 месяцев назад
- •2.2.5 Обучение нейросети
- •2.2.6 Построение прогноза
- •2.2.7 Результат
- •2.2.8 Выводы
- •2.3 Контрольные вопросы
- •2.4 Рынок нейропакетов
- •3 Лабораторная работа №3 Тема: зНакомство с neural network toolbox пакета mAtlab
- •3.1 Нейронные сети: графический интерфейс пользователя
- •3.1.1 Управляющие элементы nnTool
- •3.1.3 Разделение линейно-неотделимых множеств
- •Пример 3.2. Пусть требуется создать нейронную сеть, выполняющую логическую функцию "исключающее или".
- •3.1.4 Задача аппроксимации
- •Пример 3.3. Необходимо выполнить аппроксимацию функции , где , а n - число точек функции.
- •3.2 Функции Matlab для работы с нейронными сетями
- •1) Линейная функция активации purelin.
- •2) Логистическая функция активации logsig.
- •3) Создание новой нейронной сети и ее обучение
- •3.3 Задание к лабораторной работе
- •3.4. Контрольные вопросы
- •4 Литература
3.1.4 Задача аппроксимации
Одним из самых замечательных свойств нейронных сетей является способность аппроксимировать и, более того, быть универсальными аппроксиматорами. Сказанное означает, что с помощью нейронных цепей можно аппроксимировать сколь угодно точно непрерывные функции многих переменных.
Нейросетевые алгоритмы аппроксимации экспериментальных данных считаются лучшими. Они основываются на теоретических исследованиях А.М.Колмогорова, где доказано, что любую функцию многих переменных можно смоделировать двухслойной нейронной сетью с прямыми связями с n нейронами входящего слоя, (2n+1) нейронами скрытого слоя, m нейронами выходного слоя с функциями активации f, которые должны быть непрерывными и дифференцируемыми в области определения. Этим требованиям отвечают сигмоидальные функции.
Математическая модель двухслойной сети
имеет вид:
,
где ak, bkm, cmi – синаптические коэффициенты, f1, f2, f3 – передаточные функции слоев (функции активации).
Пример 3.3. Необходимо выполнить аппроксимацию функции , где , а n - число точек функции.
Заготовим целевые данные, введя в поле "Значение" (Value) окна создания новых данных выражение:
sin(5*pi*[1:100]/100+sin(7*pi*[1:100]/100)).
Эта
кривая представляет собой отрезок
периодического колебания с частотой
5π/N, модулированного по фазе гармоническим
колебанием с частотой
(рис.
3.10).
Теперь заготовим набор обучающих данных (1, 2, 3, …, 100), задав их следующим выражением: 1:100.
Выберем персептрон (Feed-Forward Back Propagation) c тринадцатью сигмоидными (TANSIG) нейронами скрытого слоя и одним линейным (PURELIN) нейроном выходного слоя. Обучение будем производить, используя алгоритм Левенберга-Маркардта (Levenberg-Marquardt), который реализует функция TRAINLM. Функция ошибки - MSE.
Теперь можно приступить к обучению. Для этого указываем какие наборы данных должны быть использованы в качестве обучающих и целевых, а затем проводим обучение.
Рисунок 3.9 - Архитектура сети для решения задачи аппроксимации
Рис. 3.10 иллюстрирует разницу между целевыми данными и полученной аппроксимирующей кривой. Из графика обучения сети видно, насколько уменьшилась ошибка аппроксимации за 100 эпох обучения. Форма кривой обучения на последних эпохах говорит также о том, что точность приближения может быть повышена.
Рисунок 3.10 – Данные и аппроксимирующая функция
3.2 Функции Matlab для работы с нейронными сетями
1) Линейная функция активации purelin.
Эта функция описывается соотношением
a = purelin(n) = n.
Построим график функции в диапазоне от -5 до + 5:
n=-5:0.1:5;
plot(n,purelin(n),'b+:');
2) Логистическая функция активации logsig.
Эта функция описывается соотношением
a = logsig(n) = 1/(1 + exp(-n)).
Она принадлежит к классу сигмоидальных функций, и ее аргумент может принимать любое значение в диапазоне от - до +, а выход изменяется в диапазоне от 0 до 1.
Построим график функции в диапазоне от -5 до + 5:
n=-5:0.1:5;
plot(n,logsig(n),'b+:');
3) Создание новой нейронной сети и ее обучение
Следующий оператор создает сеть с прямой передачей сигнала
net=newff(PR,[S1 S2...SNl],{TF1 TF2...TFNl},BTF,BLF,PF)
PR – матрица R x 2 – min и max значений для R входных элементов;
Si – количество нейронов на i-ом слое;
TFi – функции активации для i-го слоя, default = 'tansig' ;
BTF – функция обучения, default = 'traingdx';
BLF – функция для весов, default = 'learngdm';
PF – целевая функция, default = 'mse'.
Пример:
P = [0 1 2 3 4 5 6 7 8 9 10]; % Входные сигналы
T = [0 1 2 3 4 3 2 1 2 3 4]; % Выходные сигналы
net = newff([0 10],[5 1],{'tansig' 'purelin'});
net.trainParam.show=50; % показывать ошибку обучения через каждые 50 эпох
net.trainParam.epochs=300; % max кол-во эпох - 300
net.trainParam.goal=1e-5; % сеть обучается, пока ошибка не станет <=1e-5
[net,tr]=train(net,P,T); % обучение сети
t1=sim(net,P); %вычислить выходные сигналы по входящим
Эта сеть использует один вектор входа с одним элементом, имеющим допустимые границы значений [0 10];
- имеет 2 слоя с 5 нейронами в первом слое и 1 нейроном во втором слое;
- используемые функции активации: tansig - в первом слое, purelin – во втором слое;
