Задача Data Science от Kaggle

Благодаря своей известной популярности и простому подходу задача Titanic, созданная Kaggle, стала отличным вводным практическим заданием для людей, заинтересованных в том, чтобы выйти во вселенную Data Science (DS).

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

Почти все знакомы с историей Титаника, самый современный корабль того времени, считающийся многими «непотопляемым», затонул 15 апреля 1912 года во время своего первого рейса, в результате которого погибло 1502 человека из 2224. пассажиры и экипаж.

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

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

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

Исследование данных

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

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

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

Числовые переменные

  • Средний возраст пассажиров примерно 30 лет.
  • Можно констатировать, что большая часть пассажиров на борту не выжила — около 60% смертности.
  • Также из данных видно, что большинство пассажиров находились в салонах 3-го класса — нижнего экономического класса.

Категориальные переменные

  • Каждое имя уникально (по одному для каждого человека в наборе данных)
  • Уникальных полов всего два (мужской и женский), и большинство пассажиров — мужчины — 64,76%.
  • Порт, в котором большинство людей садилось на борт, был Саутгемптон (S). Были доступны еще два порта: Шербур (C) и Квинстаун (Q).

Целевая переменная (выжившая) и важные функции

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

На последнем изображении переменная Pclass указывает на социально-экономический статус пассажира (пассажиров 1-го, 2-го и 3-го классов).

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

Давайте подытожим некоторые идеи, которые можно получить с помощью предыдущих изображений:

  • Помимо того, что большинство пассажиров составляют мужчины, количество выживших женщин значительно превышает количество выживших мужчин (70% против 20%, примерно), что соответствует историческому факту.
  • Социально-экономический статус пассажиров, указанный в переменной Pclass, предполагает, что у самых богатых пассажиров было больше шансов выжить.
  • Портом с самой высокой выживаемостью был Шербур (C), но неясно, был ли это просто случайный шанс или порт каким-то образом связан с социально-экономическим статусом (например, Шербур расположен в самом богатом районе).
  • Среди детей на борту (0–10 лет) количество выживших более чем в два раза превышало количество смертей.

Особенности Корреляция

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

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

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

Предварительная обработка данных

На этом этапе проекта цель состоит в том, чтобы обработать данные в соответствии с его потребностями, прежде чем мы сможем передать их в модель ML. С помощью pandas и библиотек scikit-learn можно довольно быстро выполнить следующие шаги:

  • Объедините наборы обучающих и тестовых данных, чтобы предварительно обработать все сразу.
  • Выбор функций, которые вы считаете важными, обработка пропущенных значений, выбросов и кодирование категориальных переменных в числа.
  • Восстановите наборы обучающих и тестовых данных, чтобы передать модель ML на следующем шаге.

Модель машинного обучения

Без сомнения, исследование и предварительная обработка данных являются наиболее трудоемкими этапами проекта DS.

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

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

Логистическая регрессия

Древо решений

Наивный байесовский классификатор

Логистическая регрессия

По сути, логистическая регрессия — это классификационная модель, которая использует нужные функции для прогнозирования бинарной целевой переменной (которая может принимать только два значения), например Истина/Ложь или Выжил/Не выдержал. .

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

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

Древо решений

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

Оценка точности обученной модели дерева решений показана ниже:

Наивный байесовский классификатор

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

Оценка точности обученной наивной байесовской модели была следующей:

Идти дальше

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

Кроме того, я надеюсь, что все хорошо объяснено, чтобы вы могли воспроизвести все самостоятельно, если хотите ;).