Полный исходный код и анализ производительности алгоритмов обучения на реальном 30-килобайтном наборе данных
Введение
Даже при бесплатной доступности библиотек и инструментов для глубокого обучения демонстрация эффективности решений для глубокого обучения остается нетривиальной проблемой.
Самая большая проблема заключается в том, что поставщики решений для глубокого обучения не имеют доступа к данным потенциальных клиентов. Без данных о клиентах производительность и эффективность решений можно продемонстрировать только с использованием общедоступных наборов данных.
Как правило, используется ряд инструментов, методов и алгоритмов, чтобы определить подход, который приведет к наилучшей производительности. Популярные инструменты включают библиотеки, например TensorFlow, PyTorch, Theano и т. Д., А также инструменты визуализации, например TensorBoard, Matplotlib и т. Д.
В следующем анализе мы будем использовать комбинацию свободно доступных инструментов и библиотек и достаточно большой набор данных, чтобы оценить производительность глубокой нейронной сети.
Предпосылки
Чтобы понять этот пост, вам необходимо иметь некоторое представление об основных конструкциях, таких как
- Статистическое моделирование
- Нейронные сети
- TensorFlow и TensorBoard
- Инструменты построения графиков плотности (такие как Gaussian_KDE и т. Д.)
Если у вас нет опыта работы с TensorFlow, щелкните здесь, чтобы просмотреть руководство.
Набор данных
Набор данных, используемый в этом примере, представляет собой набор из 30 000 реальных образцов данных из 24 функций, связанных с пользователями и статусом их кредитных карт по умолчанию. 24 функции включают демографическую информацию (возраст, пол, семейное положение и т. Д.), Кредитный лимит, сведения о прошлых платежах и другую важную информацию. Полную информацию о наборе данных можно найти позже в этом посте.
Для этого анализа мы решили никак не очищать данные. Мы предположили, что данные чистые и не имеют проблем, связанных с грязными наборами данных.
Базовый анализ данных с использованием точечных диаграмм
Мы сделали базовый график функций, доступных в наборе данных, чтобы увидеть, какие гиперпараметры нам следует выбрать. Было очевидно, что в данных нет реальной очевидной закономерности. Вот некоторые из диаграмм рассеяния, построенных с использованием Gaussian_KDE.
Как вы можете видеть, есть некоторая корреляция, но ничего интуитивно не указывает на очевидную линейную зависимость между входными и выходными параметрами.
Построение нейронной сети с помощью TensorFlow
Затем мы создаем нейронную сеть, которая способна прогнозировать риск дефолта, используя доступные данные. Мы построим эту нейронную сеть в TensorFlow с нуля.
Учитывая, что не было никаких указаний на очевидную закономерность в данных, исходя из опыта, мы начинаем с нейронной сети как минимум с 2 скрытыми слоями. Нейронная сеть должна иметь возможность отображать некоторые из потенциальных скрытых закономерностей в наборе данных.
Вот пример сверточной нейронной сети, которую мы создали для регрессии с 2 скрытыми слоями и полной конфигурацией из 24, 20, 10, 1 полностью связанных узлов.
Вы можете найти полный исходный код внизу.
Обучение нейронной сети
Нейронная сеть была обучена на случайной выборке из 23000 выборок с пакетным градиентным спуском. Каждая партия состояла из 100 образцов, и для этого примера мы использовали 9000 итераций.
Обучение на каждом уровне можно визуализировать с помощью TensorBoard, как показано на следующих диаграммах.
Результаты (эффективность ~ = 80%)
Эта нейронная сеть может прогнозировать риск дефолта с эффективностью почти 80%. Производительность можно дополнительно настроить с помощью оптимизации гиперпараметров без переобучения.
Анализ обучения нейронной сети
Когда мы визуализируем то, что узнала нейронная сеть, можно получить несколько интересных результатов.
Например. ниже показана корреляция между лимитным балансом и риском неисполнения обязательств, которую нейронная сеть извлекла из данных.
Игнорируя выбросы, мы видим четкую закономерность между более высоким риском дефолта, связанным с более низкими лимитами остатков.
Кроме того, похоже, существует некоторая корреляция между уровнем образования и риском дефолта, как показано на следующем рисунке.
Возрастной риск, узнаваемый нейронной сетью, выглядит следующим образом. Как видите, нейронная сеть узнала, что плотность риска наиболее высока в возрастной группе от 20 до 30 лет.
Нейронная сеть не смогла найти никакой корреляции между статусом брака и риском дефолта, как показано на следующей диаграмме.
Исходный код
Нейронная сеть построена на Python с использованием TensorFlow. Полный исходный код с примерами данных доступен на GitHub. Ниже приведена ссылка на репозиторий GitHub.