Привет, добро пожаловать в нашу первую дневную серию Kaggle!!

В этой статье мы хотели бы поделиться ключевыми выводами во время работы над самым популярным конкурсом Kaggle Titanic — Machine Learning from Disaster.

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

Как мы начали работать над этим?

Кто здесь не знает о печально известном кораблекрушении «Титаника»?

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

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

  1. Титаник имеет три разных класса пассажиров: первый класс, второй класс и третий класс.
  2. Комнаты этих трех классов имеют разное расположение на корабле.
  3. Третий класс имеет более высокие причинно-следственные связи по сравнению с двумя другими.

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

После исследования и чтения внешних ссылок за пределами источника данных, которые мы получили от Kaggle. Без какого-либо кода и анализа данных мы знаем, что классы пассажиров станут критически важной функцией для нашей модели машинного обучения.

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

Можем ли мы подтвердить нашу гипотезу, используя данные?

Что мы делаем в этом деле Титаника, так это пытаемся обработать недостающие данные. По сути, есть два основных способа обработки отсутствующих данных:

  1. Скиньте недостающие данные
  2. Используйте среднее значение (если данные имеют числовое значение)

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

Вот что мы сделали при предварительной обработке задачи «Титаник»:

  1. Отбросьте несколько столбцов: «Каюта», «Имя» и «Билет».
  2. Удалить строки NaN
  3. Заполните пропущенное значение средним значением

Затем вы можете использовать две функции ниже, чтобы проверить, хорошо ли вы выполнили процесс предварительной обработки.

df.describe()
df.info()

Очень простой контрольный список:

  1. Вы должны убедиться, что нет нулевых значений
  2. Количество данных для каждого столбца равно

Другая важная вещь, которую вы должны проверить после того, как мы закончим обработку отсутствующих данных, — это проверить, есть ли у вас несбалансированные данные в вашем наборе данных. Почему мы хотим обрабатывать несбалансированные данные? очень простой ответ: мы не хотим, чтобы наше машинное обучение имело смещение к значению большинства в наших данных, поэтому оно даст нам «правильную» точность.

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

correlation_matrix = df.corr()
sns.heatmap(correlation_matrix, annot=True)
plt.show()

Что мы можем узнать, так это то, что некоторые из них имеют высокую корреляцию между собой, но самое главное, что «P-класс» и «Выживший» имеют корреляцию, которая согласуется с нашей гипотезой «пассажирский класс, который находится рядом с переборками, имеет более высокий уровень смертности». » или «пассажирский класс, связанный с более высоким уровнем смертности».

Второй вывод: используйте исследовательский анализ данных для проверки своей гипотезы, а не только для создания крутого и красивого графика.

Предсказание модели

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

Но вопрос в том

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

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

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

Когда мы работали над этой задачей, мы попробовали несколько алгоритмов. Начал с SVM, дерева решений, SDG, ANN и CNN (техническая статья об этом скоро).

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

Например, точность SGD-модели с нормирующими функциями (76%) находится на одном уровне с моделями CNN и ANN (78%), но, с другой стороны, мы получаем только 42% точности, если мы обучаем модель SGD без нормализации. Этот результат доказывает, что такой простой процесс, как нормализация, может оказать большее влияние на производительность модели.

Третий вывод: начните с самой простой модели и сделайте ее идеально. После этого вы можете масштабировать свою модель и внедрять более сложные алгоритмы.

Выводы

«Титаник — машинное обучение на основе катастроф» — это простой вызов на Kaggle, в котором каждый может принять участие и извлечь из него уроки. Но иногда мы забываем о процессе обучения и создаем интуицию на построении. Потому что мы всегда стремимся создавать модели с высокой точностью и низким уровнем ошибок. Вот три вывода, которые я могу извлечь из этого:

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

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