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

Именно тогда пришло время проявить многомерную линейную регрессию. Линейная регрессия — отличный метод машинного обучения, который моделирует множество независимых переменных (их могут быть сотни!) и предсказывает зависимую переменную. Большинство, если не все прогнозы не соответствуют действительности, потому что непрерывные значения редко попадают прямо в точку. Вот почему мы измеряем влияние остатков и то, как они влияют на модель.

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

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

Самой сложной частью построения модели было решить, как преобразовать функции. Преобразование может включать нормализацию распределения (логарифмическое, квадратный корень и т. д.) и масштабирование. Существует множество вариантов масштабирования, максимизации минимума, стандартизации среднего значения и отклонения и т. д. Именно здесь можно было бы потратить больше времени и усилий на создание модели. Я подозреваю, что есть более простой способ протестировать различные комбинации нормализации и стандартизации функций, python поставляется с множеством замечательных методов, таких как циклы, импорт библиотеки «Комбинации», чтобы помочь конкретно с этой проблемой, и, конечно, создание пользовательских функций. сделать за меня тяжелую работу.

В конце концов, я остался доволен своей моделью и результатом 0,72 балла R2 (из библиотеки оценок sklearn R2). Как я упоминал выше, следующим шагом будет тестирование большего количества комбинаций настроек параметров, чтобы поднять этот показатель до уровня 0,80, что является целью для этого набора данных.

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