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

В этом блоге мы подробно рассмотрим теоретические и практические концепции машинного обучения и науки о данных, чтобы помочь вам полностью понять следующие моменты:

Почему эта модель (линейная/нелинейная)?

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

Зачем и как проводить регрессионный анализ? — Значение остаточного анализа, фактическая и прогнозная интерпретация графика

Зачем и как проводить тест на соответствие для оценки модели? — R_Squared и скорректированный R_Squared

Как оптимизировать модель для более точных оценок? — Поиск по сетке

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

Этот блог является первой частью серии и будет посвящен EDA.

Итак, давайте погрузимся в это путешествие от Почему к Как!!

Исследовательский анализ данных

EDA — это понимание данных, таких как базовая статистика (среднее значение, стандартное отклонение, диапазон и т. д.), ее распределение, типы данных, определение пропущенных значений или NaN, понимание связи между независимыми переменными (IV) и зависимыми переменными (DV), и т. д.

Чем лучше мы понимаем данные, тем мощнее будет наша модель.

1. Проверьте столбцы и их тип данных, проверьте пустые значения

Наблюдения с изображений сверху —

Первое изображение отображает информацию о столбцах, присутствующих в наборе данных. Мы видим, что набор данных не содержит значений Null. Это также дает нам информацию о data_types, которая подчеркивает, что Ship_name и Cruise_line являются категориальными столбцами.

Второе изображение предоставляет информацию об уровнях (категории) в Cruise_line, а также количество точек данных в этих категориях в порядке убывания. Cruise_line имеет 20 уровней, и мы видим, что 70% данных распределяются по 5 верхним уровням этих столбцов. Помня о том, что этот столбец может иметь значение для бизнеса, эти уровни могут быть включены во время подбора модели, а затем могут быть идентифицированы во время оптимизации модели, независимо от того, являются ли они статистически значимыми или нет.

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

2. Проверка статистических характеристик данных

Наблюдения за основными характеристиками —

Количество каждой переменной равно 158, что указывает на то, что набор данных не содержит пропущенных значений.

Диапазон (минимальное и максимальное значение) переменных различается, это означает, что нам нужно стандартизировать или нормализовать данные перед их подачей в модель.

3. Сопоставьте данные на парных графиках, чтобы понять распределение и взаимосвязь

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

Наблюдения на парном графике —

Независимые переменные Тоннаж, пассажиры, длина и каюты сильно коррелируют с переменной отклика экипажа. Мы видим положительную корреляцию с Crew. Силу корреляции также можно проверить с помощью матрицы корреляции.

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

Наличие мультиколлинеарности может иметь смысл среди 4 независимых переменных Тоннаж, пассажиры, длина и каюты.

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

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

Коэффициент корреляции Пирсона (обозначается как r) – это показатель любой линейной связи между двумя переменными. Значение r находится в диапазоне от -1 до 1.

Когда,

  • r = 0, это означает, что между переменными нет линейной связи
  • r = 1 означает, что между переменными существует идеальная линейная зависимость.
  • r › 0 означает положительную корреляцию
  • r ‹ 0 означает положительную корреляцию
  • |р| › 0,5 означает сильную положительную корреляцию между переменными

Как мы видели в Pairplot, переменные имеют линейную связь, давайте проверим силу линейной связи с помощью матрицы корреляции.

4. Постройте матрицу корреляции Пирсона

Матрица корреляции – это таблица, в которой суммируется коэффициент корреляции Пирсона между всеми переменными в наборе данных.

Наблюдения из графика корреляционной матрицы:

Тоннаж, пассажиры, длина и каюты имеют r › 0,9 с экипажем, это указывает на очень сильную положительную корреляцию с переменной отклика (Экипаж).

Также можно увидеть сильную положительную корреляцию между этими переменными. Это называется мультиколлинеарностью, то есть наличием корреляции между несколькими переменными.

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

Давайте разберемся, почему это проблема, причина мультиколлинеарности и как это исправить.
Почему это проблема, заключается в концепции понимания интерпретации коэффициентов регрессии. Коэффициенты регрессии интерпретируются как среднее изменение зависимой переменной с изменением коэффициента регрессии на 1 единицу, при этом значения других коэффициентов устанавливаются равными 0.
Давайте разберемся с этим на примере. Простое уравнение линейной регрессии с двумя переменными будет:

y = αx1 + βx2 + c + e,

α иβ — коэффициенты x1 и x2, c — константа, а «e» — ошибка. Если β равно 0, то изменение α на 1 единицу равно среднему изменению y. Но если α и β коррелируют, то изменение β повлияет на α, причину которого мы не можем определить. значимость α. Но оценка «у» от этого не пострадает.
Как обнаружить мультиколлинеарность?
Есть несколько способов обнаружить мультиколлинеарность, но в этом посте мы обсудим самые популярные способы.
1. Путем визуального анализа данных с использованием парного графика.
2. Использование корреляционной матрицы

Эти 2 уже объяснены выше.
3. Использование коэффициента инфляции дисперсии (VIF)

Что такое VIF? Это метод, в котором каждая переменная регрессируется по отношению к остальным переменным, а оценка рассчитывается по приведенной ниже формуле.

Здесь R-квадрат — это коэффициент детерминации, значения которого лежат в диапазоне от 0 до 1. Это показатель оценки для регрессионной модели. Пока держите это в конверте, мы подробно расскажем об этом во 2-й части этой серии.
Как правило, если переменная имеет VIF более 5, то считается, что она сильно коллинеарна с другими переменными. Означает высокую мультиколлинеарность.

Как исправить мультиколлинеарность?
1.
Удалите переменные, имеющие VIF › = 5.
2. Линейно объедините 2 или более переменных.
3. Использование анализа основных компонентов ( PCA)
4. Техника регуляризации LASSO также может быть использована для устранения мультиколлинеарности.

Вопрос, который возникает в связи с мультиколлинеарностью —
Может ли удаление мультиколлинеарности улучшить предсказание модели? Ну, в целом мультиколлинеарность не влияет на предсказание, Так что он не требуется. Но в случае, когда у нас большое количество предикторов (> 10), исправление мультиколлинеарности может улучшить производительность и точность модели. Поскольку большое количество предикторов может увеличить сложность, что приведет к переоснащению, и модель не сможет хорошо обобщать тестовые данные. следовательно, в этом случае исправление мультиколлинеарности может быть полезным. Но всегда имейте в виду, при исправлении мультиколлинеарности мы удаляем переменные с высоким VIF, а это ведет к потере информации. Таким образом, мы можем потерять переменную, которая имеет значение для бизнеса, при оценке переменной отклика.

5. Выбор функции

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

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

Последние 4 метода потребуют понимания p-значения, t-значения, R-квадрата и Adj. R-Squared, поэтому мы рассмотрим эти методы и термины в следующем посте этой серии.
Теперь возвращаясь к первому методу (с использованием корреляционной матрицы), список выбранных объектов будет —
Selected_list = ['Тоннаж', 'пассажиры', 'длина', 'cabins', 'Cruise_line_Royal_Caribbean', 'Cruise_line_Carnival', 'Cruise_line_Princess', 'Cruise_line_Holland_American', 'Cruise_line_Costa', 'Cruise_line_Norwegian', 'Cruise_line_Celebrity' ]
Base_list = ['Тоннаж', 'пассажиры', 'длина', 'кабины', 'passenger_density', 'Cruise_line_Royal_Caribbean', 'Cruise_line_Carnival', 'Cruise_line_Princess', 'Cruise_line_Holland_American', 'Cruise_line_Costa', 'Cruise_line_Norwegian', 'Cruise_ line_Celebrity' ]
В выбранном список {'Тоннаж', 'пассажиры', 'длина', 'каюты'} выбраны, потому что они тесно связаны с Экипаж и 'Cruise_line_* ( Один предиктор Cruise_line с горячим кодированиемвыбирается с учетом влияния на бизнес. В следующем блоге мы увидим, как ведет себя модель с этими наборами функций, и попытаемся оптимизировать производительность модели.

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

Спасибо!

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

Также подписывайтесь на меня в LinkedIn и GitHub.

УДАЧНОГО ОБУЧЕНИЯ!

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —