Главная    Интернет-библиотека    Финансы    Контроллинг, экономический анализ    Применение нейросетевого моделирования для прогнозирования финансового состояния предприятий

Применение нейросетевого моделирования для прогнозирования финансового состояния предприятий

18.11.2014

Применение нейросетевого моделирования для прогнозирования финансового состояния предприятий

Опубликовано в журнале "Управленческий учет" №4 год - 2011

Никифорова Н.А.,
к. э. н., доцент, зав. кафедрой «Экономический анализ»
ФГОУ ВПО АБиК Минфина России,

Донцов Е.В.,
инженер факультета вычислительной математики
и кибернетики МГУ им. М.В. Ломоносова,

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

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

Ключевые слова: анализ финансового состояния, моделирование, методология анализа, прогнозирование показателей финансовой отчетности, нейронная сеть, программное обеспечение.

В настоящий момент применение метода нейронных сетей в финансовом анализе мало изучено. Есть отдельные работы по оценке кредитоспособности в банковской сфере.

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

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

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

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

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

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

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

Задача прогнозирования формулируется следующим образом:

Даны k коэффициентов из финансового отчета предприятия:

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

Для решения поставленной задачи предлагается использовать подход теории Data Mining – нейронные сети. Полученные результаты позволят провести сравнение эффективности использования данного метода. Термин Data Mining переводится как «извлечение информации», интеллектуальный анализ данных, средства поиска закономерностей, раскопка знаний в базах данных. Основной составляющей успеха при применении технологии обработки данных является их правильная подготовка. При неверной интерпретации результатов исследований гарантированы ложные выводы и принятие неправильных решений. Data Mining тесно связана с задачей машинного обучения и искусственного интеллекта. Машинное обучение фактически является процессом получения новых знаний, которые можно использовать для получения ранее  неизвестной информации, причем модель допускает настройку в процессе работы. В связи с этим многие методы Data Mining называют адаптивными методами. Наиболее популярным примером машинного обучения являются нейронные сети.

Методом Data Mining является задача классификации – отнесение объектов к одному из ранее известных классов. В данном случае задача машинного обучения является задачей обучения с учителем. Решается задача прогнозирования классификации компаний для определения наличия и степени банкротства. При положительном результате можно будет судить о реальном применении программного комплекса в финансовом анализе.

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

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

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

Сигнал NET далее преобразуется активационной функцией F и дает выходной нейронный сигнал OUT. Активационная функция может быть обычной линейной функцией. Однако обычно  применяют «сжимающую» функцию, для того чтобы блок F сужал диапазон изменения величины NET так, что при любых значениях NET значения OUT принадлежат некоторому конечному интервалу. В качестве «сжимающей» функции часто используется логистическая или  сигмоидальная (S-образная) функция. Эта функция математически выражается тем, как группы нейронов образуют слои нейронной сети. В исследуемой нейронной сети их два.

Таким образом,

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

Удобно считать веса элементами матрицы W. Матрица имеет т строк и п столбцов, где m – число входов, а n – число нейронов в скрытом слое.

Например  – это вес, связывающий третий вход со вторым нейроном.

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

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

Обучение сети прямого распространения требует выполнения следующих операций:
1. Выбрать очередную обучающую пару из обучающего множества; подать входной вектор на вход сети.
2. Вычислить выход сети.
3. Вычислить разность между выходом сети и требуемым выходом (целевым вектором обучающей пары).
4. Подкорректировать веса сети так, чтобы минимизировать ошибку.
5. Повторять шаги с 1 по 4 для каждого вектора обучающего множества до определенного предела или пока ошибка на всем множестве не достигнет приемлемого уровня.

На шаги 1 и 2 можно смотреть как на «проход вперед», так как сигнал распространяется по сети от входа к выходу. Шаги 3 и 4 составляют «обратный проход»; здесь вычисляемый сигнал ошибки распространяется обратно по сети и используется для подстройки весов. Эти два прохода теперь будут детализированы и выражены в более математической форме.

Проход вперед. Шаги 1 и 2 могут быть выражены в векторной форме следующим образом: подается входной вектор Х и на выходе получается вектор Y. Векторная пара вход–цель Х и Т берется из обучающего множества.

Вычисления проводятся над вектором X, чтобы получить выходной вектор Y.

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

Этот процесс может быть выражен в сжатой форме с помощью векторной нотации. Веса между нейронами могут рассматриваться как матрица W. Например, вес от нейрона 8 в слое 2 к нейрону 5 слоя 3 обозначается w8,5. Тогда NET-вектор слоя N может быть выражен не как сумма произведений, а как произведение Х и W. В векторном обозначении N = XW. Покомпонентным применением функции F к NET-вектору N получается выходной вектор О.

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

Выходной вектор одного слоя является входным вектором для следующего, поэтому вычисление выходов последнего слоя требует применения уравнения О = F(XW) к каждому слою от входа сети к ее выходу.

Обратный проход. Рассмотрим процесс обучения для одного веса от Нейрона  в скрытом слое  к нейрону  в выходном слое

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

Затем  умножается на величину OUT нейрона  из которого выходит рассматриваемый вес. Это произведение, в свою очередь, умножается на коэффициент скорости обучения  (обычно от 0,01 до 1,0), и результат прибавляется к весу. Такая же процедура выполняется для каждого веса от нейрона скрытого слоя к нейрону в выходном слое.

Следующие уравнения иллюстрируют это вычисление:

где  – величина веса от нейрона  в скрытом слое к нейрону  в выходном слое на шаге n (до коррекции); отметим, что индекс  относится к слою, в котором заканчивается данный вес;  – величина веса на шаге n + 1 (после коррекции);  – величина  для нейрона  в выходном слое  – величина OUT для нейрона в скрытом слое   

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

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

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

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

Входные сигналы нейронной сети должны одинаково влиять на сеть. Для этого они должны изменяться в ограниченном диапазоне значений. Пусть этот диапазон лежит от 0 до 1. Необходимо нормализовать данные в каждой из граф, чтобы значения лежали в отведенном отрезке.

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

Для проведения нормализации нами осуществлены следующие преобразования:

Графы «Требование состояния чистых активов» (да/нет), «Признаки банкротства» содержат два значения: да и нет. Будем соотносить «да» с 1, а значению «нет» с 0.

В графах «Значение показателя финансовой независимости», «Доля основных средств в активе», «Уровень износа основных средств», «Коэффициент выбытия основных средств» встречаются значения от 0 до 100%.

Нормализация этих данных заключается в делении значений на 100, чтобы получить значения от 0 до 1.

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

Применяя метод медианы, было получено оптимальное распределение размера выручки компаний на отрезке [0, 1]. Значению 200 000 тыс. руб. и выше соответствует значение 1, а отрицательным значениям выручки соответствует 0.

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

В графе «Налоговые риски» значение «несущественные» соотнесем значению 0,5,  «существенные» – 1, «замечаний нет» – 0.

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

Для решения задачи прогнозирования финансового состояния предприятия написан программный комплекс. Программное обеспечение написано на языке программирования C++ с использованием библиотеки QT. Данное расширение позволяет компилировать программы как в ОС Windows, так и в Linux без изменений в исходном коде.

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

Программа работает с входными файлами расширения *.txt. Задача подготовки данных к исследованию проводится в два этапа. На первом этапе необходимо преобразовать данные из таблицы в вид, пригодный для использования нейронной сети.

Входной файл загружается c помощью кнопки InputData. Содержимое файла отображается во вкладке inTable. Программа позволяет проводить ручную корректировку данных в случае необходимости.

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

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

Параметры обученной нейронной сети сохраняются в файле, указанном в программе напротив кнопки Weights.

Настройка нейронной сети осуществляется указанием скорости обучения, количеством итераций.

В предоставленных отчетах о финансово-хозяйственной деятельности содержится вывод о состоянии предприятия, вычисленный методом, применяемым собственником предприятия г. Москвы. Он делит компании на два класса: с признаками банкротства и без них. Дополнить анализ вероятности банкротства предприятий целесообразно двумя другими методиками: методом Бивера и методом Донцовой–Никифоровой. Для вычисления класса, характеризующего вероятность банкротства предприятия, написана программа NikDon, ver1.0 [2].

NikDon, ver1.0 позволяет на основе статей финансовой отчетности вычислить класс банкротства предприятия с помощью метода Донцовой–Никифоровой. Данное программное обеспечение позволяет проводить как анализ одной организации, так и пакетную обработку множества компаний.

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

В программе есть возможность просмотра промежуточных этапов вычисления, что может являться полезным при ее практическом применении (рис. 7).

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

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

Исследование проводилось на основании информации о финансово-хозяйственной деятельности около 150 предприятий г. Москвы за 2006, 2007 и 2008 гг. Для корректного обучения нейронной сети необходимо наличие данных предприятия за 2006 и 2007 гг. Таких компаний оказалось 122. На данном множестве было проведено обучение нейросети.

В обучающем множестве из общего числа предприятий получено 19 компаний с признаками банкротства по методике, используемой собственниками предприятий г. Москвы, 103 без признаков банкротства. Классификация предприятий по методу Донцовой–Никифоровой следующая: 56 предприятий 1-го класса, 27 предприятий 2-го и 3-го класса, 7 предприятий 4-го класса и 5 предприятий 5-го класса. Классификация по методу Бивера: 102 предприятия 1-го класса, 3 предприятия 2-го класса и 17 предприятий 3-го класса.

Тестирование работы осуществлялось на данных за 2008 г. Входными параметрами использовались данные о компаниях за 2007 г. В тестировании участвовали 45 предприятий. Различия в обучающем и тестовом множестве предприятий объясняются изменениями в составе предприятий г. Москвы, а также избирательным аудитом организаций.

Из 45 тестируемых предприятий только у 17 были классифицированы по методике собственников предприятий г. Москвы. Классификацию по методам Бивера и Донцовой–Никифоровой прошли все 45 предприятий.

Прогнозирование с помощью нейронной сети
Для каждого из методов вероятности банкротства необходимо было провести обучение нейронной сети. Обучение проходило на данных за 2006 г. и полученных в результате расчета классов компаний по состоянию на 2007 г. Коррекция весов нейронной сети проходила после предъявления каждого примера из обучающего множества. Скорость обучения равна 0,5.

Для прогнозирования финансового оздоровления предприятий в 2008 г. на вход обученной нейронной сети подавались данные компаний за 2007 г.

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

Проведен анализ прогнозирования признаков банкротства по методу собственников предприятий г. Москвы на 17 предприятиях, а по методам Бивера и Донцовой–Никифоровой – на 45 предприятиях.

Нейронная сеть корректно определила классы Бивера в 75,56% случаев.

Классы из метода Донцовой–Никифоровой нейронная сеть правильно идентифицировала в 73,33%. Два класса в соответствии с методикой, применяемой собственниками предприятий г. Москвы, сеть разделила с точностью 75% (рис. 8).

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

Литература
1. Донцова Л.В., Никифорова Н.А. Анализ финансовой отчетности : учебник. – 7-е изд. – М. : Дело и Сервис, 2009.
2. Никифорова Н.А., Донцов Е.В. Оперативный мониторинг финансового состояния // Управленческий учет. – 2009. – № 6.
3. Уоссермен Ф. Нейрокомпьютерная техника: Теория и практика : пер. с англ. – Б.м., 2004.
4. Уфимцев М.В. Методы анализа данных. – М. : МАКС Пресс, 2007.
5. Merkov A.B. About Statistical Learning Theory. –http://www.recognition.mccme.ru/pub/RecognitionLab.html/slt.html.
6. Muller K., Mika S. An Introduction to Kernel-Based Learning Algorithms // IEEE Neural Networks. – 2001. – № 2.
7. Vapnik V.N. An Overview of Statistical Learning Theory // IEEE Neural Networks. – 1999. – № 5.

Также по этой теме: