[Программирование, Big Data, Машинное обучение] Как я регулярно улучшаю точность моделей обучения с 80% до 90+% (перевод)
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
В преддверии старта базового курса по 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.
Если вас заинтересовал курс, запишитесь на бесплатный вебинар, в рамках которого наши эксперты подробно расскажут о программе обучения и ответят на интересующие вопросы.
Читать ещё:
===========
Источник:
habr.com
===========
===========
Автор оригинала: Terence S
===========Похожие новости:
- [Программирование, Go] Жизнь в одну строчку (перевод)
- [Python, Машинное обучение, Искусственный интеллект, TensorFlow] Подборка статей о машинном обучении: кейсы, гайды и исследования за октябрь 2020
- [Программирование, C++, C#] Как подружить .NET и IDA Pro (о дружбе C# и C++)
- [SQL, Администрирование баз данных, Big Data, Data Engineering] Кто ответит за качество аналитики: QA для Хранилища Данных
- [Информационная безопасность, Python, Программирование] Побег из песочницы с Python (перевод)
- [Java] Как Spring Data Jdbc определяет, что объект новый
- [Программирование, Функциональное программирование, TypeScript] Функциональное программирование на TypeScript: полиморфизм родов высших порядков
- [Программирование, Алгоритмы, Математика] Точные и быстрые вычисления для чисел с плавающей точкой на примере функции синуса. Введение и часть 1
- [Программирование микроконтроллеров, Схемотехника, Производство и разработка электроники, DIY или Сделай сам, Электроника для начинающих] STM32 DoomBoy SDRAM ILI9341
- [Высокая производительность, Программирование, Алгоритмы] Быстрая медианная фильтрация с использованием AVX-512
Теги для поиска: #_programmirovanie (Программирование), #_big_data, #_mashinnoe_obuchenie (Машинное обучение), #_data_science, #_mashinnoe_obuchenie (машинное обучение), #_machine_learning, #_artificial_intelligence, #_blog_kompanii_otus._onlajnobrazovanie (
Блог компании OTUS. Онлайн-образование
), #_programmirovanie (
Программирование
), #_big_data, #_mashinnoe_obuchenie (
Машинное обучение
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 19:11
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
В преддверии старта базового курса по Machine Learning, подготовили для вас интересный перевод, а также предлагаем бесплатно посмотреть запись демо-урока по теме: "Как начать делать мир лучше с помощью NLP".
Например, если мы создадим одно дерево решений, третье, то оно выдаст нам 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
Если вас заинтересовал курс, запишитесь на бесплатный вебинар, в рамках которого наши эксперты подробно расскажут о программе обучения и ответят на интересующие вопросы.
=========== Источник: habr.com =========== =========== Автор оригинала: Terence S ===========Похожие новости:
Блог компании OTUS. Онлайн-образование ), #_programmirovanie ( Программирование ), #_big_data, #_mashinnoe_obuchenie ( Машинное обучение ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 19:11
Часовой пояс: UTC + 5