Задача 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.
Древо решений
Дерево решений можно понимать как структуру, подобную блок-схеме, которая использует «тесты» на прогностических выборках, чтобы решить, в каком направлении потока должна следовать выходная выборка на основе значений ее характеристик.
Оценка точности обученной модели дерева решений показана ниже:
Наивный байесовский классификатор
Наивный байесовский классификатор использует теорему Байеса, условные вероятности и предположения о независимости между переменными для определения таблицы вероятностей на основе частоты признаков, представленных в наборе данных. Эти рассчитанные вероятности затем используются для прогнозирования (классификации) входных выборок.
Оценка точности обученной наивной байесовской модели была следующей:
Идти дальше
Естественно, можно добиться лучших результатов, применяя более продвинутые модели машинного обучения, проектирование признаков и некоторые другие методы предварительной обработки. Тем не менее, в качестве первого проекта этот набор данных пропорционален возможности изучения и применения некоторых центральных концепций в области науки о данных и помогает развивать навыки, которые будут использоваться в любом будущем проекте.
Кроме того, я надеюсь, что все хорошо объяснено, чтобы вы могли воспроизвести все самостоятельно, если хотите ;).