Привет и добро пожаловать обратно! Это будет мой последний выпуск с использованием популярного набора данных Kaggle Titanic. Будем надеяться, что мы сможем извлечь из этого максимальную пользу. В этом выпуске я решил использовать функции и предварительную обработку, которые я использовал в первом выпуске набора данных Titanic. Для освежения мой набор данных выглядит так:

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

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

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

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

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

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

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

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

Используя эти результаты, я решил удалить «Возраст» и «Сухость» из данных, исключив возможный шум, который они могут создавать. Я воссоздал свою модель с измененными данными и получил новые AOC проверки и показатель точности, немного более низкие, чем первые, но опять же не слишком беспокоящие.

Я сделал последний шаг с этим набором данных, убедившись, что тестовое подмножество было правильно предварительно обработано, а окончательный фрейм данных был отформатирован в соответствии с требованиями Kaggle Gods. Затем я сделал свое последнее представление и скрестил пальцы.

Оценка этого представления увеличилась почти на 6% по сравнению с нашим предыдущим представлением и более чем на 5% по сравнению с предыдущим лучшим представлением. 77% все еще немного ниже, чем хотелось бы, но все же разумно и, безусловно, свидетельствует о важности настройки гиперпараметров. Вероятно, мы могли бы повысить эту точность, протестировав различные алгоритмы машинного обучения (например, нейронные сети?) и настроив их с помощью гиперпараметров, но мы сохраним все это для будущих наборов данных. На данный момент могу сказать, что я доволен результатами, надеюсь, вы тоже. Как всегда, еще раз спасибо, храбрый читатель, и я надеюсь, что вы присоединитесь ко мне в следующий раз, когда я возьмусь за новый набор данных. Продолжайте повторять и счастливого кодирования.