Привет, добро пожаловать в нашу первую дневную серию Kaggle!!
В этой статье мы хотели бы поделиться ключевыми выводами во время работы над самым популярным конкурсом Kaggle Titanic — Machine Learning from Disaster.
Прежде чем мы продолжим, если вы хотите узнать больше об аналитике данных и науке о данных, не стесняйтесь подписаться на страницы Cultigo в социальных сетях. Мы делимся базовыми знаниями в области анализа данных и науки о данных, а в будущем появится гораздо больше контента.
Как мы начали работать над этим?
Кто здесь не знает о печально известном кораблекрушении «Титаника»?
Можем ли мы узнать, сколько людей выжило или нет в этой катастрофе, только взглянув на первоначальные данные о пассажирах?
такие как пол, класс пассажиров, возраст и т. д. Прежде чем мы сможем ответить на этот вопрос, лучше взглянуть на то, как произошло кораблекрушение Титаника.
- Титаник имеет три разных класса пассажиров: первый класс, второй класс и третий класс.
- Комнаты этих трех классов имеют разное расположение на корабле.
- Третий класс имеет более высокие причинно-следственные связи по сравнению с двумя другими.
Поскольку вода затапливает переборки и заставляет корабль тонуть и разделяться на две части, расположение пассажирских классов становится решающим фактором при определении того, какой из пассажиров выживет, а какой нет. Это означает, что мы можем создать гипотезу о том, что «пассажирский класс, который находится у переборок, имеет более высокий уровень смертности».
После исследования и чтения внешних ссылок за пределами источника данных, которые мы получили от Kaggle. Без какого-либо кода и анализа данных мы знаем, что классы пассажиров станут критически важной функцией для нашей модели машинного обучения.
Первый вывод: не начинайте кодировать, начните спрашивать и исследовать, чтобы найти ответ за пределами ваших данных, чтобы создать гипотезу.
Можем ли мы подтвердить нашу гипотезу, используя данные?
Что мы делаем в этом деле Титаника, так это пытаемся обработать недостающие данные. По сути, есть два основных способа обработки отсутствующих данных:
- Скиньте недостающие данные
- Используйте среднее значение (если данные имеют числовое значение)
Вы можете выбрать первый способ, если у вас много данных, и вы не боитесь потерять часть из них. Но в реальных случаях данные важны и ценны, поэтому вам нужно разумно выбирать, как обращаться с отсутствующими данными.
Вот что мы сделали при предварительной обработке задачи «Титаник»:
- Отбросьте несколько столбцов: «Каюта», «Имя» и «Билет».
- Удалить строки NaN
- Заполните пропущенное значение средним значением
Затем вы можете использовать две функции ниже, чтобы проверить, хорошо ли вы выполнили процесс предварительной обработки.
df.describe()
df.info()
Очень простой контрольный список:
- Вы должны убедиться, что нет нулевых значений
- Количество данных для каждого столбца равно
Другая важная вещь, которую вы должны проверить после того, как мы закончим обработку отсутствующих данных, — это проверить, есть ли у вас несбалансированные данные в вашем наборе данных. Почему мы хотим обрабатывать несбалансированные данные? очень простой ответ: мы не хотим, чтобы наше машинное обучение имело смещение к значению большинства в наших данных, поэтому оно даст нам «правильную» точность.
После предварительной обработки мы займемся визуализацией данных. Но в этом случае, поскольку мы уже сначала исследовали «Титаник» и нашли очень хорошую инфографику выше, мы визуализируем только матрицу корреляции (статистический метод, показывающий, как связаны две переменные) между каждым столбцом данных.
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, в котором каждый может принять участие и извлечь из него уроки. Но иногда мы забываем о процессе обучения и создаем интуицию на построении. Потому что мы всегда стремимся создавать модели с высокой точностью и низким уровнем ошибок. Вот три вывода, которые я могу извлечь из этого:
- Не начинайте кодировать, начните спрашивать и исследовать, чтобы найти ответ за пределами ваших данных, чтобы создать гипотезу.
- Подготовка данных — это самое важное, знайте, какие функции мы хотим включить в наш процесс обучения машинному обучению.
- Начните с самой простой модели и сделайте ее идеально. После этого вы можете масштабировать свою модель и внедрять более сложные алгоритмы. Даже такой простой шаг, как нормализация функции, очень важен.
Не стесняйтесь поделиться своим! и если вам нравятся эти темы, не забудьте заглянуть на страницы Cultigo в социальных сетях.