Портфолио проекта Lambda School Unit II

Прогнозирование цен на жилье итип здания

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

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

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

Данные

Мне удалось получить данные о более чем 5 000 000 объявлений о недвижимости в России от Kaggle. В наборе данных есть столбцы со списком даты, времени, широты, долготы, региона, типа здания, типа объекта, уровня, уровней, комнат, площади, кухни и цены. В этом большом наборе данных не было пропущенных значений, но определенно были выбросы. Эти данные взяты из сервисов поиска недвижимости в России за 2018–2021 годы. Российский рынок недвижимости уже несколько лет находится в фазе роста, а это значит, что вы все еще можете найти объекты по очень привлекательным ценам, но с хорошими шансами на увеличение их стоимости в будущем. Ниже находится ключ столбца.

Обработка данных

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

Отчет о профиле дал мне отличное представление о моих данных и о том, что нужно с ними делать. Во-первых, при наличии более 5 000 000 наблюдений обрезка данных была обязательной для использования моих моделей. Затем я заметил, что мне не нужен столбец времени, поскольку столбец даты был тем, что я мог использовать для своего индекса. Я также заметил, что у меня есть дубликаты, которые нужно добавить в мой набор данных. Зная, что нужно сделать, я начал писать свой код.

После устранения всех проблем, указанных выше, мой новый набор данных имел 704 495 строк и 11 столбцов. Теперь пришло время построить наши модели и работать с нашими данными!

Что это за проблема?

Теперь, когда наши данные готовы к работе, мы должны сначала спросить, какую проблему мы пытаемся решить, классификацию или регрессию? Цена дома — это проблема регрессии, то есть мы пытаемся предсказать выпуск непрерывных количеств. Тип здания — это проблема классификации, то есть мы пытаемся предсказать вывод дискретных меток классов 0–5, в нашем случае это проблема классификации нескольких классов.

Установление базовой линии

После разделения кадра данных на целевой вектор и матрицу признаков мы устанавливаем базовый уровень для каждой проблемы. С этой базовой линией мы сравниваем наши модели. В нашей задаче о типе здания мы получаем оценку точности для нашей базовой линии. Точность — это доля правильных прогнозов, полученных нашей моделью, а это означает, что нам нужна максимально возможная точность. С другой стороны, мы получаем базовую MAE для нашей задачи прогнозирования цен. Средняя абсолютная ошибка (MAE) — это мера ошибок между парными наблюдениями, отражающими одно и то же явление, то есть мы хотим, чтобы MAE был как можно ниже. Наконец, мы рассмотрим показатель оценки R² для нашего прогноза цены. R-квадрат — это статистическая мера, представляющая долю дисперсии зависимой переменной, которая объясняется независимой переменной или переменными в регрессионной модели. Это метрика 0–1, где нам нужны высокие баллы.

Бэгинг и бустинг

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

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

Изготовление моделей

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

Затем я переключился на другую задачу — прогнозирование типа здания и запустил модели классификатора случайного леса и XGBclassifier.

Как видите, показатель точности обеих моделей значительно выше, чем наш базовый уровень 0,37. Теперь вы можете подумать, что модель случайного леса — лучший выбор, но вы ошибаетесь. Модель случайного леса имеет более высокую точность проверки, но с точностью обучения 0,99 мы можем сказать, что модель переоснащается. Переобучение относится к модели, которая слишком хорошо моделирует обучающие данные. Переобучение происходит, когда модель изучает детали и шум в обучающих данных до такой степени, что это негативно влияет на производительность модели на новых данных.

Настройка модели

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

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

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

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

Важность перестановки

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

Наиболее важные функции

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

Отчет о классификации

Как следует из названия, отчет о классификации предназначен только для задач классификации, ниже приведен отчет для нашей задачи типа здания. Чтобы прояснить ситуацию, 0–5 представляют наши различные типы зданий. Точность говорит нам, какая доля положительных идентификаций была на самом деле правильной. В то время как припоминание говорит нам, какая доля фактических положительных результатов была идентифицирована правильно. Показатель F1 сочетает в себе точность и полноту по отношению к определенному положительному классу, показатель F1 можно интерпретировать как средневзвешенное значение точности и полноты, где показатель F1 достигает своего лучшего значения при 1 и худшего при 0.

Матрица путаницы

Наконец, мы подошли к нашей последней метрике — матрице путаницы. Это еще одна матрица, которая работает только с проблемами классификации, поэтому она представляет нашу проблему типа здания. Изучив эту матрицу путаницы, мы видим, что наша модель хорошо предсказывает типы зданий, и большинство типов зданий — это 1, 2 и 3.

Вывод

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