(Обратитесь к сотрудничеству над проектами)

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

Набор данных Цены на дома в округе Кинг содержит 21613 точек данных о продажных ценах на дома в округе Кинг. Он содержит около 19 столбцов с характеристиками, показанных ниже. Это сочетание даты, числовых и категориальных данных. Используя данные из коробки, мы получим MAE 149167,61. Однако после некоторой обработки данных мы можем достичь MAE всего 69471,41. Это улучшение более чем на 50%.

Визуализация данных

Давайте углубимся в данные и посмотрим, сможем ли мы получить некоторое представление о них, прежде чем строить нашу модель. Мы будем использовать библиотеку статистической визуализации Python Seaborn, которая построена поверх matplotlib. Ниже представлено распределение каждой из функций в зависимости от цены.

  • Год продажи является бимодальным и включает данные за два года: 2014 и 2015 гг.
  • Такие данные, как количество спален, количество ванных комнат, площадь гостиной, площадь выше, площадь подвала, продажная цена, являются одномодальными, и мы уже можем сказать, что для домов, имеющих более высокое значение для этих характеристик, модель может иметь более высокую среднюю ошибку. .

Давайте посмотрим на соотношение характеристики и столбца с меткой, то есть продажной цены дома.

Построение модели глубокого обучения

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

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

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

Использование данных прямо из коробки дает нам MAE 149167.61. Теперь давайте рассмотрим некоторые методы обработки данных и то, как они могут помочь улучшить производительность.

Отбеливание данных

Некоторые из наших функций имеют порядок 0,1, некоторые - порядка 10, некоторые - порядка 100 и некоторые - 10000. Это несоответствие в порядке различных числовых значений может привести к тому, что значения более высокого порядка будут доминировать над другими значениями. «Отбеливание» данных помогает нормализовать порядок различных значений.

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

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

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

Преобразование долготы и широты в расстояние

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

Используя новые функции «расстояние», «большее_длинное», «меньшее_длинное», «большее_лат» и «меньшее_лат», мы снова обучаем модель над набором данных. В результате MAE по обучающей выборке снижается до 87231,59.

Работа с категориальными данными

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

Категориальные данные могут быть подробно выражены с помощью вложений. Подробнее о встраиваниях читайте в статье с сайта fast.ai.

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

Этой модели легче следовать, если мы просто распечатаем модель и визуализируем ее.

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

Давайте визуализируем вложения почтовых индексов с помощью библиотеки TSNE следующим образом:

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

Заключение

Итак, хотя мы начали с MAE 149167,61, после очистки данных и их обработки с использованием категориальных встраиваний, мы снизили MAE до 69471,41.