Поєднання моделей машинного навчання


20

Я начебто новачок у передачі даних / машинне навчання / тощо. і читав про пару способів поєднання декількох моделей і циклів однієї моделі для покращення прогнозів.

Моє враження від прочитання декількох статей (які часто цікаві та чудові в теорії та грецьких літерах, але короткий код та фактичні приклади) полягає в тому, що це повинно йти так:

Я беру модель ( knn, RFі т. Д.) І отримую список класифікаторів від 0 до 1. Моє питання полягає в тому, як комбінувати кожен із цих списків класифікаторів? Чи запускаю ті ж моделі на своєму навчальному наборі, щоб кількість стовпців, що надходять у фінальну модель, однакові чи є якийсь інший трюк?

Було б чудово, якби якісь пропозиції / приклади включали R-код.

ПРИМІТКА. Це для набору даних з 100k рядків у навчальному наборі та 70k у тестовому наборі та 10 стовпців.

Відповіді:


21

Це насправді зводиться до однієї з технік "3B": пакування, підсилення або змішування.

У мішкуванні ви тренуєте багато класифікаторів на різних підмножинах об'єкта та комбінуєте відповіді в середньому для регресії та голосування для класифікації (є деякі інші варіанти складніших ситуацій, але я пропускаю це). Пропорція / відхилення голосів можна інтерпретувати як наближення помилок, оскільки окремі класифікатори зазвичай вважаються незалежними. РФ насправді - це ансамбль мішковин.

Підвищення - це більш широке сімейство методів, однак їх головним моментом є те, що ви будуєте наступний класифікатор на залишках колишнього, таким чином (теоретично) поступово збільшуючи точність, виділяючи все більш тонкі взаємодії. Таким чином, передбачення зазвичай поєднуються шляхом підсумовування їх, щось подібне до обчислення значення функції в x шляхом підсумовування значень елементів її ряду Тейлора для x.
Найбільш популярні версії - (стохастичний) градієнтний підсилювач (з приємною математичною основою) та AdaBoost (добре відомий, насправді конкретний випадок ГБ). З цілісної точки зору, дерево рішень - це стимулювання тривіальних класифікаторів.

Змішування - це ідея вкладення класифікаторів, тобто запуску одного класифікатора в інформаційній системі, що складається з прогнозів інших класифікаторів. Отже, це дуже мінливий метод і, безумовно, не визначений алгоритм; може знадобитися багато об'єктів (у більшості випадків класифікатор "блендера" повинен бути навчений на наборі об'єктів, які не використовувались для складання часткових класифікаторів, щоб уникнути незручного накладання).
Прогнози часткових класифікаторів, очевидно, поєднуються шляхом їх змішування в інформаційну систему, передбачену блендером.


7

Вираз "поєднання моделей" є невиразним, але я гадаю, що ви запитуєте про ансамблеві методи навчання. Найкраща посилання, щоб дізнатися про них, - це, можливо, документи Річ Каруана:

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

У цьому документі немає фактичного коду, але алгоритм чітко описаний, тому у вас не повинно виникнути проблем з кодуванням його будь-якою вашою мовою.


2

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

Я думаю, що деякі з моїх проблем полягали в тому, що в поєднанні прогнозів з іншими змінними, можливо, спостерігалося деяке перевиконання або мультиколінеарність, але я не впевнений. Хтось інший міг би краще зважитись на те, що я робив не так. У будь-якому випадку дякую всім за допомогу.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.