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

Аренда квартиры с одной спальней в Вестминстере стоит в среднем 2164 фунтов стерлингов в месяц. Между тем, в Харроу он стоит вдвое меньше (1026 фунтов стерлингов). Очевидно, что между районами существуют огромные различия.

Сможет ли модель предсказать стоимость аренды определенного района на основе его демографических и территориальных характеристик?

Данные

Я предполагал использовать данные, подобные набору данных Boston House Prices, но когда я не смог найти что-то подходящее, я создал свой собственный, собрав отдельные представляющие интерес переменные, чтобы объяснить стоимость аренды. Они поступили из разных источников с использованием самых последних доступных данных:

Цены на аренду: ONS, Статистика аренды в Лондоне, 2020 г.*

Данные о населении: Администрация Большого Лондона, оценка численности населения, 2018 г.

Зарплата: ONS, Ежегодный обзор рабочего времени и доходов, 2019 г.

Цены на жилье: Земельный кадастр Великобритании, среднее значение за 2017 год.

Данные о преступности: Meet Police, 2017 г.

Housing Tenure:ONS, Housing Tenure of Households, 2018 г.

GCSEs: Министерство образования, средний балл GCSE, 2019 г.

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

Полученный набор данных учитывал среднюю стоимость аренды; средняя заработная плата населения; средняя успеваемость по ЕГЭ; количество преступлений на 1000 человек населения; плотность населения; плотность жилья; процент сдаваемой в аренду недвижимости, являющейся социальным жильем; цены на жилье и средний рост цен на жилье за ​​1 и 5 лет.

Моделирование

Я использовал Практическое машинное обучение с помощью Scikit-learn и TensorFlow от Орельена Жерона, чтобы провести меня через этот процесс машинного обучения.

Этот первый шаг включал изучение данных — понимание того, какие переменные коррелируют и как данные могут нуждаться в дальнейшей подготовке. Из рисунка 2 видно, что переменные имеют совершенно разные масштабы. В то время как SocialHousing колеблется от 0 до 1 в процентах, HousePrice2017 колеблется в пределах сотен тысяч фунтов стерлингов. Переменные с большим масштабом могут казаться более разнообразными, чем переменные с меньшим масштабом, поэтому я масштабировал признаки.

С помощью научного набора я обучил 3 модели — регрессоры Linear, Decision Tree и Random Forest — используя 80% данных, и оценил их производительность с помощью среднеквадратичной ошибки. Я обнаружил, что линейная регрессия была лучшим предсказателем, и использовал GridSearchCV, чтобы определить, какие параметры были оптимальными — это оказались настройки по умолчанию.

Наконец, я использовал эту оптимальную модель на тестовом наборе и оценил производительность:

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

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

Бросаться

Второй частью проекта было краткое отображение этих результатов в приложении Dash и его развертывание.

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

Для развертывания приложения я использовал Heroku и GitHub, что оказалось самым простым способом. Однако, учитывая мои ограниченные знания разработчика, это заняло больше времени, чем я ожидал. Выяснение того, что такое «procfile», и внесение изменений в код приложения, чтобы сделать его совместимым для развертывания на сервере, были некоторыми проблемами, с которыми я столкнулся.

После некоторой отладки у меня наконец-то появилось приложение Dash для изображения модели!

Приложение Dash можно найти здесь: https://londonrentalmarket-ml.herokuapp.com/

Код задокументирован на Github: https://github.com/susiesmith15/LondonRentalMarket