392,04
Рейтинг
OTUS. Онлайн-образование
Цифровые навыки от ведущих экспертов

Как я регулярно улучшаю точность моделей обучения с 80% до 90+%

Блог компании OTUS. Онлайн-образованиеПрограммированиеBig DataМашинное обучение
Автор оригинала: Terence S

В преддверии старта базового курса по Machine Learning, подготовили для вас интересный перевод, а также предлагаем бесплатно посмотреть запись демо-урока по теме: "Как начать делать мир лучше с помощью NLP".


Введение

Если вы закончили хотя бы несколько собственных проектов по Data Science, вы, вероятно, уже поняли, точность в 80% — это не так уж плохо. Но для реального мира 80% уже не годятся. На деле, большинство компаний, в которых я работал, ожидают минимальную точность (или любую другую метрику, на которую они смотрят) не менее 90%.

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

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

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

1. Обработка пропущенных значений

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

Например, представьте, что у нас есть таблица, в которой есть значения возраста и физической подготовки, и представьте, что у восьмидесятилетнего человека отсутствует показатель физической подготовки. Если мы возьмем средний показатель физической подготовки в возрастном диапазоне от 15 до 80 лет, то человек в 80 лет получит более высокое значение, чем оно есть на самом деле.

Поэтому первый вопрос, который вы должны себе задать, это «почему данные отсутствуют»?

Дальше мы рассмотрим другие методы обработки пропущенных значений, помимо импутации среднего/медианного значения:

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

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

  • Удаление строки: наконец, вы можете удалить строку. В обычных случаях это неприемлемо, но вы можете так сделать, если у вас есть огромное количество данных.

2. Инженерия признаков

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

  • Преобразование переменной типа DateTime и извлечение из нее только дня недели, месяца, года и т.д.

  • Создание групп или корзин для переменных (например, для переменной с высотой можно сделать группы 100–149см, 150–199см, 200–249см и т.д.)

  • Объединение нескольких объектов и/или значений для создания нового объекта. Например, одна из самых точных моделей для задачи Титаника создала новую переменную под названием «Iswomenor_child», которая была в значении True, если человек был женского пола или ребенком, и False в противном случае.

3. Отбор признаков

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

Есть два основных метода, которые вы можете использовать для отбора признаков:

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

  • Уменьшение размерности: один из самых распространенных методов уменьшения размерности – это метод главных компонент (PCA). Он принимает большое количество признаков и использует линейную алгебру для сокращения их количества.

4. Алгоритмы Ensemble Learning

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

Ансамблевое обучение (Ensemble Learning) – это метод, в котором несколько алгоритмов машинного обучения используются совместно. Смысл здесь заключается в том, что так вы сможете достичь более высокой прогностической производительности, чем при использовании какого-то одного алгоритма.

Самые популярные алгоритмы ансамблевого обучения - случайный лес, XGBoost, градиентный бустинг и AdaBoost. Чтобы объяснить, чем же так хороши алгоритмы ансамблевого обучения, приведу пример со случайным лесом:

Случайный лес подразумевает создание нескольких деревьев решений с использованием наборов исходных данных. Затем модель выбирает режим (большинство) всех предсказаний каждого дерева решений. В чем здесь смысл? Полагаясь на принцип «выигрывает тот, за кого большинство», она снижает риск ошибки отдельного дерева.

Например, если мы создадим одно дерево решений, третье, то оно выдаст нам 0. Но если мы полагаемся на все 4 дерева, то прогнозируемое значение будет 1. Вот в чем сила ансамблевого обучения!

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

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

Взгляните на все гиперпараметры случайного леса:

class sklearn.ensemble.RandomForestClassifier(n_estimators=100, *, criterion='gini', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features='auto', max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, bootstrap=True, oob_score=False, n_jobs=None, random_state=None, verbose=0, warm_start=False, class_weight=None, ccp_alpha=0.0, max_samples=None

Например, было бы неплохо понять, что такое minimpuritydecrease, чтобы если вдруг вы захотите, чтобы ваша модель машинного обучения была более «снисходительной», вы могли настроить этот параметр! ;)

Спасибо за прочтение!

После прочтения этой статьи у вас должно было возникнуть несколько идей, как повысить точность вашей модели с 80% до 90+%. Эта информация также поможет вам в ваших будущих проектах. Желаю удачи в ваших начинаниях и в Data Science.


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

Читать ещё:

Теги:data scienceмашинное обучениеmachine learningartificial intelligence
Хабы: Блог компании OTUS. Онлайн-образование Программирование Big Data Машинное обучение
+11
3,4k 57
Комментарии 5

Похожие публикации

Лучшие публикации за сутки

Информация

Дата основания
Местоположение
Россия
Сайт
otus.ru
Численность
51–100 человек
Дата регистрации

Блог на Хабре