Объединение моделей машинного обучения


20

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

У меня сложилось впечатление, что после прочтения пары статей (которые часто интересны и хороши в теории и греческом языке, но не содержат кода и реальных примеров), я думаю, что это должно выглядеть так:

Я беру модель ( knnи RFт. Д.) И получаю список классификаторов от 0 до 1. Мой вопрос заключается в том, как объединить каждый из этих списков классификаторов? Запускаю ли я одни и те же модели на моем тренировочном наборе, чтобы количество столбцов, входящих в окончательную модель, было одинаковым или есть какой-то другой прием?

Было бы замечательно, если бы какие-либо предложения / примеры включали R-код.

ПРИМЕЧАНИЕ. Это для набора данных со 100 000 строк в обучающем наборе и 70 000 в тестовом наборе и 10 столбцах.

Ответы:


21

Это на самом деле сводится к одной из техник «3B»: пакетирование, повышение или смешивание.

В пакетировании вы тренируете много классификаторов на разных подмножествах объектов и комбинируете ответы в среднем для регрессии и голосования для классификации (есть и другие варианты для более сложных ситуаций, но я пропущу это). Доля / дисперсия голосов может быть интерпретирована как приближение ошибки, поскольку отдельные классификаторы обычно считаются независимыми. РФ на самом деле является ансамблем по упаковке.

Повышение - это более широкое семейство методов, однако их основной смысл заключается в том, что вы строите следующий классификатор на остатках первого, таким образом (теоретически) постепенно увеличивая точность, выделяя все более тонкие взаимодействия. Таким образом, предсказания обычно объединяются путем их суммирования, что-то наподобие вычисления значения функции в x путем суммирования значений элементов ее ряда Тейлора для x.
Наиболее популярными версиями являются (Stochastic) Gradient Boosting (с хорошей математической основой) и AdaBoost (хорошо известный, на самом деле, особый случай GB). С целостной точки зрения дерево решений - это повышение тривиальных базовых классификаторов.

Смешивание - это идея вложенных классификаторов, то есть запуска одного классификатора в информационной системе, основанной на предсказаниях других классификаторов. Как так, это очень изменчивый метод и, конечно, не определенный алгоритм; может потребовать много объектов (в большинстве случаев классификатор "blender" должен быть обучен на наборе объектов, которые не использовались для создания частичных классификаторов, чтобы избежать смущающего перебора).
Предсказания частичных классификаторов, очевидно, объединяются путем объединения их в информационную систему, которая прогнозируется блендером.


7

Выражение «объединение моделей» является расплывчатым, но я предполагаю, что вы спрашиваете о методах обучения ансамблю. Лучшая справка, чтобы узнать о них, возможно, документы Рича Каруаны:

http://www.cs.cornell.edu/~caruana/ctp/ct.papers/caruana.icml04.icdm06long.pdf

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


2

Посмотрев немного с помощью приведенных выше ответов, я понял, в чем заключалась моя проблема. Я пытался использовать предсказания других моделей в той же модели, которая использовалась для их предсказания. Другими словами, если бы у меня было 5 переменных, когда я запускал kNNмодель, я бы добавил новую переменную с предсказаниями kNNмодели и создал бы модель с 6 переменными, когда я запустил модель случайного леса. Я обнаружил, что вместо этого результаты моделей должны быть сегментированы и работать как отдельная модель. Так что я бы создать прогнозы от различных моделей ( knn, RF, svdи т.д.) , а затем запустить отдельное комбинирование / смешивание / штабелирования модели , используя только предсказания как переменные и классификацию , как то , что предсказать.

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.