Следуя той же теме из моего предыдущего поста, я исследовал и пытался понять сценарий катастрофы Титаника еще в 1912 году. Используя ряд характеристик, таких как тип билетов, возраст, семья и так далее; Я попытался предсказать выживаемость этого события.

Вступление

(RMS) Титаник, роскошный пароход, затонул рано утром 15 апреля 1912 года у побережья Ньюфаундленда в Северной Атлантике после столкновения с айсбергом во время своего первого рейса. Из 2240 пассажиров и членов экипажа, находившихся на борту, более 1500 погибли в результате катастрофы. «Титаник» стал источником создания бесчисленных книг, статей и фильмов (включая фильм 1997 года «Титаник» с Кейт Уинслет и Леонардо ДиКаприо в главных ролях), а история корабля вошла в общественное сознание как поучительная история об опасностях человека. высокомерие. А теперь я попытаюсь предсказать выживаемость после этой катастрофы.

Определение проблемы

(RMS) Титаник был британским пассажирским лайнером компании white star line, который затонул в северной части Атлантического океана 15 апреля 1912 года после столкновения с айсбергом во время своего первого рейса из Саутгемптон в Нью-Йорк. Из примерно 2224 пассажиров и членов экипажа на борту погибло более 1500, что сделало потопление на тот момент одним из самых смертоносных среди тонущих кораблей и самым смертоносным потоплением суперлайнера или круизного лайнера в мирное время на сегодняшний день. С тех пор катастрофа, привлекающая большое внимание общественности, стала материалом для многих художественных произведений и основой жанра фильмов-катастроф.

Наша главная цель - предсказать, выживет ли какой-либо случайный пассажир на Титанике после затопления или нет.

Анализ данных

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

Данный набор данных содержит 891 строку и 12 столбцов. Описание и тип каждого столбца приведены ниже.

Набор данных содержит 891 пример и 11 функций + целевая переменная (Survived), 2 функции являются числами с плавающей запятой, 5 - целыми числами, 5 - объектами.

Как мы видим, набор данных содержит 891 запись, что означает, что на борту находился 891 пассажир, но если вы сравните общее количество фактических пассажиров на борту, было указано, что около 2224 пассажиров, что означает, что наш набор данных не является полным, это всего лишь выборка из фактических данных. .

Выше мы видим, что 38% из набора данных пережили Титаник.

Мы также видим, что возраст пассажиров колеблется от 0,4 до 80. Кроме того, мы уже можем обнаружить некоторые функции, которые содержат пропущенные значения, например, функция «Возраст» может их обработать. Кроме того, мы видим, что функции имеют очень разные диапазоны, которые нам нужно будет преобразовать примерно в один и тот же масштаб. Мы также можем выделить еще несколько функций, которые содержат пропущенные значения (NaN = не число), с которыми нам нужно иметь дело.

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

Он также содержит некоторые пропущенные значения. Давайте посмотрим на эти недостающие значения.

У начального объекта всего 2 пропущенных значения, которые можно легко заполнить. Будет намного сложнее разобраться с функцией «Возраст», у которой 177 пропущенных значений. Функция «Кабина» требует дальнейшего изучения, но похоже, что мы могли бы удалить ее из набора данных, поскольку 77% ее отсутствуют.

Исследовательский анализ данных

  • Корреляция между переменными. Мы видим, что между переменными нет большой корреляции. Только столбец «Пол» имеет минимальную отрицательную корреляцию с целевой переменной.

  • Визуализация переменных:

Из приведенной выше гистограммы мы можем сделать вывод, что вероятность выживания мужчин находится в возрасте от 20 до 35 лет, в то время как в случае женщин вероятность составляет от 15 до 40 лет. Соотношение между выжившими мужчинами и женщинами больше у женщин.

Из приведенного выше точечного графика мы можем сказать, что женщины, вышедшие из S и Q, имеют более высокие шансы на выживание по сравнению с женщинами, вышедшими из C. кто встал из Q и S.

Также очевидно, что мужчины или женщины, которые присутствуют в Pclass 1 и 2, имеют самую высокую вероятность выживания.

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

Здесь мы видим, что шансы на выживание уменьшаются по мере увеличения количества братьев и сестер / супругов на борту «Титаника».

Здесь мы видим, что у человека с 3 родителями / детьми самые высокие шансы на выживание.

Трубопровод предварительной обработки

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

  • Неполные данные могут возникать по многим причинам. Соответствующие данные не могут быть сохранены из-за недоразумений или из-за дефектов и неисправностей прибора.
  • Шумные данные могут возникать по ряду причин (из-за неправильных значений характеристик). Инструменты, используемые для сбора данных, могут быть неисправны. Ввод данных может содержать ошибки, связанные с человеком или прибором. Также могут возникнуть ошибки передачи данных.

Предварительная обработка данных состоит из множества этапов.

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

Обработка нулевых значений

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

В нашем наборе данных есть два столбца, которые содержат нулевые значения, а именно Age и Cabin. Мы можем обрабатывать столбец Age, но для столбца Cabin количество нулевых значений больше 70%, поэтому лучше отбросить этот столбец.

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

Преобразование меток в числовые

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

В нашем наборе данных есть такие столбцы, как Name, Sex, Ticket, Embarked. Эти столбцы должны обрабатываться одним горячим кодированием или кодировщиком меток.

Столбцы Name и Ticket не имеют отношения к целевой переменной. Итак, мы отбросим эти столбцы. Для столбцов Sex и Embarked мы используем кодировщик меток для преобразования в числовой столбец.

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

Кодировку меток в python можно импортировать из библиотеки Sklearn. Sklearn предоставляет очень эффективный инструмент для кодирования. Кодировщики меток кодируют метки со значением от 0 до n_classes-1. Возьмем пример из нашего набора данных.

Построение модели машинного обучения

Для построения моделей машинного обучения в модуле Sklearn присутствует несколько моделей.

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

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

Что такое train_test_split - это функция при выборе модели sklearn для разделения массивов данных на два подмножества для данных обучения и данных тестирования. Благодаря этой функции вам не нужно вручную разделять набор данных. По умолчанию sklearn train_test_split будет создавать случайные разделы для двух подмножеств. Однако вы также можете указать случайное состояние для операции. Он дает четыре выхода x_train, x_test, y_train и y_test. X_train и x_test содержат переменные-предикторы обучения и тестирования, а y_train и y_test содержат целевые переменные обучения и тестирования.

После выполнения train_test_split мы должны выбрать модели для передачи обучающей переменной.

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

Я выбрал 5 моделей:

  • Логистическая регрессия из sklearn.linear_model: Логистическая регрессия - это алгоритм классификации с контролируемым обучением, используемый для прогнозирования вероятности целевой переменной. Целевая или зависимая переменная имеет двоичный характер, что означает, что будет только два возможных класса: 1 (означает успех / да) или 0 (означает сбой / нет). Математически модель логистической регрессии предсказывает P (Y = 1) как функцию от X. Это один из простейших алгоритмов машинного обучения, который можно использовать для различных задач классификации, таких как обнаружение спама, прогнозирование диабета, обнаружение рака и т. Д.

  • RandomForestClassifier из sklearn.ensemble: Мы знаем, что лес состоит из деревьев, и чем больше деревьев, тем более устойчивый лес. Точно так же алгоритм случайного леса создает деревья решений на выборках данных, затем получает прогноз от каждой из них и, наконец, выбирает лучшее решение посредством голосования. Это метод ансамбля, который лучше, чем одиночное дерево решений, потому что он уменьшает чрезмерную подгонку за счет усреднения результата.

  • KNeighborsClassifiers из sklearn.neighbors: Алгоритм K-ближайших соседей (KNN) использует «сходство признаков» для прогнозирования значений новых точек данных, что дополнительно означает, что новой точке данных будет присвоено значение в зависимости от того, как точно соответствует точкам в обучающей выборке.

  • Классификатор опорных векторов: « Машина опорных векторов» - это управляемый алгоритм машинного обучения, который можно использовать как для классификации, так и для задач регрессии. Однако чаще всего он используется в задачах классификации. В алгоритме SVM мы рисуем каждый элемент данных как точку в n-мерном пространстве (где n - количество имеющихся у вас функций), причем значение каждой функции является значением конкретной координаты. Затем мы выполняем классификацию, находя гиперплоскость, которая очень хорошо различает два класса.

  • GaussianNB от sklearn.naive_bayes: Наивные алгоритмы Байеса - это метод классификации, основанный на применении теоремы Байеса с сильным предположением, что все предикторы независимы друг от друга. Проще говоря, предполагается, что наличие функции в классе не зависит от наличия какой-либо другой функции в том же классе. Это простейший наивный байесовский классификатор, предполагающий, что данные каждой метки взяты из простого гауссовского распределения.

Вывод по моделям

Мы получили нашу лучшую модель, то есть логистическую регрессию, с оценкой точности 86,7%. Здесь наша модель предсказывает 162 истинно положительных случая из 176 положительных и 94 истинно отрицательных случая из 119.

Он предсказывает 14 ложноположительных случаев из 176 положительных и 25 ложноотрицательных случаев из 119. Это дает оценку f1 82,8%.

Понимание того, что делают точный отзыв, оценка f1 и точность

  • Оценка F1: это гармоническое среднее значение точности и полноты, которое дает лучшую меру неправильно классифицированных случаев, чем матрица точности.

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

  • Напомним: это мера правильно идентифицированных положительных случаев из всех реальных положительных случаев. Это важно, когда стоимость ложных негативов высока.

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

Матрица неточностей

Матрица неточностей - это таблица, которая часто используется для описания эффективности модели классификации (или «классификатора») на наборе тестовых данных, для которых известны истинные значения.

ПРИМЕЧАНИЕ.

TN / True Negative: случаи были отрицательными, а прогноз был отрицательным.

TP / Истинно положительный: случаи были положительными и предсказывались положительными.

FN / False Negative: случаи были положительными, но прогноз отрицательный.

TN / True Negative: случаи были отрицательными, но предсказывались положительными.

Настройка гиперпараметров

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

Мы будем использовать GridSearchCV для настройки гиперпараметров.

GridSearchCV

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

Кривая ROC: AUC - Кривая ROC - это измерение производительности для задач классификации при различных настройках пороговых значений. ROC - это кривая вероятности, а AUC - степень или мера разделимости. Он говорит о том, насколько модель способна различать классы. Чем выше AUC, тем лучше модель предсказывает 0 как 0 и 1 как 1. По аналогии, чем выше AUC, тем лучше модель позволяет различать пациентов с заболеванием и пациентов без заболевания.

Кривая ROC построена с отношением TPR к FPR, где TPR находится на оси y, а FPR - на оси x.

Замечания

Мы начали с исследования данных, где мы нащупали набор данных, проверили недостающие данные и узнали, какие функции важны. Во время этого процесса мы использовали seaborn и matplotlib для визуализации. На этапе предварительной обработки данных мы вычислили недостающие значения, преобразовали функции в числовые, сгруппировали значения по категориям и создали несколько новых функций. После этого мы начали обучать 5 разных моделей машинного обучения, выбрали одну из них (логистическая регрессия). Затем мы обсудили, как работает логистическая регрессия, рассмотрели важность, которую она придает различным функциям, и настроили ее производительность путем оптимизации значений гиперпараметров. Наконец, мы посмотрели на матрицу неточностей и вычислили точность модели, отзывчивость и f-оценку. И в конце мы строим график рабочих характеристик приемника (ROC) наших моделей и вычисляем показатель AUC.

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

Другие