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

Airbnb – это надежная компания, которая позволяет пользователям бронировать номера для гостей, а также предоставляет им доступ к условиям, сообщая им о предыдущих отзывах людей, которые останавливались в этом месте. Если вы являетесь человеком, который использует Airbnb для размещения комнат для различных путешественников и людей, которые заинтересованы в изучении городов и ищут временное проживание, может быть полезно узнать правильные цены, которые будут установлены для вас. место с помощью машинного обучения и науки о данных. В этой статье мы рассмотрим использование данных Airbnb и определим правильные цены на ваш дом в зависимости от вашего местоположения и вашего района. Давайте теперь начнем.

Набор данных можно найти на этом веб-сайте. Щелкните выделенный текст, чтобы просмотреть и загрузить данные: Открытые данные Airbnb в Нью-Йорке | Kaggle

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

Также важно учитывать, что имеющиеся у нас данные и цены на жилье относятся только к штату Нью-Йорк. Поэтому следует принять во внимание, что цены отражают цены, которые мы можем ожидать от штата Нью-Йорк и никаких других штатов. Если вы находитесь в других штатах, есть вероятность, что мы не можем получить наилучшие результаты или прогнозы от наших моделей, поскольку мы обучили их на данных из штата Нью-Йорк. Если вас интересуют и другие штаты, не стесняйтесь загружать соответствующие данные, которые также присутствуют в Kaggle, чтобы вы могли затем определить правильную цену, которая будет установлена ​​​​для вашего дома соответственно. Хорошо, без лишних слов, давайте начнем с кода и чтения данных.

Импорт библиотек

Мы импортируем библиотеку NumPy для эффективного вычисления матриц, с которыми мы часто имеем дело в области машинного обучения.

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

Pandas в основном используется для чтения данных и создания фреймов данных, которые весьма полезны в Python.

Matplotlib похожа на библиотеку Seaborn, используемую для визуализации.

Библиотека Предупреждений импортируется только для того, чтобы отфильтровать предупреждения, которые мы можем получить в коде во время его выполнения.

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

Чтение данных

Мы собираемся прочитать фактические данные и сохранить их в переменной 'df' для дальнейшего анализа и прогнозов машинного обучения. Обратите внимание, что я только что прочитал данные из текущего каталога. Однако если данные находятся в каком-то другом месте, вам нужно будет указать путь, по которому они находятся, прежде чем читать их.

Также может быть несколько CSV-файлов, которые мы можем захотеть импортировать и объединить при необходимости. В нашем случае нам предоставляется только один файл данных, который содержит прайс-листы New York Airbnb вместе с полезной информацией.

Определение полезных функций

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

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

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

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

Настройка гиперпараметров

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

Регрессор дерева решений

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

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

Случайный лесной регрессор

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

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

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

Дерево принятия решений по повышению градиента

И последнее, но не менее важное: мы также выполним настройку гиперпараметров для дерева принятия решений с усилением градиента (GBDT), определив количество оценщиков или количество деревьев, которые будут использоваться для прогнозирования. См. ячейку кода ниже, чтобы проверить, как это делается на самом деле.

Мы также следуем аналогичной процедуре и перебираем список всех гиперпараметров, чтобы найти тот, который лучше всего работает с данными перекрестной проверки. Если проблема, которую вы решаете, связана с прогнозированием временных рядов, то было бы не лучшим подходом разделить данные на k сгибов, как во временных рядах, мы всегда были бы заинтересованы в использовании прошлых значений для прогнозирования будущих значений. В k-кратной перекрестной проверке мы выбираем один раз в качестве данных перекрестной проверки, а остальные - в качестве данных поезда. Мы делаем этот шаг k раз, рассматривая разные складки. Однако это не будет иметь смысла, если мы будем использовать первую складку в качестве перекрестной проверки, а остальные — в качестве тестовых данных. В этом случае мы просто пропускаем информацию о будущем, чтобы предсказать прошлое (первый раз k-кратной перекрестной проверки). Следовательно, в задачах временных рядов мы должны использовать альтернативные способы прогнозирования и перекрестной проверки временных рядов.

Тестовый прогноз

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

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

Наша домашняя цена будет установлена

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

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

Развертывание

Следует отметить, что мы используем Jupyter Notebook в качестве источника для экспериментов с различными моделями, прежде чем выбрать лучшую и предоставить пользователю возможность выбрать тип дома. Однако эта процедура не интуитивно понятна пользователю, использующему наше приложение для предсказания правильных цен на жилье. В этом случае лучший способ решить эту проблему — создать UI (пользовательский интерфейс), чтобы он был удобным для пользователей и чтобы они могли понимать вводимые значения. Кроме того, модель будет работать за кулисами, чтобы дать лучший прогноз, с которым мы уже экспериментировали в блокноте Jupyter. Наконец, пользователю предоставляется прогноз правильных цен, которые будут установлены для дома, на основе информации, введенной в пользовательском интерфейсе. Результат отображается в удобном для пользователя формате, чтобы они могли, наконец, предпринять правильные шаги для определения цены дома.

Заключение

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

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

https://suhas-maddali007.medium.com/membership

Ниже приведены способы, по которым вы можете связаться со мной или ознакомиться с моей работой.

GitHub: suhasmaddali (Сухас Маддали) (github.com)

LinkedIn: (1) Сухас Маддали, Северо-восточный университет, наука о данных | LinkedIn

Среда:Сухас Маддали — среда