ПОСТАНОВКА ЗАДАЧИ

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

КЛИЕНТ

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

О КОМПЛЕКТЕ ДАННЫХ

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

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

  1. Очистка данных, анализ выбросов и исследовательский анализ данных
  2. Используйте тепловую карту и корреляцию, чтобы найти корреляцию между функциями.
  3. Проанализируйте все функции и выполните логарифмическое преобразование для искаженных функций.
  4. Визуализация данных
  5. Фиктивные категории и поиск наиболее важных функций
  6. Построение модели, включая Lasso и Ridge Regression
  7. Проверка модели с использованием множества хороших валидаторов
  8. Заключение путем публикации исследования, выводов и результатов

«Люди, которые много работают, и люди, которые работают с умом, имеют разные показатели успеха».Джейкоб Морган

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

Как обычно, мы импортируем все наши основные библиотеки, scipy и множество элементов модели из scikit Learn. Давайте загрузим набор Train and Test/Holdout во фрейм данных Pandas. Здесь главное не трогать набор Test/Holdout до последнего и работать только с набором Train. Исследование начинается с просмотра нескольких верхних столбцов с помощью функции head, которая возвращает несколько верхних строк. Мы также изучаем типы данных и форму набора данных, у нас есть много столбцов/атрибутов, с которыми нужно иметь дело. Также анализируем статистику атрибутов, таких как среднее значение, стандартное отклонение, минимум, максимум и диапазоны квартилей для числовых данных и уникальные, верхние, частоты для категориальных данных дают нам общую картину атрибутов и того, какие значения они несут.

ОТСУТСТВУЮЩИЕ ДАННЫЕ

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

Вставьте «Нет» для отсутствующих значений для полей «PoolQC», «MiscFeature», «Alley», «Fence» и «FireplaceQu», поскольку они вводятся как NA, что означает, что его нет.

Для LotFrontage площадь, связанная с домом, почти аналогична по сравнению с соседством, и поэтому мы заполняем медиану для отсутствующих значений.

Заполнение 0 для Masonary Veener Area, потому что его NA и тип как None означает отсутствие для этих домов

Поскольку функциональность по умолчанию — Typical согласно метаданным, мы можем заменить отсутствующие значения на Typ.

Двойная проверка на отсутствующие значения. Ну, похоже, мы чисты!!

АНАЛИЗ ВЫБРОСОВ

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

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

Давайте выберем несколько интересующих нас функций и применим их в ParGrid, чтобы посмотреть, что происходит! Итак, SalesPrice тесно связана с OverallQual, GarageCars, FullBath, SalePrice, хотя есть некоторые различия. в космосе для гаражных автомобилей, так как цена продажи снижается после 3 гаражей, это интересно!

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

НАША ЦЕЛЬ: ПРОДАЖА

Наша Зависимая целевая переменная Цена продажи представлена ​​в виде гистограммы, и она не следует нормальному распределению, а имеет положительную асимметрию, и кривая показывает, что большая часть Цены продажи находится в диапазоне от 150 000 до 200 000 долларов США.

Давайте рассмотрим нашу искаженную цель и нормализуем ее с помощью преобразования журнала numpy!

Теперь мы исправили проблему асимметрии, и переменная Target нормально распределяется после преобразования Log!

КОРРЕЛЯЦИЯ И ТЕПЛОВАЯ КАРТА

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

РАЗРАБОТКА ОСОБЕННОСТЕЙ

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

Получение фиктивных значений для категориальных переменных

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

Существует другой способ, известный как One hot encoder, который следует аналогичному шаблону преобразования категории в двоичный код.

Формирование массивов X и y

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

Создание поезда, подтверждающего разделение поезда

Ну, что это? Вы можете задаться вопросом, является ли это сплитом Train/Test. Нет, мы разделяем поезд на набор поезда и проверки, чтобы мы могли поиграть с проверкой, пока, наконец, не увидим тест. Интересно да?

Функция для возврата RMSE (среднеквадратичной ошибки) нашей перекрестной проверки K-кратности

Один из наших крутых предикторов — это функция, которая вычисляет RMSE (среднеквадратическую ошибку) для перекрестной проверки, чтобы мы предсказывали точно. Но как ? Ну, модель, которая может давать меньшую ошибку перекрестной проверки, является лучшей. Я прав?

ПЕРЕКРЕСТНАЯ ПРОВЕРКА

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

ПРОГНОЗНЫЕ МОДЕЛИ

БАЗОВАЯ МОДЕЛЬ: ГРАДИЕНТНЫЙ РЕГРЕССОР

Давайте начнем с Gradient Boosting Regressor в качестве нашей базовой модели. GB строит аддитивную модель поэтапно вперед; он позволяет оптимизировать произвольные дифференцируемые функции потерь. На каждом этапе дерево регрессии соответствует отрицательному градиенту заданной функции потерь. Наш GBR хорошо подходит для базовой модели. Давайте посмотрим, кто из нижеперечисленных участников сможет превзойти базовый результат GBR.

РИДЖ С РЕЗЮМЕ

Ридж-регрессия со встроенной перекрестной проверкой. По умолчанию он выполняет обобщенную перекрестную проверку, которая представляет собой форму эффективной перекрестной проверки с исключением одного.

КЕРНЕЛ РИДЖ

Регрессия гребня ядра (KRR) объединяет регрессию гребня (линейный метод наименьших квадратов с регуляризацией по норме l2) с приемом ядра. Таким образом, он изучает линейную функцию в пространстве, индуцированную соответствующим ядром и данными. Для нелинейных ядер это соответствует нелинейной функции в исходном пространстве.

ЛАССО С РЕЗЮМЕ

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

ЭЛАСТИЧНАЯ СЕТЬ С CV

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

ТРУБОПРОВОД

Конвейер с GridSearchCV

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

Цель конвейера состоит в том, чтобы собрать несколько шагов, которые могут быть проверены вместе при установке различных параметров. CV GridSearch — это исчерпывающий поиск по заданным значениям параметров для оценщика со встроенной перекрестной проверкой.

Мы сформулировали конвейер с помощью GBR (Gradient Boosting Regressor) и повторили Learning_rate, max_depth и min_samples_leaf дерева по поиску в сетке с CV, конечно.

ПРОВЕРКА МОДЕЛИ

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

R-КВАДРАТ

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

СРЕДНЕКВАДРАТИЧЕСКАЯ ОШИБКА

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

СРЕДНЯЯ АБСОЛЮТНАЯ ОШИБКА

Средняя абсолютная ошибка (MAE) — это мера разницы между двумя непрерывными переменными. Здесь X и y — массивы парных наблюдений, выражающих одно и то же явление. Примеры сравнения Y и X включают сравнение прогнозируемого с фактическим и одного метода измерения с альтернативным методом измерения.

ЛУЧШАЯ МОДЕЛЬ

Лучшей моделью здесь является регрессия LassoCV, которой удается получить минимальную ошибку перекрестной проверки и самый высокий R-квадрат, а также минимальную MSE и среднюю абсолютную ошибку. Он работает настолько хорошо, что превосходит даже Pipeline и GridSearch CV с функцией гиперпараметров. Но здесь следует отметить, что конвейерный и грид-поиск настолько хорош, что он работает лучше с GBR по сравнению с одним только GBR.

ДАЛЬШЕ

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

Дополнительную информацию и код можно найти в моем ядре Kaggle.

https://www.kaggle.com/manibhask/data-exploration-and-predictive-modeling