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

Выбор набора данных

Есть несколько платформ, которые предлагают бесплатные наборы данных для использования в науке о данных. Я использовал набор данных AirBnb по городу Сиэтл, который нашел на Kaggle.com.

Получить в данных

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

Какова пропорция цен в Сиэтле?

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

Как мы видим, большинство цен колеблется от нуля до 200 долларов. Вторая гистограмма показывает более глубокий взгляд на долю цен до 200 долларов. Самая распространенная цена составляет около 100 долларов, но есть и варианты по 50, 125, 150 и 175 долларов.

Есть ли особенности, влияющие на цену?

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

Количество мест оказывает явное влияние на цену: чем больше мест, тем выше цена, по крайней мере, до 9 мест. Но данные для более чем 6 размещений становятся очень плохими из-за очень низких записей. Также на цену влияет тип номера. Чем больше конфиденциальности вы получаете, тем выше цена.

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

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

Таким образом, мы увидели 2 характеристики (размещение и тип номера), которые явно влияют на цену, соседство — характеристики, которые, по-видимому, оказывают влияние, а также оценка по отзывам — характеристики, которые не влияют на цену.

Пусть машина учится

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

Какие характеристики больше всего влияют на цену?

Чтобы ответить на этот вопрос, я использовал регрессионный анализ. Это означает, что я беру некоторые данные для обучения модели линейной регрессии, которая может предсказать значение функции (здесь цена) с учетом ряда функций. Обученная модель будет не только иметь возможность прогнозировать, модель также может показывать взвешенные функции, которые влияют на прогнозируемое значение.

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

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

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

Было 66 функций, которые положительно повлияли на оценку модели, и я использовал эти 66 функций для создания своей окончательной модели. Окончательная модель имела оценку 0,604, что не является фантастикой (идеальной была бы оценка 1,0), но это лучшее, что я мог найти с моим набором данных.

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

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

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

Вывод

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

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