Полный план решения большинства проблем с машинным обучением.
Последние обновления этой дорожной карты можно найти на моем Github. Я буду обновлять только там.
1. Исследовательский анализ данных (EDA) - ›pandas, matplotlib или seaborn
Чтобы получить представление для последующей обработки и моделирования. Контрольный список:
(1) Многие поисковые запросы / продукты появлялись несколько раз.
(2) Сходство текста - отличная особенность.
(3) Многие продукты не имеют атрибутов. Будет ли это проблемой? (4) Идентификатор продукта, похоже, имеет сильную предсказательную силу. Однако совпадение идентификаторов продукта между обучающим набором и тестовым набором не очень велико. Будет ли это способствовать переобучению?
(5) Проверьте распределение функций с непрерывными данными.
Подходы:
(1) Характеристики линейно связаны - ›график тепловой карты -› коэффициент корреляции Пирсона
(2) Выбросы:
- диаграмма рассеяния - ›ручное удаление выбросов
- Используйте OneClassSVM, EllipticEnvelope, IsolationForest, LocalOutlierFactor из sklearn для выявления выбросов и их удаления.
(3) Классификация - ›диаграмма рассеяния с цветными метками
2. Разработка функций / выбор функций
(1) Тренировка стека и тестирование - ›Совместное преобразование функций.
(2) Распределение функций -› прямоугольная диаграмма - ›преобразование коробчатого Кокса.
(3) Отсутствующие данные -› среднее, среднее, удалить, дерево решений спрогнозировать это, заполнить определенным значением и т. д.
(4) Категориальные переменные - ›горячая кодировка
(5) Шум -› менее регуляризованный, больше итераций или глубина деревьев или более глубокая сети
(6) Смешанные функции - ›сложение, минус, умножение, деление на и т. д.
(7) Подсчет атрибутов. Найдите наиболее часто используемые и легко используемые.
(8) Несбалансированные данные:
- Увеличение данных (создание новых данных, таких как поворот и сдвиг в данных изображения)
- Присвойте разные веса разным классам .
- Повышение частоты дискретизации - увеличение частоты дискретизации
- Понижение частоты дискретизации - уменьшение частоты дискретизации
(9) Используйте алгоритмы неконтролируемого обучения, такие как PCA, LDA, для уменьшения размеров элементов.
(10) Стандартизация данных - среднее значение = 0, std = 1
Примечание: модели на основе деревьев не зависят от стандартизации, но нейронные сети повышают скорость.
(11) Разделите данные на обучающие и данные тестирования. Перемешайте обучающие данные.
3. Моделирование
Используйте машинное обучение в качестве основы для оптимизации глубокого обучения.
Глубокое обучение не подходит для решения следующих задач:
- объем данных слишком мал;
- данные не имеют локальных функций.
(1) Выберите модели
(a) Регрессия
- Линейная регрессия
- Лассо
- Полиномиальная регрессия
- Машина градиентного ускорения (GBM)
- XGBoost
- Нейронные сети
- Ансамбли
(b) Классификация
- Дерево решений
- Случайный лес
- Логистическая регрессия
- Машины опорных векторов (SVM)
- k-ближайшие соседи
- Наивный байесовский
- Gradient Boost Machine (GBM)
- XGBoost
- Нейронные сети
- Ансамбли
(c) Кластеризация
- k-средних
- Модель смеси Гаусса (GMM)
- Среднее смещение
- DBSCAN
- Агломеративная кластеризация
(d) Уменьшение размеров
- Анализ главных компонентов (PCA)
- Линейный дискриминантный анализ (LDA)
- Изометрическое отображение признаков (Isomap)
(2) Параметры настройки
(a) Найдите документы, чтобы узнать приблизительные значения
(b) Поиск по сетке
(c) Байесовская оптимизация
(3) Советы по настройке XGBoost
(a) eta: размер шага, используемый при обновлении весов. Более низкая эта означает более медленное обучение, но лучшую сходимость.
(b) num_round: общее количество итераций.
(c) подвыборка: соотношение обучающих данных, используемых в каждой итерации. Это сделано для борьбы с переобучением.
(d) colsample_bytree: соотношение функций, используемых в каждой итерации. Это похоже на max_features в RandomForestClassifier.
(e) max_depth: максимальная глубина каждого дерева. В отличие от случайного леса, усиление градиента в конечном итоге переборщило, если мы не ограничим его глубину.
(f) Early_stopping_rounds: если мы не увидим увеличения оценки валидации для заданного количества итераций, алгоритм остановится раньше. Это тоже для борьбы с переобучением.
(h) Шаги:
Шаг 1. Зарезервируйте часть обучающего набора в качестве набора для проверки.
Шаг 2. Установите для eta относительно высокое значение (например, 0,05 ~ 0,1), num_round равным 300 ~ 500.
Шаг 3. Используйте сетку поиск, чтобы найти лучшую комбинацию других параметров.
Шаг 4. Постепенно уменьшайте значение eta, пока не достигнете оптимума.
Шаг 5. Используйте набор проверки как watch_list, чтобы повторно обучить модель с лучшими параметрами. Наблюдайте, как меняется оценка при проверке, установленной на каждой итерации. Найдите оптимальное значение для Early_stopping_rounds.
(4) Советы по настройке глубокого обучения
(a) Попробуйте мини-пакетный градиентный спуск.
(b) Попробуйте сначала небольшую скорость обучения.
(c) Сначала попробуйте функцию активации ReLU и оптимизатор Adam.
(d) Недо- подгонка (высокое смещение):
- Более глубокая нейронная сеть (больше нейронов и больше слоев)
- Уменьшение регуляризации L2
- Дополнительные возможности
(e) Переобучение (высокая дисперсия): < br /> - Регуляризация L2
- Исключение
- Пакетная нормализация
- Увеличение данных
- Сокращение
- Градиентное отсечение / ранняя остановка
- Модели Esemble < br /> - Уменьшить возможности
- Дополнительные данные
- Проверить коэффициент модели, переоснащение часто связано с большим оценочным коэффициентом.
(5) Перекрестная проверка (CV)
(a) (Kaggle) Результаты публичной таблицы лидеров не соответствуют местным оценкам резюме из-за шума или неидеального распределения. Местное резюме ›общедоступная таблица лидеров.
(b) Достаточно пятикратного резюме.
(c) Внедрить стратифицированную перекрестную проверку вместо базовой перекрестной проверки для большого количества классов или несбалансированного распределения для каждого класса.
(6) Показатель оценки
Используйте правильный показатель для оценки баллов.
(7) Ансамблевые модели
Это снижает как систематическую ошибку, так и дисперсию окончательной модели. Базовые модели не должны быть связаны между собой, насколько это возможно. Вот почему мы склонны включать в ансамбль недревесные модели, даже если они не работают. Математика говорит, что чем больше разнообразия, тем меньше предвзятость в финальном ансамбле. Также производительность базовых моделей не должна сильно отличаться.
(a) Пакетирование:
Используйте разные случайные подмножества обучающих данных для обучения каждой базовой модели. Затем все базовые модели голосуют за получение окончательных прогнозов. Так работает случайный лес.
(b) Повышение:
Итеративно обучайте базовые модели, изменяя веса обучающих выборок в соответствии с последней итерацией. Вот как работают деревья с градиентным усилением. (На самом деле это еще не все. Помимо повышения, GBT пытаются изучить остатки более ранних итераций.) Он работает лучше, чем упаковка, но более склонен к переобучению.
(c) Смешивание:
Используйте неперекрывающиеся данные для обучения различных базовых моделей и используйте их средневзвешенное значение для получения окончательных прогнозов. Это легко реализовать, но требует меньше данных.
(d) Укладка:
Возьмем для примера 5-кратную укладку. Сначала мы разбиваем обучающие данные на 5 частей. Далее мы сделаем 5 итераций. На каждой итерации тренируйте каждую базовую модель на 4 сгибах и прогнозируйте удерживающую складку. Вы также должны сохранять прогнозы на основе данных тестирования. Таким образом, на каждой итерации каждая базовая модель будет делать прогнозы на 1 кратность обучающих данных и всех данных тестирования. После 5 итераций мы получим матрицу shape # (образцы в обучающих данных) X # (базовые модели). Затем эта матрица подается в штабелеукладчик (это просто еще одна модель) на втором уровне. После того, как штабелеукладчик установлен, используйте прогнозы по тестовым данным по базовым моделям (каждая базовая модель обучается 5 раз, поэтому мы должны взять среднее значение, чтобы получить матрицу той же формы) в качестве входных данных для штабелеукладчика и получить окончательный результат. предсказания.
(8) Конвейер - ›создание высокоавтоматизированного конвейера
(a) Автоматический поиск по сетке / байесовская оптимизация
(b) Автоматический выбор ансамбля.
"Ссылка"