В этом блоге мы создаем рекомендательную модель с нуля для оценки размера экипажа для потенциальных покупателей судов, используя набор данных 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.
УДАЧНОГО ОБУЧЕНИЯ!
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —