Проще начать со второго вопроса, а затем перейти к первому.
мешковина
Случайный лес - это алгоритм упаковки. Это уменьшает дисперсию.
Скажем, у вас есть очень ненадежные модели, такие как деревья решений. (Почему ненадежный? Потому что, если вы немного измените свои данные, созданное дерево решений может сильно отличаться.) В таком случае вы можете построить надежную модель (уменьшить дисперсию) с помощью пакетирования - пакетирование - это когда вы создаете разные модели. путем повторной выборки ваших данных, чтобы сделать полученную модель более надежной.
Случайный лес - это то, что мы называем упаковкой, применяемой к деревьям решений, но он ничем не отличается от другого алгоритма упаковывания.
Зачем тебе это делать? Это зависит от проблемы. Но обычно очень желательно, чтобы модель была стабильной.
стимулирование
Повышение уменьшает дисперсию, а также уменьшает смещение. Это уменьшает дисперсию, потому что вы используете несколько моделей (мешки). Он уменьшает уклон, обучая последующую модель, сообщая ему, какие ошибки допущены предыдущими моделями (стимулирующая часть)
Есть два основных алгоритма:
- Adaboost: это оригинальный алгоритм; Вы говорите последующим моделям наказать более суровые наблюдения, ошибочно принятые предыдущими моделями.
- Повышение градиента: вы тренируете каждую последующую модель, используя невязки (разницу между прогнозируемыми и истинными значениями)
В этих ансамблях ваш базовый ученик должен быть слабым. Если данные перекрывают данные, не будет никаких ошибок или ошибок для последующих моделей. Почему эти хорошие модели? Что ж, большинство конкурсов на таких сайтах, как Kaggle, выигрывалось с помощью деревьев, повышающих градиент. Наука о данных - это эмпирическая наука, «потому что она работает» достаточно хороша. В любом случае, обратите внимание, что улучшающие модели могут соответствовать (хотя опытным путем это не очень распространено).
Еще одна причина, по которой повышение градиента, в частности, также довольно круто: потому что позволяет очень легко использовать различные функции потерь, даже когда производная не выпуклая. Например, при использовании вероятностного прогноза вы можете использовать такие функции, как функция пинбола, в качестве функции потерь; что-то гораздо сложнее с нейронными сетями (потому что производная всегда постоянна).
[Интересная историческая справка: «Повышение» изначально было теоретическим изобретением, мотивированным вопросом « можем ли мы построить более сильную модель, используя более слабые модели »]
Обратите внимание: люди иногда путают случайные леса и деревья, повышающие градиент, просто потому, что оба используют деревья решений, но это два очень разных семейства ансамблей.
Когда вы строите дерево, вам нужно определить некоторые критерии для разделения узлов. К ним относятся такие показатели, как информационное усиление и индекс Джини. Это эвристические подходы, они не гарантируют наилучшего раскола.
Вес в том, что некоторые атрибуты менее актуальны и / или более шумные, и много других проблем, которые возникают в реальных данных. Короче говоря, вы не можете построить идеальное дерево за приемлемое время вычислений (вы, конечно, можете построить все возможные деревья и протестировать лучшее, но тогда вам придется подождать несколько лет для обучения даже в наборе данных среднего размера).
Поскольку у нас не может быть лучшего дерева, у нас есть приближения. Одним из приближений является построение множества деревьев (с использованием различных разделов данных или разделов атрибутов), поскольку мы ожидаем, что большинство деревьев будут несколько правильными, и рассмотрим их классификации в системе голосования; это должно касаться большинства шумов, вертикальное разделение может иметь дело с нерелевантными атрибутами, эвристика имеет меньшее значение и, возможно, другие преимущества.
источник
Я бы добавил небольшое дополнение к хорошим ответам. Основная проблема - переоснащение. Как только у вас есть более одного параметра, а также добавлены нелинейные функции, все алгоритмы начинают переопределяться. Они видят что-то в данных, которых не существует. Например, когда темно или туман сильный, люди видят вещи в темноте / тумане, которые не существуют. Почти все вычислительные алгоритмы делают больше, чем люди. Даже линейные регрессии начинают показывать странные коэффициенты, когда переменные сильно коррелированы. Если бы не было переобучения, то обычные деревья решений, на которых основаны эти алгоритмы, были бы лучше, чем Random Forest или XGBoost.
И нет точной науки, почему происходит переоснащение и почему некоторые алгоритмы лучше, чем другие. Теоретически модели ARIMA очень надежны, но практика показывает, что использование методов экспоненциального сглаживания лучше, и ARIMA не может даже дифференцировать переменные, которые ведут себя в соответствии с ARIMA, но с другими параметрами.
Некоторые нейронные сети и особенно сверточные нейронные сети, по-видимому, имеют низкое переоснащение. В то же время первоначальная идея полностью связанных нейронных сетей не работает с большим количеством нейронов из-за переоснащения.
Основные возможности борьбы с переоснащением:
Если я правильно понимаю алгоритмы, и Random Forest, и XGBoost делают случайную выборку и усредняют по нескольким моделям и, таким образом, удается уменьшить переобучение.
В конкурсе по распознаванию изображений ImageNet лучшая модель 2016 года (Shao et al) была комбинацией нескольких действительно хороших моделей. Некоторые из них выиграли конкурс в предыдущие годы. Эта модель имела на 20% меньше ошибок, чем любая из моделей, на которых она основывалась. Вот как усреднение по нескольким моделям может быть сильным в борьбе с переоснащением.
источник