Реализация метода бинарной классификации с использованием нейронных сетей на примере модели кредитного скоринга

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

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 30.06.2017
Размер файла 826,9 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

ОГЛАВЛЕНИЕ

модель кредитный скоринг нейронный

Введение

1. Задача классификации и обзор методов

2. Построение скоринговой модели

2.1 Входные данные

2.2 Выходные данные

2.3 Зависимая переменная

2.4 Пропуски в данных

2.5 Проверка корреляций

2.6 Предобработка входных данных

3. Описание реализации

3.1 Структура сети

3.2 Процедура обучения сети

3.3 Тестирование

Заключение

Приложения

Список использованных источников

ВВЕДЕНИЕ

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

Как правило, существует два основных метода оценки риска выдачи ссуды, которые применяются как по отдельности, так и вместе друг с другом:

? Заключение о выдаче кредита от экспертов (андеррайтеры, кредитные инспектора)

? Автоматизированные скоринговые системы.

Кредитный скоринг - это предсказательная модель, цель которой разделить заемщиков на два класса. Класс «хороших» заемщиков, когда от клиента ожидается положительное поведение и вовремя оплаченный кредит, и класс «плохих» заемщиков, когда возможно отрицательное поведение клиента и своевременная выплата кредита клиентом ставится под сомнение. Вся суть кредитного скоринга в том, что для каждого потенциального заемщика высчитывается его оценка кредитного риска на индивидуальной основе, и по этой оценке банк определяет, выдать клиенту кредит или нет.

Преимущества кредитного скоринга заключаются в следующем:

1. Уменьшение дефолтов по кредитам, быстрота и беспристрастность принятия решений.

2. Способность эффективно управлять кредитным портфелем.

3. Отсутствие долгосрочного обучения сотрудников кредитного отдела.

4. Возможность проведения быстрого анализа заявки на кредит в присутствии клиента.

Существуют четыре вида скоринга:

Application-scoring - оценка платёжеспособности заемщика при выдаче кредита и определение уровня риска по кредиту на основании первичных данных клиента по его анкете, обработки компьютером и выводом результата.

Behavioral-scoring - оценка наиболее вероятных финансовых действий заемщика (оценка поведения заемщика). В такой системе происходит оценка финансового поведения клиента и, за счет этого, предсказывается его дальнейшее поведение. Особенностью является то, что анализ происходит во течение обслуживания клиента.

Collection-scoring - система скоринга на стадии работы с вовремя невозвращенными кредитами. Определяет действия представителей банка для возврата непогашенных вовремя кредитов. Система позволяет предпринять какой-либо алгоритм действий по работе с невозвращенными кредитами. Например, на начальном этапе это может быть первичное предупреждение, а при долгой задолженности это может быть передача дела коллекторскому агентству. Как правило, большинство не уплативших вовремя ссылается на забывчивость и сразу возвращает кредит.

Fraud-scoring - статистическое оценивание вероятности мошеннического поведения со стороны лица, который взял или собирается взять заем. Очень часто бывает так, что мошенники создают образ идеального клиента, который имеет идеальную кредитную историю, чтобы в дальнейшем произвести с новым кредитом мошеннические действия. Fraud-scoring занимается с вычислением подобных мошеннических схем.

В дипломной работе будет рассматриваться тип скоринга Application-scoring.

Актуальность и практическая ценность

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

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

Входная информация состоит из сведений о клиенте, указанных в заявке на получение кредита. Система анализирует динамику возмещения, информацию о самом кредиторе, его кредитную историю и прогнозирует изменения платежеспособности заемщика после каждого месяца. Кроме того, система выполняет предварительный процесс анализа и коррекцию базовых значений, включая числовую классификацию для нечисловых данных (текст, флаги и т.д.), выборку данных непрерывного времени, отображение наиболее информативного сокращения, а также восстановление данных кредитной истории без пропущенных данных.

1. ЗАДАЧА КЛАССИФИКАЦИИ И ОБЗОР МЕТОДОВ

Кредитный скоринг - это задача классификации: по имеющимся данным, нужно получить функцию, наиболее правильно разделяющую клиентов на «хороших» и «плохих». Для разрешения этой проблемы производится выборка клиентов банковского учреждения, называемая «обучающей» выборкой. Данные в выборке разделяется на два класса: «хорошие» и «плохие» заемщики. Под «плохими» заемщиками подразумеваются клиенты, у которых есть задержка по очередной выплате за 90 дней.

Наиболее распространенными методами являются регрессионные методы.

Во-первых, это линейная множественная (или многофакторная) регрессия:

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

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

Кроме того, преимущество логистической регрессии еще и в возможности разделения заемщиков как на два класса («хороший» и «плохой»), так и на несколько классов. Например, на 5 групп риска. Однако, в таком случае, необходимы более сложные расчеты для вектора весов , но современная компьютерная база позволяет проводить такие расчеты. Поэтому в данный момент логистическая регрессия лидирует в скоринговых системах.

Ещё одним, достаточно распространенным, методом являются нейронные сети. Это мощный инструмент моделирования для обнаружения и воспроизведения сложных (нелинейных) зависимостей. Этот метод воспроизводит способность биологических нервных систем учиться и исправлять ошибки, имитируя работу низкоуровневой структуры мозга.

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

Дерево принятий решений - ещё один метод, применяемый для прогнозирования платежеспособности заемщиков. Это - структура данных, в процессе обхода которой в каждом узле в зависимости от проверяемого условия принимается определенное решение - перемещение по той или иной ветке дерева от корня к «листьевым» (конечным) вершинам. Каждая ветвь дерева решений представляет собой возможное решение, а в «листьевых» вершинах находятся искомые значения.

Деревья решений используются для решения трех типов задач: описание данных, классификация и регрессия.

Иногда используют генетический алгоритм, это метод многомерной оптимизации, применяемый для решения задач оптимизации и математического моделирования с использованием подходов, которые аналогичны естественным процессам отбора в природе. Алгоритм представляет собой разновидность вычислений эволюционного характера, благодаря которым решаются оптимизационные задачи, при этом используя методы естественной эволюции (мутации, кроссинговер, отбор, наследование). Основная идея данного алгоритма заключается в большом акценте на использование оператора «скрещивания». В алгоритме происходит три поэтапных процесса: скрещивание, селекция и формирование нового поколения. Если результат после трех шагов не устраивает, то этапы алгоритма будут повторяться до тех пор, пока количество циклов не будет максимумом, определенным заранее или время на мутацию будет исчерпано.

2. ПОСТРОЕНИЕ СКОРИНГОВОЙ МОДЕЛИ

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

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

2.1 Входные данные

Содержание входных данных представляется по ссылке: https://www.kaggle.com/c/GiveMeSomeCredit/data

В файле cs-training.csv.

Основной информацией в данном DataFrame'e являются данные о клиенте на момент подачи кредитного запроса. Это информация о прошедшем опыте кредитопогашения, финансовые показатели клиента, число иждивенцев, состояние текущего счёта.

Таблица 1. Описание всех признаков

Название признака

Описание признака

Тип признака

1

Revolving-UtilizationOf-UnsecuredLines

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

Проценты, float64

2

age

Возраст клиента.

Натуральное число, int64

3

NumberOfTime30-59DaysPast-DueNotWorse

Число раз, когда заемщик просрочил выплату кредита на срок от 30 до 59 дней, но при этом не позже, чем за последние два года.

Натуральное число, int64

4

DebtRatio

Ежемесячные платежи по долгам, выплаты алиментов, прожиточный расход, деленные на валовый доход за месяц.

Проценты, float64

5

MonthlyIncome

Доход заемщика за месяц.

Вещественное число, float64

6

NumberOfOpen-CreditLinesAndLoans

Количество открытых кредитов (рассрочка типа кредита на машину или закладная) и кредитные линии (например, кредитные карты).

Натуральное число, int64

7

NumberOfTimes-90DaysLate

Число раз, когда заемщик просрочил выплату по кредиту на 90 и более дней.

Натуральное число, int64

8

NumberReal-EstateLoansOrLines

Число ипотечных кредитов и кредитов на недвижимость, включая кредитные линии собственного капитала.

Натуральное число, int64

9

NumberOfTime60-89DaysPastDueNotWorse

Число раз, когда заемщик просрочил выплату кредита на срок от 60 до 89 дней, но при этом не позже, чем за последние два года.

Натуральное число, int64

10

NumberOfDependents

Число иждивенцев в семье без самого замещика (супруга/супруг, дети и т.д.)

Натуральное число, int64

2.2 Выходные данные

Выходом сети должна быть спрогнозированная вероятность отнесения заемщика к классу «плохих»

В итоге необходимо составить таблицу вида:

Таблица 2. Пример выходного файла

Id

Probability

1

0.080807

2

0.040719

3

0.011968

4

0.067640

5

0.108264

Где Id - номер заемщика, Probability - вероятность того, что заемщик относится к классу «плохих» и просрочит выплату кредита на 90 и более дней.

2.3 Зависимая переменная

Зависимая переменная определяется в зависимости от цели построения модели. В данном случае зависимая переменная является качественной: она принимает значение либо 0, если прогнозируется у клиента дефолт по кредиту и 1, если прогнозируется успешное погашение кредита без просрочки.

В качестве зависимой переменной предлагается флаг SeriousDlqin2yrs.

Таблица 3. Описание зависимой переменной

eriousDlqin2yrs

Относится ли заемщик к классу просрочивших выплату кредита на 90 и более дней.

{0;1}, object

2.4 Пропуски в данных

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

С помощью библиотеки pandas можно посмотреть информацию о нашем data frame:

<class 'pandas.core.frame.DataFrame'>

RangeIndex: 150000 entries, 0 to 149999

Data columns (total 11 columns):

SeriousDlqin2yrs 150000 non-null int64

RevolvingUtilizationOfUnsecuredLines 150000 non-null float64

age 150000 non-null int64

NumberOfTime30-59DaysPastDueNotWorse 150000 non-null int64

DebtRatio 150000 non-null float64

MonthlyIncome 120269 non-null float64

NumberOfOpenCreditLinesAndLoans 150000 non-null int64

NumberOfTimes90DaysLate 150000 non-null int64

NumberRealEstateLoansOrLines 150000 non-null int64

NumberOfTime60-89DaysPastDueNotWorse 150000 non-null int64

NumberOfDependents 146076 non-null object

dtypes: float64(4), int64(7)

memory usage: 12.6 MB

Как можно заметить, в данных присутствуют пропуски. В частности, в столбцах MonthlyIncome и NumberOfDependents. Пропуски в NumberOfDependents вероятнее всего связаны с тем, что заемщик при заполнении анкеты под незаполнением имел в виду отсутствие иждивенцев, поэтому их можно заменить нулями. А вот пропуски в MonthlyIncome могут говорить как о безработности заемщика, так и о каких-либо других причинах, которые неясны, поэтому желательно удалить все данные с пропусками в столбце MonthlyIncome.

2.5 Проверка корреляций

При построении скоринговой модели важным моментом является проверка линейной зависимости между количественными переменными. Линейная зависимость между переменными, характеризующими задержку в выплате кредита (типа NumberOfTimeXDaysPastDueNotWorse, где вместо X - число дней просрочки) вполне очевидна, но необходимо проверить есть ли другие зависимости.

Для этого построим матрицу корреляций. Её размер будет 11x11, на строках и столбцах будут названия признаков, а на их пересечениях - коэффициент корреляции, на главной диагонали будут единицы. Для наглядности построим HeatMap этой матрицы с помощью библиотеки seaplot.

Рис.1 HeatMap матрицы корреляций

Как и предполагалось, переменные, характеризующие задержку в выплате кредита, сильно коррелируют между собой (коэффициенты около 0.98).

Но кроме них коррелируют, но уже не так сильно, переменные NumberRealEstateLoansOrLines и NumberOfOpenCreditLinesAndLoans (коэффициент - 0.43).

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

2.6 Предобработка входных данных

Нормировка числовых параметров производилась по следующему правилу:

3. ОПИСАНИЕ РЕАЛИЗАЦИИ

Искусственная нейронная сеть (ИНС) - это то, что стало новым техническим явлением в таких областях, как информационные технологии, медицина, экономика, финансы, физика, математика, кибернетика и т.д. Нейронные сети представляют собой вычислительный подход, основанный на большом наборе нейронных единиц (искусственных нейронов), он позволяет воспроизводить чрезвычайно сложную (нелинейную) зависимость. Процесс аналогичен работе биологического мозга, который решает проблемы с большими кластерами биологических нейронов, связанных аксонами. Нейронная сеть учится и исправляет ошибки, имитируя работу низкоуровневой структуры мозга.

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

Можно корректировать веса каждого нейронного дендрита, когда вы вычисляете значение ошибки сигнала для каждого нейрона.

Чаще всего нейронные сети (НС) являются самым эффективным методом классификации именно за счёт того, что фактически порождают множество моделей регрессии, которые, как было сказано раньше, используются наиболее часто для решения задачи классификации статистическими методами.

Как правило, выделяются три основных вида нейросетей:

? Полносвязные (на рисунке 1, а).

? Многослойные (на рисунке 1, б).

? Слабосвязные, с локальными связями (на рисунке 1, в).

Рис.2 Типы нейронных сетей

3.1 Структура сети

В работе нейронная сеть имеет структуру многослойного персептрона с одним скрытым слоем.

Рис.3 Структура нейронной сети.

Нейронная сеть состоит из входного вектора с размерностью 8, одного скрытого слоя с 6-ю нейронами и выходного значения. Входной вектор умножается на матрицу весовых коэффициентов , где H = 6 - число нейронов на скрытом слое, M = 8 - размерность входного вектора. Далее произведения на каждом нейроне складываются и подаются в функцию активации, в качестве которой выступает сигмоидальная функция:

.

Далее полученные значения умножаются на вектор весовых коэффициентов и складываются. Результат является выходом сети.

3.2 Процедура обучения сети

Набор данных был поделен на обучающую выборку (60000 значений), проверочную (6000) и тестовую (6000). Для обучения сети используется метод обратного распространения ошибки.

Обучение происходит в течение 2000 итераций (эпох). На каждой итерации случайным образом выбираются 100 наборов из обучающей выборки и каждый набор подается на вход сети.

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

Где ,

Корректировки весов матрицы :

где - истинное значение, - выход сети,

Обоснование:

Корректировки весов матрицы :

Обоснование:

3.3 Тестирование

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

здесь - истинное значение, - ответ сети.

Рис.3 Обучение нейронной сети, подсчет ошибки на каждой итерации

Полный код данной реализации на языке программирования Python (Python 3.6, Jupiter Notebook) приведен в Приложении 1.

ЗАКЛЮЧЕНИЕ

Результаты программы. Полученные после выполнения программы результаты, представленные в форме .csv файла с двумя столбцами, с помощью специальной формы на сервисе kaggle сравниваются с эталонными результатами и пользователю виден уровень правдоподобия (соответствие полученных результатов реальным).

Форма для проверки:

https://www.kaggle.com/c/GiveMeSomeCredit/submit.

ROC-кривая (Receiver Operator Characteristic) - кривая, которая чаще всего используется, чтобы представить результат в бинарной классификации в машинном обучении. Эта кривая позволяет оценить пропорцию между долей правильно классифицированных положительных результатов («хороший» заемщик) и долей неправильно классифицированных отрицательных результатов («плохой» заемщик).

Уровень правдоподобия, в свою очередь, представляет собой площадь под ROC-кривой. Он отображает отношение процента объектов из общей выборки, классифицированных верно, и долей объектов, которые классифицировались с ошибкой.

Уровень правдоподобия представленной в работе реализации скоринговой модели составил 0.813272.

Время работы при:

Таблица 4. Срез таблицы из Приложения 2

nEpochs

mu

nHidden

nOutput

last_los_train

last_los_val

sr_error

16

2000

0.040

6

1

0.000497

0.000521

0.000555

Составило 27.431 секунд.

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

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

Эффективность созданного алгоритма составляет 0.813272, его время работы - 27.431 секунд.

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

По результатам работы сети с обучающей и проверочной выборками был построен график ошибок:

Рис.4 Ошибки на обучающей и проверочной выборках.

Рис.5 Разница в данных, полученной сетью и исходными.

ПРИЛОЖЕНИЕ 1

Код программы на языке Python:

%matplotlib inline

%config InlineBackend.figure_format = 'retina'

import csv

import pickle

import numpy as np

import pandas as pd

import seaborn as sns

import matplotlib.pyplot as plt

import sys

df1 = pd.read_csv('cs-training.csv')

df1 = df1.drop('Unnamed: 0', 1)

df2 = pd.read_csv('cs-test.csv')

df1.info()

df1.corr()

sns.heatmap(df1.corr());

df1[df1['NumberOfDependents'].apply(np.isnan)]

df1.head()

quant_features = ['RevolvingUtilizationOfUnsecuredLines', 'NumberOfTime30-59DaysPastDueNotWorse', 'DebtRatio', 'MonthlyIncome', 'NumberOfOpenCreditLinesAndLoans', 'NumberOfTimes90DaysLate', 'NumberRealEstateLoansOrLines', 'NumberOfTime60-89DaysPastDueNotWorse', 'NumberOfDependents']

scaled_features = {}

for each in quant_features:

mean, std = df1[each].mean(), df1[each].std()

min, max = df1[each].min(), df1[each].max()

scaled_features[each] = [min, max]

df1.loc[:, each] = (df1[each] - min)/ (max - min)

df1.head()

nTrain = 60000

nTest = 6000

nVal = 6000

b = {}

test_data = df1[-nTest:]

data = df1[:-nTest]

target_fields = [' SeriousDlqin2yrs']

features, targets = df1.drop(target_fields, axis=1), df1[target_fields]

test_features, test_targets = test_data.drop(target_fields, axis=1), test_data[target_fields]

train_features, train_targets = features[:nTrain], targets[:nTrain]

val_features, val_targets = features[-nVal:], targets[-nVal:]

class NN(object):

def __init__(self, nInput, nHidden, nOutput, mu):

self.nInput = nInput

self.nHidden = nHidden

self.nOutput = nOutput

# Initialize weights

self.weights_input_to_hidden = np.random.normal(0.0, self.nHidden**-0.5,

(self.nHidden, self.nInput))

self.weights_hidden_to_output = np.random.normal(0.0, self.nOutput**-0.5,

(self.nOutput, self.nHidden))

self.mu = mu

self.actFun = lambda x: 1.0 / (1.0 + np.exp(-x))

def actFun(x):

return 1.0 / (1.0 + np.exp(-x))

def learn(self, inputs_list, targets_list):

inputs = np.array(inputs_list, ndmin=2).T

targets = np.array(targets_list, ndmin=2).T

### Forward pass ###

# Hidden layer

hidden_inputs = np.dot(self.weights_input_to_hidden, inputs)

hidden_outputs = self.actFun(hidden_inputs)

#Output layer

final_inputs = np.dot(self.weights_hidden_to_output, hidden_outputs)

final_outputs = final_inputs

### Backward pass ###

# Output error

output_errors = targets - final_outputs

# Backpropagated error

hidden_errors = np.dot(self.weights_hidden_to_output.T, output_errors)

hidden_grad = hidden_outputs * (1.0 - hidden_outputs)

# Update the weights

self.weights_hidden_to_output += self.mu * np.dot(output_errors, hidden_outputs.T)

self.weights_input_to_hidden += self.mu * np.dot((hidden_errors * hidden_grad), inputs.T)

def check(self, inputs_list):

# Run a forward pass through the network

inputs = np.array(inputs_list, ndmin=2).T

### forward pass here ###

# Hidden layer

hidden_inputs = np.dot(self.weights_input_to_hidden, inputs)

hidden_outputs = self.actFun(hidden_inputs)

# Output layer

final_inputs = np.dot(self.weights_hidden_to_output, hidden_outputs)

final_outputs = final_inputs

return final_outputs

def error(y_t, y):

return np.mean((y_t-y)**2)

np.random.seed(42)

nEpochs = 1000

mu = 0.02

nHidden = 10

nOutput = 1

nTuplesPerEpoch = 100

nInputs = train_features.shape[1]

network = NN(nInputs, nHidden, nOutput, mu)

losses = {'train':[], 'validation':[]}

def start(nEpochs):

for e in range(nEpochs):

batch = np.random.choice(train_features.index, size=nTuplesPerEpoch)

for record, target in zip(train_features.ix[batch].values, train_targets.ix[batch]['age']):

network.learn(record, target)

train_loss = error(network.check(train_features), train_targets['age'].values)

val_loss = error(network.check(val_features), val_targets['age'].values)

sys.stdout.write("\rПроцесс: " + str(100 * e/float(nEpochs))[:4] \

+ "% ... Ошибка обучения: " + str(train_loss)[:10] \

+ " ... Ошибка проверки: " + str(val_loss)[:10])

losses['train'].append(train_loss)

losses['validation'].append(val_loss)

tab = nEpochs, mu, nHidden, nOutput, losses['train'][-1], losses['validation'][-1]

f = open('info.txt', 'a')

for item in tab:

f.write("%s " % item)

f.write('\n')

f.close

start(nEpochs)

plt.rcParams['figure.figsize'] = (20,8)

plt.plot(losses['train'], label='Train error')

plt.plot(losses['validation'], label='Validation error')

plt.ylim(ymax=0.008)

plt.ylim(ymin=0)

plt.xlim(xmax=900)

plt.legend()

fig, ax = plt.subplots(figsize=(20,8))

min, max = scaled_features['SeriousDlqin2yrs']

predictions = network.check(test_features) * (max - min) + min

ax.plot(predictions[0], label='Prediction')

ax.plot((test_targets['SeriousDlqin2yrs'] * (max - min) + min).values, label='Data')

plt.xlim(xmin=10)

plt.xlim(xmax=790)

#plt.xlim(xmin=0)

ax.legend()

ПРИЛОЖЕНИЕ 2

Таблица моделей:

nEpochs

mu

nHidden

nOutput

last_los_train

last_los_val

sr_error

0

1000

0.005

40

1

0.000479

0.000503

0.000849

1

1000

0.005

100

1

0.000478

0.000502

0.001980

2

1000

0.005

5

1

0.000685

0.000710

0.002457

3

1000

0.005

6

1

0.000491

0.000516

0.000692

4

1000

0.005

20

1

0.000532

0.000556

0.002401

5

1000

0.005

17

1

0.000527

0.000552

0.001000

6

1000

0.005

12

1

0.000521

0.000545

0.000797

7

1000

0.005

13

1

0.000525

0.000553

0.002580

8

1000

0.005

14

1

0.000495

0.000518

0.002008

9

1000

0.020

6

1

0.000485

0.000509

0.000562

10

1000

0.010

6

1

0.000484

0.000508

0.000599

11

1000

0.030

6

1

0.000484

0.000508

0.000556

12

1000

0.060

6

1

0.000483

0.000506

0.000578

13

1000

0.040

6

1

0.000484

0.000507

0.000560

14

500

0.040

6

1

0.000498

0.000519

0.000594

15

200

0.040

6

1

0.000547

0.000574

0.000673

16

2000

0.040

6

1

0.000497

0.000521

0.000555

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1. Шунина, Ю. Прогнозирование платежеспособности клиентов банка на основе методов машинного обучения и марковских цепей [Электронный ресурс]/ Ю. Шунина, В. Клячкин - Электрон. журн. - Режим доступа: http://cyberleninka.ru/article/n/prognozirovanie-platezhesposobnosti-klientov-banka-na-osnove-metodov-mashinnogo-obucheniya-i-markovskih-tsepey -2015

2. Кашницкий, Юрий. Открытый курс по машинному обучению [Электронный ресурс]/ Ю. Кашницкий - Электрон. текстовые дан. - Режим доступа: https://github.com/Yorko/mlcourse_open, свободный.

3. Сорокин, А.С. Построение скоринговых карт с использованием модели логистической регрессии [Электронный ресурс] / А.С. Сорокин// Интернет-журнал «Науковедение», - 2014 -- Выпуск 2. - Режим доступа: http://naukovedenie.ru/PDF/180EVN214.pdf

4. N. Yadav and M. Kumar, An Introduction to Neural Network Methods for Differential Equations, Springer briefs in applied sciences and technology, 2015.

5. F. Rosenblatt, Principles of neurodynamics; perceptrons and the theory of brain mechanisms, Washington, Spartan Books, 1962.

6. Alejandro Correa B. and Andres Gonzalez M., Evolutionary algorithms for selecting the architecture of a MLP Neural Network: A Credit Scoring Case, 11th IEEE International Conference on Data Mining Workshops, 2011. Access: https://pdfs.semanticscholar.org/23c9/9d3d2a7ff0820227dc3275c7919090a141e6.pdf

7. M. Ezekiel and K. Fox, Methods of Correlation and Regression Analysis: Linear and Curvilinear , John Wiley & Sons Inc, 1959.

Размещено на Allbest.ru

...

Подобные документы

  • Понятие искусственного нейрона и искусственных нейронных сетей. Сущность процесса обучения нейронной сети и аппроксимации функции. Смысл алгоритма обучения с учителем. Построение и обучение нейронной сети для аппроксимации функции в среде Matlab.

    лабораторная работа [1,1 M], добавлен 05.10.2010

  • Технологии решения задач с использованием нейронных сетей в пакетах расширения Neural Networks Toolbox и Simulink. Создание этого вида сети, анализ сценария формирования и степени достоверности результатов вычислений на тестовом массиве входных векторов.

    лабораторная работа [352,2 K], добавлен 20.05.2013

  • Общие сведения о принципах построения нейронных сетей. Искусственные нейронные системы. Математическая модель нейрона. Классификация нейронных сетей. Правила обучения Хэбба, Розенблатта и Видроу-Хоффа. Алгоритм обратного распространения ошибки.

    дипломная работа [814,6 K], добавлен 29.09.2014

  • Модели нейронных сетей и их реализации. Последовательный и параллельный методы резолюции как средства логического вывода. Зависимость между логическим следованием и логическим выводом. Применение технологии CUDA и реализация параллельного алгоритма.

    дипломная работа [1,5 M], добавлен 22.09.2016

  • Математические модели, построенные по принципу организации и функционирования биологических нейронных сетей, их программные или аппаратные реализации. Разработка нейронной сети типа "многослойный персептрон" для прогнозирования выбора токарного станка.

    курсовая работа [549,7 K], добавлен 03.03.2015

  • Диагностический анализ изучения алгоритмов обучения нейронных сетей "с учителем". Сбор входных и выходных переменных для наблюдений и понятие пре/пост процессирования. Подготовка и обобщение многослойного персептрона, модель обратного распространения.

    курсовая работа [249,3 K], добавлен 22.06.2011

  • Прогнозирование на фондовом рынке с помощью нейронных сетей. Описание типа нейронной сети. Определение входных данных и их обработка. Архитектура нейронной сети. Точность результата. Моделирование торговли. Нейронная сеть прямого распространения сигнала.

    дипломная работа [2,7 M], добавлен 18.02.2017

  • Построение векторной модели нейронной сети. Проектирование и разработка поискового механизма, реализующего поиск в полнотекстовой базе данных средствами нейронных сетей Кохонена с применением модифицированного алгоритма расширяющегося нейронного газа.

    курсовая работа [949,0 K], добавлен 18.07.2014

  • Рост активности в области теории и технической реализации искусственных нейронных сетей. Основные архитектуры нейронных сетей, их общие и функциональные свойства и наиболее распространенные алгоритмы обучения. Решение проблемы мертвых нейронов.

    реферат [347,6 K], добавлен 17.12.2011

  • Описание технологического процесса напуска бумаги. Конструкция бумагоделательной машины. Обоснование применения нейронных сетей в управлении формованием бумажного полотна. Математическая модель нейрона. Моделирование двух структур нейронных сетей.

    курсовая работа [1,5 M], добавлен 15.10.2012

  • Математическая модель нейронной сети. Однослойный и многослойный персептрон, рекуррентные сети. Обучение нейронных сетей с учителем и без него. Алгоритм обратного распространения ошибки. Подготовка данных, схема системы сети с динамическим объектом.

    дипломная работа [2,6 M], добавлен 23.09.2013

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

    дипломная работа [1,0 M], добавлен 28.12.2015

  • Простейшая сеть, состоящая из группы нейронов, образующих слой. Свойства нейрокомпьютеров (компьютеров на основе нейронных сетей), привлекательных с точки зрения их практического использования. Модели нейронных сетей. Персептрон и сеть Кохонена.

    реферат [162,9 K], добавлен 30.09.2013

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

    реферат [158,2 K], добавлен 16.03.2011

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

    дипломная работа [2,2 M], добавлен 07.06.2012

  • Анализ применения нейронных сетей для прогнозирования ситуации и принятия решений на фондовом рынке с помощью программного пакета моделирования нейронных сетей Trajan 3.0. Преобразование первичных данных, таблиц. Эргономическая оценка программы.

    дипломная работа [3,8 M], добавлен 27.06.2011

  • Способы применения технологий нейронных сетей в системах обнаружения вторжений. Экспертные системы обнаружения сетевых атак. Искусственные сети, генетические алгоритмы. Преимущества и недостатки систем обнаружения вторжений на основе нейронных сетей.

    контрольная работа [135,5 K], добавлен 30.11.2015

  • Математическая модель искусственной нейронной сети. Структура многослойного персептрона. Обучение без учителя, методом соревнования. Правило коррекции по ошибке. Метод Хэбба. Генетический алгоритм. Применение нейронных сетей для синтеза регуляторов.

    дипломная работа [1,5 M], добавлен 17.09.2013

  • Разработка системы оценки кредитоспособности заемщика с использованием персептрона. Сущность скоринговых систем, нейронных сетей. Скоринговые системы как средство минимизации кредитного риска. Этапы проектирования сети. Определение значимости параметров.

    презентация [882,9 K], добавлен 19.08.2013

  • Обучение простейшей и многослойной искусственной нейронной сети. Метод обучения перцептрона по принципу градиентного спуска по поверхности ошибки. Реализация в программном продукте NeuroPro 0.25. Использование алгоритма обратного распространения ошибки.

    курсовая работа [1019,5 K], добавлен 05.05.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.