Введение

Огромный набор данных включает в себя данные о 891 пассажире, которые находились на борту, когда корабль отплыл 15 апреля 1912 года. У некоторых пассажиров на корабле было больше шансов выжить при крушении, чем у других, как говорится в пояснении на сайте Kaggle. Женщины, дети и представители высшего класса имели приоритет, когда не хватало спасательных шлюпок на всех. В этой статье наша задача состоит в том, чтобы разработать модель для прогнозирования того, кто из этих 891 пассажира выживет, на основе следующих полей. Я изучу множество алгоритмов, прочитав каждый из нашего чистого тренировочного набора, настроив гиперпараметры с помощью GridSearchCV и выбрав наиболее подходящую модель для каждого алгоритма. Лучшая модель из каждого алгоритма будет использоваться для сравнения всех остальных моделей в проверочном наборе. Затем из них будет выбрана лучшая модель и протестирована на тестовом наборе.

Обзор процесса

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

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

Очистка данных

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

Во-первых, импортируйте пакеты и прочитайте набор данных, используя библиотеку Panda.

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

Теперь мы объединим столбцы SibSp и Parch в одну функцию, очистив ее для модели, а затем удалим ненужные переменные.

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

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

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

Алгоритмы

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

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

Теперь мы проверим модели логистической регрессии. Чтобы определить идеальные настройки гиперпараметров для логистической регрессии, которые создают наилучшую модель из наших данных, мы будем использовать инструмент CV поиска по сетке, чтобы выполнить поиск по сетке в рамках перекрестной проверки K-кратности. Во-первых, мы импортируем пакет и будем использовать LR.

Эти результаты показывают, что производительность снижается из-за недообучения, когда C низкий, а регуляризация высокая. Производительность также падает при высоком C, что указывает на плохую регуляризацию. Однако в настоящее время это так, поскольку модель слишком точно подходит к обучающим данным. В результате мы можем наблюдать, что C, равный 1, дает эти данные с наилучшей точностью 79,8%.

Машина опорных векторов

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

Из этих результатов следует отметить, что наш гиперпараметр C практически не влияет на точность линейного ядра. Кроме того, линейное ядро ​​значительно превосходит ядро ​​RBF. Это означает, что наши данные действительно могут быть разделены линейно. Теперь у нас есть три значения гиперпараметров с одинаковой точностью 79,6%.

Многослойные персептроны

Теперь мы будем тестировать модели MLP. Чтобы определить идеальные настройки гиперпараметров для MLP, которые создают лучшую модель на основе наших данных. Чтобы правильно настроить многослойные персептроны, необходимо настроить многие гиперпараметры. Сказав это, мы выберем три гиперпараметра, на которых сосредоточимся. Активация — это начальный шаг. Размеры скрытых слоев идут вторыми, а скорость обучения — последними.

Приведенное выше предупреждение является ConvergenceWarning, а не ошибкой. Есть три скрытых параметра размера слоя, три настройки активации и три настройки скорости обучения. Таким образом, всего в GridSearchCV помещается 27 различных моделей, и каждый раз эта модель выбрасывается. Другими словами, мы видим это 27 раз. Анализ этих результатов также показывает, что функция активации «relu», 50 узлов скрытого слоя и скорость обучения с обратным масштабированием дают наилучшие результаты. Мы видим, что это дает точность 80,7%, что немного выше, чем то, что мы наблюдали как с логистической регрессией, так и с SVM.

Случайный лес

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

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

Повышение

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

Текущая точность, обеспечиваемая этим лучшим набором гиперпараметров, составляет 84,1%. По сравнению с другими алгоритмами, которые мы пробовали, этот лучше. Из-за этого это не обязательно лучшая модель. Это просто означает, что использование перекрестной проверки является лучшим. Настоящий тест будет, когда мы оценим его с помощью тестового набора.

Зачем нужно изучать так много разных алгоритмов для одной задачи? Действительно ли нам нужны пять разных алгоритмов? Можем ли мы просто выбрать наиболее эффективный алгоритм и применить его ко всем задачам? Каждая проблема ограничена определенными факторами, такими как нехватка данных, предельные значения производительности или ограничения вычислительной мощности. Чтобы выбрать лучший алгоритм для задачи, мы должны оценить преимущества каждого подхода. В это влезет не каждый. Не существует единого алгоритма, который решает все проблемы. Если бы это было так, это было бы замечательно, потому что нам было бы так просто сказать: «Мы будем использовать LR или Random Forest для каждой задачи, и это будет лучшая модель».

Концептуальные сравнения алгоритмов

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

Окончательный выбор модели

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

Эта модель случайного леса с 50 оценщиками и максимальным шагом четыре является результатом нашей окончательной редукции. Сравнив эту модель с данными, которые никогда раньше не встречались, мы тщательно протестировали ее. Мы также знаем, что он дал значения точности 81,0% на тестовом наборе, 82,0% на наборе проверки и 82,8% на перекрестной проверке. В результате теперь мы можем точно предсказать, как модель будет работать со свежими данными. И мы можем с уверенностью предположить, что эта модель является лучшей моделью для предсказания того, выживут ли пассажиры Титаника.

Где коды?

Полный код можно найти на Github здесь. Я использовал Google Colaboratory, но не стесняйтесь использовать то, что вам удобно. Пока вы там, звезда была бы очень кстати.

Дополнительная литература/полезный ресурс



Перед тем, как ты уйдешь

Соответствующий проект на Github можно найти здесь.



Свяжитесь со мной

Пожалуйста, не стесняйтесь. Давайте общаться

Спасибо за чтение, удачного обучения и удачного кодирования! Увидимся в следующий раз