Прогнозирование цен на листинги в Нью-Йорке с использованием XGBoost

Знакомство с некоторыми концепциями машинного обучения

Что

Мы собираемся создать модель машинного обучения, чтобы предсказать стоимость аренды жилья в Нью-Йорке.

АЛГОРИТМ + ДАННЫЕ = МОДЕЛЬ

Как

Мы собираемся обучить нашу модель, используя исторические данные об аренде жилья в Нью-Йорке.

Модель будет извлекать уроки из данных и (надеюсь) будет готова прогнозировать цену для любого данного будущего листинга.

Расколоть

Мы разделили наши данные на две группы: данные обучения и данные тестирования.

Мы используем обучающие данные для обучения и создания модели.

Мы используем данные тестирования для расчета точности модели путем сравнения ПРЕДСКАЗАННЫХ значений модели с РЕАЛЬНЫМИ значениями.

Итак, все дело в обучении… и тестировании!

Точность

Мы будем использовать среднюю абсолютную ошибку (MAE) для измерения точности нашей модели.

Мы рассчитываем MAE, вычисляя среднее значение всех абсолютных различий между ПРЕДСКАЗАННЫМИ значениями модели и НАБЛЮДАЕМЫМИ (РЕАЛЬНЫМИ) значениями.

Это хорошо?

Мы вычисляем MAE и получаем это число: 685. Итак?

Нам нужно сравнить нашу меру точности с чем-то, чтобы понять, чего мы придерживаемся в нашей модели.

Какую модель лучше всего использовать для прогнозирования цен на недвижимость в Нью-Йорке без какой-либо модели?

А как насчет средней цены объявлений в Нью-Йорке?

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

Давайте назовем это нашей МОДЕЛЕЙ МОДЕЛИ.

Оказывается, MAE для фиктивной модели (1915) намного больше, чем MAE для нашей модели (685).

Чем меньше MAE, тем выше точность модели.

Модель

Теперь давайте подумаем о сложности нашей модели.

Какую модель мы ищем: A, B или C?

A → не очень соответствует обучающим данным — низкая сложность

C → слишком подходит для обучающих данных — высокая сложность

B → сохраняет баланс между подгонкой обучающих данных и сложностью

Мы запускаем разные версии модели XGBoost, изменяя значение параметра MaxDepth (сложность) и вычисляя MAE как для данных обучения, так и для данных тестирования.

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

Если мы установим значение XGBoost MaxDepth больше 12, наша модель будет слишком сильно соответствовать обучающим данным (переобучение).

Результаты

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

Мы получили модель, способную предсказать цену аренды жилья в Нью-Йорке со средней абсолютной ошибкой 709 долларов США.

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

Блокнот Юпитера

https://github.com/arieladriannovelli/ml/blob/master/Predicting%20NYC%20Listing%20Price%20using%20XGBoost.ipynb