|
Скоринг
|
Внутрибанковская оценка
|
Андеррайтнг
|
Вид кредита
|
Экспресс
кредитование, кредитные карты
|
Кредит
на неотложные нужды
|
Ипотечный
кредит
|
Документы, предоставляемые заёмщиком для
оценки
|
Паспорт,
заявление, анкета
|
|
Время рассмотрения
|
15‒30
минут
|
1‒14
дней
|
15‒30
дней
|
Подразделения банка, участвующие в анализе
клиента
|
Кредитный
инспектор
|
Кредитный
департамент, служба безопасности, юридический департамент
|
Кредитный
департамент, служба безопасности, юридический департамент, отдел ценных
бумаг, отдел оценки, отдел жилищного строительства
|
Показатели, характеристики
|
Качественные
характеристики
|
Количественные
показатели
|
Качественные
и количественные показатели, оценка недвижимости
|
Степень автоматизации
|
100%
|
70%
|
60%
|
1.2
Нейронные сети как метод решения задачи классификации
Скоринг представляет собой классификационную
задачу: исходя из имеющейся информации, необходимо получить функцию,
наиболее точно разделяющую выборку клиентов на «плохих» и «хороших». Для
решения этой задачи производится выборка клиентов кредитной организации. Она
называется «обучающей» выборкой. Разделяется на две группы: «хорошие» и
«плохие» риски. К «плохим» рискам обычно относят клиентов, задерживающих
очередную выплату на три месяца. Иногда к «плохим» рискам относят клиентов, которые
слишком рано возвращают кредит, и банк не успевает ничего на них заработать.
Предварительно преобразовывается имеющаяся
информация в форму, поддающуюся анализу. Это можно осуществить следующими двумя
способами.
. Преобразовать каждый признак в отдельную
двоичную переменную. Этот подход неудобен в том плане, что приводит к большому
количеству переменных, хотя он не навязывает никаких дополнительных отношений
между зависимой и независимыми переменными.
. Преобразовать каждую характеристику в
переменную, которая будет принимать значения, соответствующие отношению числа
«плохих» клиентов с данным признаком к числу «хороших» клиентов с этим же
признаком. Более усложненный вариант - взять логарифм этого отношения. Таким
образом, каждый признак получает числовую величину, соответствующую уровню его
«рискованности».
Методы
собственно классификации весьма разнообразны и включают в себя:
статистические методы, основанные на
дискриминантном анализе (линейная регрессия, логистическая регрессия);
различные варианты линейного программирования;
дерево классификации или
рекурсионно-партиционный алгоритм;
нейронные сети;
генетический алгоритм;
метод ближайших соседей.
Традиционными и наиболее распространенными
являются регрессионные методы, прежде всего линейная многофакторная
регрессия:
,
где р - вероятность дефолта, w
- весовые коэффициенты, x - характеристики клиента. Недостаток данной
модели заключается в том, что в левой части уравнения находится вероятность,
которая принимает значения от 0 до 1, а переменные в правой части могут
принимать любые значения
от -Ґ до + Ґ.
Этот недостаток позволяет преодолеть
логистическая регрессия:
.
Для применения логистической
регрессии необходимы гораздо более сложные расчеты для получения весовых
коэффициентов и, следовательно, более мощная компьютерная база и
усовершенствованное компьютерное обеспечение. Но при современном уровне
развития компьютерной техники это не является проблемой, и в настоящее время
логистическая регрессия является лидером скоринговых систем. Преимущество
логистической регрессии еще и в том, что она может подразделять клиентов как на
две группы (0 - плохой, 1 - хороший), так и на несколько групп (1, 2, 3, 4
группы риска).
Все регрессионные методы чувствительны к
корреляции между характеристиками, поэтому в модели не должно быть сильно
коррелированных независимых переменных.
Линейное программирование
также приводит к линейной скоринговой модели. Провести абсолютно точную классификацию
на плохих и хороших клиентов невозможно, но желательно свести ошибку к
минимуму. Задачу можно сформулировать как поиск весовых коэффициентов, для
которых ошибка и будет минимальной.
Деревья классификации
- это метод, позволяющий предсказывать принадлежность наблюдений или объектов к
тому или иному классу категориальной зависимой переменной в зависимости от
соответствующих значений одной или нескольких предикторных переменных.
Построение деревьев классификации - один из наиболее важных методов, используемых
при проведении «добычи данных». Деревья классификации идеально приспособлены
для графического представления, и поэтому сделанные на их основе выводы гораздо
легче интерпретировать, чем если бы они были представлены только в числовой
форме.
Генетический алгоритм
основан на аналогии с биологическим процессом естественного отбора. В сфере
кредитования это выглядит следующим образом: имеется набор классификационных
моделей, которые подвергаются «мутации», «скрещиваются», и в результате
отбирается «сильнейший», т. е. модель, дающая наиболее точную классификацию.
При использовании метода ближайших соседей
выбирается единица измерения для определения расстояния между клиентами. Все
клиенты в выборке получают определенное пространственное положение. Каждый
новый клиент классифицируется исходя из того, каких клиентов - плохих или
хороших - больше вокруг него [28].
Решение задачи классификации является одним из
важнейших применений нейронных сетей.
Задача классификации
представляет собой задачу отнесения образца к одному из нескольких попарно не
пересекающихся множеств. Примером таких задач может быть, например, медицинские
задачи, в которых необходимо определить, например, исход заболевания, решение
задач управления портфелем ценных бумаг (продать купить или
"придержать" акции в зависимости от ситуации на рынке), задача
определения жизнеспособных и склонных к банкротству фирм. К задаче
классификации относится и решаемая нами задача определения кредитоспособности
клиента банка.
Нейронная сеть
(НС) ‒ динамическая система из совокупности связанных между собой (как
узлы направленного графа) элементарных процессов (формальных нейронов) и
способная генерировать выходную информацию в ответ на входное действие [23].
Искусственные нейронные сети (ИНС) ‒
математические модели, а также их программные или аппаратные реализации,
построенные по принципу организации и функционирования биологических нейронных
сетей ‒ сетей нервных клеток живого организма.
С точки зрения машинного обучения нейронная сеть
представляет собой частный случай методов распознавания образов,
дискриминантного анализа, методов кластеризации и т.п. С математической точки
зрения обучение нейронных сетей − это многопараметрическая задача
нелинейной оптимизации.
В зависимости от функций, выполняемых нейронами
в сети, можно выделить три их типа:
‒ входные нейроны, на которые
подается вектор, кодирующий входное воздействие или образ внешней среды, в них
обычно не осуществляется вычислительных процедур, а информация передается с
входа на выход путем изменения их активации;
‒ выходные нейроны, выходные
значения которых представляют выходы нейронной сети; преобразования в них
осуществляются по выражениям. Несут важную функцию приведения значения выхода
сети в требуемый промежуток (осуществляется это с помощью функции активации);
‒ промежуточные нейроны,
составляющие основу нейронных сетей, преобразования в которых выполняются также
по выражениям.
Топологией
нейронной сети называют её структуру межнейронных связей, т.е. топология сети
определяет, как соединены нейроны между собой в сети [27].
С точки зрения топологии можно выделить три
основных типа нейронных сетей:
‒ полносвязные (рис. 1, а);
‒ многослойные или слоистые (рис. 1, б);
‒ слабосвязные (с локальными связями)
(рис. 1, в).
Рисунок 1. Архитектуры нейронных
сетей
В нашей работе будет построена многослойная
(двуслойная) нейронная сеть с прямой связью (рис. 2).
Рисунок 2. Многослойная
(двухслойная) сеть с прямой связью
Выбор такой архитектуры связан с тем, что сети с
прямой связью являются универсальным средством аппроксимации функций, что
позволяет их использовать в решении задач классификации.
Оценка качества работы НС ‒ например,
среднеквадратическая ошибка выхода сети на обучаемом множестве из n
примеров такова:
,
где ‒ синаптические коэффициенты,
‒ для устойчивости работы
сети, т.е. при изменении меньше интерпретация ответов не меняется, ‒ вес -го примера в обучающей
выборке, ‒ реальный выход, ‒ желаемый выход
-го примера. Предъявление сети
обучающей выборки можно производить до тех пор, пока ошибка не станет меньше заданной или пока
не перестанет меняться в течение нескольких «эпох» ‒ показов выборки
[23].
Как правило, нейронные сети
оказываются наиболее эффективным способом классификации, потому что генерируют
фактически большое число регрессионных моделей (которые используются в решении
задач классификации статистическими методами).
Далее рассматривается применение
нейронных сетей для процесса скоринга.
2
ПРИМЕНЕНИЕ ПРОГРАММЫ STATISTICA
NEURAL
NETWORKS
ДЛЯ ОЦЕНКИ КРЕДИТОСПОСОБНОСТИ ФИЗИЧЕСКИХ ЛИЦ В РОССИЙСКИХ БАНКАХ
2.1 Описание возможностей
программы STATISTICA
8 Neural
Networks
Обработка анкет и решение задачи классификации
производилась с помощью пакета «Нейронные сети» программы STATISTICA
8
Neural
Networks
(SNN). STATISTICA ‒ это интегрированная система, предназначенная
для статистического анализа и обработки данных. Она включает в себя широкий
набор аналитических процедур и методов: более 100 различных типов графиков,
описательные и внутригрупповые статистики, разведочный анализ данных,
корреляции, быстрые основные статистики и блоковые статистики, интерактивный
вероятностный калькулятор, T-критерии (и другие критерии групповых различий),
таблицы частот, сопряженности, флагов и заголовков, анализ многомерных
откликов, множественная регрессия, непараметрические статистики, общая модель
дисперсионного и ковариационного анализа, подгонка распределений, добыча
данных, нейронные сети и многое другое.
Продукты серии STATISTICA основаны на самых
современных технологиях, полностью соответствуют последним достижениям в области
IT, позволяют решать любые задачи в области анализа и обработки данных,
идеально подходят для решения практических задач в маркетинге, финансах,
страховании, экономике, бизнесе, промышленности, медицине и т.д.
Система STATISTICA производится фирмой StatSoft
Inc.
(США),
основанной в 1984 г. в городе Тулса (США). Первые программные продукты были
предназначены для обработки социологических данных. В 1986 г. начинается работа
по созданию интегрированных статистических пакетов комплексной обработки
данных.
Система STATISTICA имеет более полумиллиона
зарегистрированных пользователей во всем мире. Пользователями системы являются
крупнейшие университеты, исследовательские центры, компании, банки всего мира,
государственные учреждения [26].
2.2 Этапы нейросетевого
моделирования
Была поставлена следующая классификационная
задача: исходя из имеющейся анкетной информации о потенциальных клиентах банка,
наиболее точно разделить их на «плохих», «хороших» и «средний». Для решения
этой задачи были использованы возможности нейронных сетей. Нейросетевое
моделирование проводилось в несколько этапов:
) сбор и подготовка данных, разделение на
обучающие и тестовые выборки;
) предобработка данных, преобразование
для подачи на вход НС;
) конструирование и обучение сети;
) диагностика сети.
Первый этап
работы заключался в подготовке исходных данных. Банк предоставил нам данные о
клиентах без указания их имен и контактной информации с решением о
предоставлении кредита. В соответствии с этим была выбрана система признаков,
характерных для данной задачи (возраст, семейное положение, количество
иждивенцев, социальный статус, имущество, образование, трудовой стаж,
регистрация, количество смен мест регистрации за 6 лет, кредитная история, платежеспособность,
наличие обеспечения), и составлена база данных на 150 клиентов. Исходные данные
были разделены на 2 множества: обучающее (100), на котором проводилось
обучение, и тестовое (50) - верификация.
Второй этап ‒
предобработка имеющихся данных, преобразование для подачи на вход НС. Задача
продиктовала следующую структуру НС: входной слой состоял из 12 нейронов
(признаков), а выходной - из одного нейрона (ответ банка о возможности
предоставления кредита). Также была выбрана система выходных значений , где A - значение,
соответствующее клиенту, которому можно предоставить кредит («хороший клиент»),
B - значение,
соответствующее клиенту, которому необходимо предоставить дополнительную
информацию о себе для решения вопроса о предоставлении ему кредита («средний
клиент»), и C - значение, соответствующее
клиенту, которому отказано в предоставлении кредита(«плохой клиент»).
Работа с программой SNN осуществлялась по
следующему алгоритму. Чтобы начать работу, в меню «Пуск/Все программы»
запускаем программу. Выбираем File/New...
(рис. 3).
Рисунок 3
В следующем окне «Create
New Document»
задаем количество столбцов и строк в создаваемой таблице, в нашем случае 13
столбцов
(12 входных и 1 выходная переменные) и 150 строк (случаев) (рис. 4) и нажимаем
«Ok».
Рисунок 4
В окне «Data:
Анкеты (13v
by 150c)»
заполняем созданную таблицу. Введём обозначения всех входных переменных: Var1
-
возраст, Var2
-
семейное положение, Var3
-
количество иждивенцев, Var4
-
социальный статус, Var5
-
имущество клиента, Var6
- образование, Var7
-
трудовой стаж на последнем месте работы, Var8
-
регистрация, Var9
- количество смен мест регистрации за 6 лет, Var10
-
кредитная история, Var11
-
платежеспособность клиента, Var12
-
наличие обеспечения. В строках с номерами 101 - 150 оставляем пустым 13
столбец, для того, чтобы в нём после построения сети видеть её предсказания по
50 клиентам (рис. 5).
Рисунок
5
Таким образом, получаем обучающую выборку D
- набор наблюдений, для которых указаны значения входных и выходных переменных:
,где (рис. 6).
Для анализа нужно иметь порядка сотен или тысяч
наблюдений; чем больше в задаче переменных, тем больше нужно иметь наблюдений.
Наша таблица данных состоит из 150 случаев и 13 переменных: двенадцати входных
переменных и одной выходной переменной (ответ банка, результат).
Рисунок
6
На третьем этапе
нейросетевого анализа производилось конструирование и обучение НС. Задача
заключалась в том, чтобы построить нейронную сеть на имеющихся данных и
произвести её обучение. Для этого выбираем на панели задач вкладку Statistics/Automated
Neural Networks
(рис. 7).
Рисунок
7
Задаем следующие необходимые настройки. В
открывшемся окне «SANN
- Analysis/Deployment»
для анализа данных нужно задать тип решаемой задачи - классификация (Classification)
(рис. 8).
Рисунок
8
В следующем окне «SANN
- Data selection»
нажимаем на вкладку Variables,
чтобы указать входные и выходные переменные (рис.9) .
Рисунок
9
В «Select
variables
for analysis»
выделяем один выходной параметр
(13-й столбец) и 12 входных параметров (1-12 столбцы), т.к. все входные
параметры являются числовыми, то выделяем их как Continuous
inputs (рис. 10).
Рисунок
10
Другие вкладки содержат опции для более
тщательного управления процессом, включая задание доверительных уровней
классификации и выбор типа и сложности создаваемых сетей с возможностью задания
некоторых аспектов поиска. Например, во вкладке «Sampling»
можно указать разделение в процентном соотношении обучающего множества на
выборку для обучения и самостоятельного тестирования сети, по умолчанию 80% и
20% соотвественно (рис. 11).
Рисунок
11
Следующее окно «SANN
- Automated
Network Search»
оставляем без изменений, в нем можно указать количество сетей, которые будут
построены, и количество сохраняемых сетей. По умолчанию программа строит 20
сетей и оставляет 5 лучших (рис. 12).
Рисунок
12
Далее производилось обучение нейронной сети по
100 кредитополучателям, исход деловых отношений с которыми известен. Для этого
после задания всех нужных настроек, нажимаем «Train»,
и программа строит методом перебора оптимальную топологию нейронной сети и
проводит её обучение на нашей выборке.
Этап обучения закончен. В результате было
построено 10 НС, из них выбрана наилучшая по ошибке верификации. В следующем
окне мы можем просмотреть результаты и сохранить нейронную сеть для дальнейшего
тестирования или переобучения. После сохранения сеть можно использовать для
определения кредитоспособности новых клиентов (рис. 14).
Рисунок
14
Четвертый этап
состоял в диагностике и проверке адекватности НС. После сохранения полученной
сети мы можем проверить эффективность ее работы на тестовых данных. Открываем
вкладку «Predictions»,
в ней можно видеть предсказание по 50 последним случаям, которое делает каждая
построенная сеть (рис.º15).
Рисунок
15
Выбираем сеть MLP
12‒5‒3, архитектура которой носит название многослойный персептрон.
Сравним имеющийся результат, предоставленный банком (тестовое множество), с
полученным предсказанием. Видим, что совпадение происходит в 87% случаев,
поэтому можно сделать вывод, что полученную сеть можно использовать для
определения кредитоспособности клиентов. Архитектура (число слоёв и число
нейронов в каждом слое) обученной формальной нейронной сети представлена на
рис. 16.
Рисунок
16
Анализ чувствительности показал степень влияния
каждого фактора анкеты на результат: чем меньше ранг, соответствующий
переменной, тем больше влияние её на выходной параметр (рис. 17).
Рисунок
17
Для сохранения сети нужно нажать на вкладку «Save
networks>C/C++
language ». Сеть была
сохранена на языке программирования С++, что даёт возможность использовать её
автономно. Код программы представлен в приложении 1. Для запуска сети
использовался компилятор
«Dev-C++
4.9.9.2». Вводим возможные значения анкетных данных (рис. 18), видим
предсказание сети (рис. 19).
Рисунок
18
Рисунок
19
В результате проведённого эксперимента на
имеющейся выборке НС построена с точностью 87%, что является удовлетворительным
показателем ее работы (минимальное количество правильных предсказаний должно
быть на уровне не ниже 80%). Это позволяет сделать вывод о целесообразности использования
данного программного продукта банками для автоматизированной оценки
кредитоспособности потенциальных клиентов. Для реального предложения кредитным
организациям требуется пополнение клиентской базы, дообучение НС для серьёзного
функционирования.
ЗАКЛЮЧЕНИЕ
Качественно и количественно разработанная оценка
кредитоспособности клиентов необходима банку для дальнейшего совершенствования
своей кредитной деятельности. От правильной оценки часто зависит
жизнеспособность банка. Неправильная оценка может привести к невозврату
кредита, что в свою очередь способно нарушить ликвидность банка и в конечном
счете привести к банкротству кредитной организации. Поэтому банки придают
огромное значение разработке современной методологической базы оценки кредитоспособности.
Анализ практической деятельности российских
банков привёл к выделению трёх основных моделей оценки кредитоспособности:
скоринг, внутрибанковская оценка и андеррайтинг. Каждая из указанных моделей
подробно описана, имеет как преимущества, так и отрицательные стороны,
указанные в работе.
Была выявлена связь нейротехнологий с
определением кредитоспособности физических лиц, проведено построение нейронной
сети, которую можно использовать для классификации клиентов. Сравнение
полученных результатов проведенного нейросетевого анализа и рейтинговой оценки,
позволяет сделать заключение о возможности ее дальнейшего использования для
комплексной оценки кредитозаемщика.
Таким образом, в процессе написания дипломной
работы была выполнена поставленная цель и решены поставленные задачи.
В дальнейшем планируется провести более
тщательное обучение сети с целью улучшения качества и производительности сети.
Результаты данной работы были опубликованы в
журналах «Известия Кубанского государственного университета. Естественные
науки» [19], «Вестник студенческого научного общества» [20, 21], а также
представлены на Всероссийском конкурсе научно-исследовательских работ студентов
и аспирантов в области информатики и информационных технологий, проведенном
ФГАОУ ВПО «Белгородский государственный национальный исследовательский
университет» при поддержке Министерства образования и науки РФ в рамках
реализации федеральной целевой программы «Научные и научно-педагогические кадры
инновационной России», и также опубликованы в сборнике научных работ
проведенного конкурса [22].
СПИСОК
ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. Абричкина
Г.Б. Инструментальные методы управления кредитными рисками регионального банка:
Дис. ... канд. экон. наук, Воронеж, 2004. 156 c.
3. Боровиков
В.П. Популярное введение в программу STATISTICA.
4. Боровиков
В.П. Statistica:
исскуство анализа данных на компьютере. Для профессионалов. Санкт-Петербург,
2001.
5. Бэстенс
Д.-Э., Ван Ден Берг В.-М., Вуд Д. Нейронные сети и финансовые рынки. Принятие
решений в торговых операциях. М., 1997.
6. Дебок
Г., Кохонен Т. Анализ финансовых данных с помощью самоорганизующихся
карт: Пер. с англ. М.: Издательский дом « Альпина», 2001. 230 с.
. Ежов
А.А., Шумский С.А. Нейрокомпьютинг и его приложения в экономике и бизнесе. М.,
1998.
. Кричевский
М.Л. Нейронные сети в задачах риск-менеджмента. Научн. сессия проф.-преп.
состава СПбГУЭФ. Сб. докл. СПб, 2002.
9. Кредитный
калькулятор. <http://calculatorcredit.ru/calculator.php>
10.
Корниенко С.Л. Оценка кредитоспособности заемщика в процессе управления
кредитным риском: Дис. ... канд. экон. наук: 08.00.10: М., 2003. 230 c.
11.
Нейронные
сети.
STATISTICA Neural Networks. Москва, 2001.
12.
Нортон М. Нервный бизнес. Банковские технологии. 1995. № 3.
13.
Официальный сайт StatSoft Russia. <http://www.statsoft.ru>
.
Пещанская И.В. Краткосрочный кредит: теория и практика. М.: Издательство
«Экзамен», 2003. 320 с.
.
Просалова В.С. Оценка банками кредитоспособности юридических лиц в условиях
развития нейросетевых экспертных систем: На примере Приморского края: Дис. ...
канд. экон. наук: 08.00.10. Владивосток, 2006. 186с.: ил.
.
Райзберг Б.А., Лозовский Л.Ш., Стародубцева Е.Б. Современный экономический
словарь. - 5-е изд., перераб. и доп.. - М.: ИНФРА-М, 2006. - 495 с.
.
Рындина С.В. Математические модели application-скоринга.
// Проблемы информатики в образовании, управлении, экономике и технике: Сб.
статей Всерос. научно-техн. конф. Пенза, 2008. С. 32−35.
.
Селезнева Н.Н., Ионова А.Ф. Финансовый анализ. М.: Юнити, 2002. 479с.
.
Соколова И.В., Титяева А.А., Тохадзе А.А. Интеллектуальная нейросетевая
поддержка принятия решений в кредитных организациях// Известия Кубанского
государственного университета. Естественные науки. Краснодар 2012. Вып.2. С.12−16.
.
Титяева А.А., Соколова И.В. Применение нейротехнологий для скоринговой
сиситемы оценки кредитования физических лиц// Вестник студенческого научного
общества ФМКН КубГУ. Краснодар, 2011. Вып.2. С.26−33.
.
Титяева А.А., Соколова И.В. Оценка кредитоспособности физических лиц
с помощью нейронных сетей // Вестник студенческого научного общества ФМКН
КубГУ. Краснодар, 2012. Вып.3. С. 31−37.
.
Титяева А.А. Применение нейронных сетей для оценки кредитоспособности
физических лиц// Всероссийском конкурс научно-исследовательских работ студентов
и аспирантов в области информатики и информационных технологий 10−12 июля
2012 года. Сборник научных работ в трёх томах. Белгород 2012. Том 2. С. 105−109.
<http://meta-analysis.bsu.edu.ru/file.php/1/Contest_2012_1/Tom2.pdf>
.
Усатиков С.В., Соколова И.В. Теоретические основы информатики. Практикум.
Краснодар, 2008.
.
Усачёв С. Кредитный скоринг: решения desktop или enterprise // "Банки
и технологии"// № 4. 2008 г.
.
Федеральный закон от 30 декабря 2004 г. N 218-ФЗ "О кредитных
историях" // Собрание законодательства Российской Федерации. - 3 января
2005г. - №1.
.
Халафян А.А. STATISTICA 6. Статистический анализ данных. 3-е издание. Учебник ‒
М.: ООО «Бином-Пресс», 2007 г.
.
Хомич А.В., Жуков Л.А. Оптимизация топологии рекуррентных и многослойных
нейронных сетей с применением генетических алгоритмов // Нейроинформтика. 2004.
Часть 2. С. 68−74.
.
Андреева Г.В. Скоринг как метод оценки кредитного риска // Банковские
технологии. <http://www.cfin.ru/finanalysis/banks/scoring.shtml>
29.
Ворошилова И.В., Сурина И.В. К вопросу о совершенствовании механизма
оценки кредитоспособности индивидуальных заемщиков. <http://ej.kubagro.ru/2005/08/03/>
ПРИЛОЖЕНИЕ
1
//Analysis Type - Classification
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include
<stdlib.h>input_hidden_weights[5][12]=
{
{-1,64409787875360e+000,
1,09180895320871e+000, 4,77154785465406e+000, 6,36931007598949e+000,
2,26521240652561e+000, 7,67748055853597e+000, 2,20230812056259e+000,
-4,05057179736207e+000, 6,86952042253827e+000, 8,06302585562581e+000,
-3,92930200746640e+000, -1,35025352122010e+001 },
{-3,80316410899550e+000,
-1,02379666228051e+001, -2,46833828572332e+000, -4,39631483693691e+000,
1,27571950630982e+001, -1,98531923270009e+000, 5,74697080563126e+000,
-4,59886786051631e+000, -3,20234286930440e+000, -6,97779655167443e+000,
9,40359548483022e+000, 6,29580684655405e+000 },
{-4,67149656505120e-001,
-6,09590774067550e+000, 1,75210100895654e+000, -3,13956250775567e+000,
1,43068245551182e+001, -7,85053944357368e-001, 4,24516927798281e+000,
-2,59941858924333e+000, 6,03602215289459e-001, -2,18964575431617e+000,
1,14808888593193e+001, 7,03883507225023e+000 },
{-1,00981535367063e+000,
-6,32535934729304e+000, 4,01064987145387e+000, 1,48465851842388e+000,
9,81770015310024e+000, 3,56768950228247e+000, 2,09026878326488e+000, -3,56947927444606e+000,
3,78673354205937e+000, 6,97345367206553e+000, 3,56882993548831e+000,
4,76152715633977e-001 },
{-8,54838370143648e-001,
-6,96381955453000e+000, 3,30845287107656e+000, 8,45395665670600e-001,
1,02274795138672e+001, 2,97825904668851e+000, 2,34064744676174e+000,
-4,02916055317983e+000, 3,23672074326387e+000, 5,90548752061914e+000,
4,22109537118753e+000, 7,78710016942739e-001 }
};hidden_bias[5]={
-4,89949635603894e-001, -1,92268683845077e+000, 4,34461990732500e+000,
2,67856825427872e+000, 2,22697833237394e+000 };hidden_output_wts[3][5]=
{
{-3,31754742496978e+000,
8,98228051391912e+000, 4,09646018637776e+000, -2,98424512535983e+000,
-6,24495119880673e+000},
{1,29127644257301e+000,
-3,38886487369035e+000, 4,27371800423730e+000, -7,54734238002245e-002,
5,79364818806007e-001 },
{2,10323923959187e+000,
-5,53525376784362e+000, -8,23942580395382e+000, 3,02222658249428e+000,
5,59800454230386e+000 }
};output_bias[3]={
2,55329441003075e+000, 9,52241585555783e-001, -3,56191361399268e+000
};max_input[12]={ 3,00000000000000e+000, 4,00000000000000e+000,
3,00000000000000e+000, 4,00000000000000e+000, 3,00000000000000e+000,
4,00000000000000e+000, 4,00000000000000e+000, 3,00000000000000e+000,
3,00000000000000e+000, 3,00000000000000e+000, 3,00000000000000e+000, 6,00000000000000e+000
};min_input[12]={ 1,00000000000000e+000, 1,00000000000000e+000,
0,00000000000000e+000, 1,00000000000000e+000, 1,00000000000000e+000,
1,00000000000000e+000, 1,00000000000000e+000, 1,00000000000000e+000,
1,00000000000000e+000, 1,00000000000000e+000, 1,00000000000000e+000,
1,00000000000000e+000 };input[12];hidden[5];output[3];FindMax(double* vec,
double* max, long* maxIndex,int len)
{i;
*max = vec[0];
*maxIndex = 0;(i=1; i<len; i++)
{(vec[i]>*max)
{
*max = vec[i];
*maxIndex = i;
}
}
}ScaleInputs(double* input, double
minimum, double maximum, int size)
{delta;i;(i=0; i<size; i++)
{=
(maximum-minimum)/(max_input[i]-min_input[i]);[i] = minimum -
delta*min_input[i]+ delta*input[i];
}
}softmax(double* vec,int len)
{i, j;sum=0.0;(i=0; i<len; i++)
{(vec[i]>200)
{max;maxIndex;(vec, &max,
&maxIndex,len);(j=0; j<len; j++)
{ if(j==maxIndex) vec[j] =
1.0;vec[j] = 0.0;
};
}
{[i] = exp(vec[i]);
}+= vec[i];
}(sum==0)
{a = 1;
}(sum!=0.0)
}for(i=0; i<len; i++) vec[i] =
1.0/(double)len;
}logistic(double x)
{(x > 100.0) x = 1.0;if (x <
-100.0) x = 0.0;x = 1.0/(1.0+exp(-x));x;
}ComputeFeedForwardSignals(double*
MAT_INOUT,double* V_IN,double* V_OUT, double* V_BIAS,int size1,int size2,int
layer)
{row,col;(row=0;row < size2;
row++)
{_OUT[row]=0.0;(col=0;col<size1;col++)V_OUT[row]+=(*(MAT_INOUT+(row*size1)+col)*V_IN[col]);_OUT[row]+=V_BIAS[row];(layer==0)
V_OUT[row] = logistic(V_OUT[row]);
}
}RunNeuralNet_Classification ()
{((double*)input_hidden_weights,input,hidden,hidden_bias,12,
5,0);((double*)hidden_output_wts,hidden,output,output_bias,5, 3,1);
}main()
{index;i=0;keyin=1;max;(1)
{=3.e-300;("\nEnter values for
Continuous inputs\n");("Cont. Input-0(Var1):
");("%lg",&input[0]);("Cont. Input-1(Var2):
");("%lg",&input[1]);("Cont. Input-2(Var3):
");("%lg",&input[2]);("Cont. Input-3(Var4):
");("%lg",&input[3]);("Cont. Input-4(Var5):
");("%lg",&input[4]);("Cont. Input-5(Var6):
");("%lg",&input[5]);("Cont. Input-6(Var7):
");("%lg",&input[6]);("Cont. Input-7(Var8):
");("%lg",&input[7]);("Cont. Input-8(Var9):
");("%lg",&input[8]);("Cont. Input-9(Var10):
");("%lg",&input[9]);("Cont. Input-10(Var11):
");("%lg",&input[10]);("Cont. Input-11(Var12):
");("%lg",&input[11]);(input,0,1,12);_Classification();
//Output Activation is
Softmax;(output, 3);(i=0;i<3;i++)
{(max<output[i])
{=output[i];=i+1;
}
}("\nPredicted category =
");(index)
{1: printf("A\n");
break;2: printf("B\n"); break;3: printf("C\n"); break;:
break;
}("\nConfidence level =
%.14f",max);("\n\nPress any key to make another prediction or enter 0
to quit the program.\n");=getch();(keyin==48)break;
}0;
}