Предобработка данных
Как желательно предобрабатывать данные в зависимости от используемой модели машинного обучения? Например для одних алгоритмов требуется нормализация данных, для других важен вид распределения? Например, как подготовить данные для деревянных алгоритмов или линейных моделей? Как дела с другими алгоритмами?
Ответы (1 шт):
Тема слишком сложная для вопроса-ответа на этом сайте, но если вкратце, то можно считать, что для предсказания по табличным данным сейчас используются в основном два вида моделей:
- линейные модели
- ансамбли (внутри которых могут быть деревья, бустинги, нейросети - не суть важно)
Для линейных моделей очень важна подготовка данных, как минимум это:
- приведение фич к одинаковому масштабу
- чистка выбросов
- нормализация распределения
- кодирование категориальных переменных
Для ансамблей же практически ничего этого не нужно, ансамбли по своей природе хорошо справляются почти со всеми проблемами "из коробки", за что их так и любят начинающие дата-сайентисты.
Единственное, что ещё бывает нужно для любых моделей - это исправление распределения целевой переменной (таргета). Кривое распределение целевой переменной, к сожалению, может отрицательно влиять на любую модель.
Осталось пояснить, почему же до сих пор не отказались полностью от линейных моделей и не перешли на ансамбли. Дело в том, что интерпретировать результат работы ансамбля - задача не тривиальная. Прочему он принял то или иное решение или выдал определённую величину на выходе - не всегда бывает легко понять и, тем более, объяснить. С линейными же моделями всё гораздо проще - есть коэффициенты, на которые модель просто умножает каждую из фич и всё это потом между собой складывает. И тут всё очень просто: у какой фичи больше коэффициент - та и важнее, грубо говоря. Это очень полезно знать для тех отраслей, где принятие решений сопряжено с большими рисками и нужно контролировать с помощью экспертизы то, что делает модель. Например, для банковской сферы интерпретируемость - это необходимое свойство используемых моделей.