Ранее на нашем проекте

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

На этой неделе о моделировании ущерба от землетрясений

Как уже упоминалось, нашим лучшим подходом был классификатор kNN с точностью 71%. Тем не менее, мы думаем, что можем добиться большего успеха с нейронными сетями, которые предоставляют более сложные модели, поскольку набор данных достаточно велик (как количество выборок, так и размерность признаков), чтобы нести такие сложности.

Использование нейронных сетей

Мы планируем начать с простой модели нейронной сети с 1 скрытым слоем.
Первая контрольная точка — выбрать количество юнитов в скрытом слое. На этом шаге формула:

помогает нам.
Согласно этой формуле, мы находим правильное число примерно равным 1014, когда альфа выбрана равной 5, и поскольку нейронные сети лучше работают со значениями, которые являются степенью двойки, мы определили, используя 1024 узла в нашем единственном скрытом слое.

Эксперимент 1. Используйте нейронную сеть с 1 скрытым слоем

В этой модели мы определили размер пакета как 128 и скорость обучения как 0,001.
Вот соответствующие «графики потерь» для наборов «Train-Test».

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

Эксперимент 2. Используйте нормализованные функции

В этом эксперименте мы нормализовали признаки и запустили предыдущую модель на нормализованном наборе данных.
Вот соответствующие графики:

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

Кривые потерь показывают, что наша модель недостаточно подобрана.
Это показывает, что нам нужно увеличить сложность нашей модели.

Эксперимент 3. Попробуйте более сложную сеть

На следующем шаге мы запустили модель с 4 скрытыми слоями, которые содержат 1024–512–256–128 единиц соответственно.

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

Эксперимент 4. Уменьшение размерности

Мы хотели исследовать влияние размерности признаков и с этой целью уменьшили количество признаков.

Вывод:

Мы упростили набор данных, выбрав меньшее количество функций, мы выбрали 10 наиболее важных функций из «Дополнительного классификатора дерева», который мы использовали в нашем последнем блоге.

Однако производительность это не увеличило, а вызвало переобучение.

Вот несколько основных причин переобучения:
1 – Слишком сложная модель
2 – Меньшее количество выборок
3 – Проклятие размерности.
4 – Зашумленные данные

С каким из них поиграть?
Не с 1.
Нейронная сеть с меньшим количеством слоев не показала хороших результатов в наших экспериментах.
Не 2. Уже есть 200 000 образцов поездов.
Проклятие размерности:
Мы увидели, что должны использовать все функции и попробовать их на нашей модели.
Шумный Данные:
Будет упомянуто в блоге на следующей неделе.

Общий вывод:

Наконец, в эксперименте 3 потери при поездке и проверке уменьшаются, как и ожидалось, следующая цель — ускорить сходимость.

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

Отныне наша главная задача — оптимизировать гиперпараметры, такие как скорость обучения, размер пакета, оптимизатор (ADAM, SGD и т. д.).

Как мы упоминали ранее, когда мы смотрим на распределение меток, возникает огромная проблема дисбаланса классов. Чтобы решить эту проблему, мы попробуем разные функции потерь, некоторые методы постобработки.

Авторы:Мустафа Серкан AMAC | Бейза ЧЕВИК | Мерт КОКЕЛЕК