Оцінка помилки, що не входить у сумку, для підвищення?


9

У випадковому лісі кожне дерево вирощується паралельно на унікальній вибірці даних для завантаження. Оскільки, як очікується, кожен зразок завантаження може містити близько 63% унікальних спостережень, це залишає приблизно 37% спостережень, які можна використовувати для тестування дерева.

Тепер, здається, що в Stohastic Gradient також існує аналогічна оцінці в РФ:ООБеrrоr

Якщо встановлено, що розміщення фракції сумки перевищує 0 (рекомендується 0,5), gbm обчислює оцінку покращення прогнозованих показників. Він оцінює зменшення відхилення для тих спостережень, які не використовуються при виборі наступного дерева регресії.

Джерело: Ridgeway (2007) , розділ 3.3 (стор. 8).

У мене проблеми з розумінням того, як це працює / чи дійсно. Скажіть, я додаю дерево в послідовності. Я вирощую це дерево на випадковій вибірці оригінального набору даних. Я міг би протестувати це єдине дерево на спостереженнях, які не використовувались для його вирощування. Домовились. Але , оскільки підсилення є послідовним, я скоріше використовую всю послідовність дерев, побудованих до цих пір, щоб передбачити ці залишені спостереження. І є велика ймовірність, що багато попередніх дерев вже бачили ці спостереження. Тож модель насправді не тестується на кожному раунді на небачених спостереженнях, як у РФ, так?

Отже, як це називається оцінка помилки "поза мешком"? Мені це не здається "поза" жодної сумки, оскільки спостереження вже були помічені?


1
Дивіться дискусію тут github.com/scikit-learn/scikit-learn/pull/1806 . Ви не самотні висловлюєте занепокоєння тим, як розраховуються оцінки OOB.
mpiktas

дякую за посилання, але, на жаль, всі учасники потоків, здається, так само втрачені, як і я!
Антуан

1
Насправді ні. Див. Github.com/scikit-learn/scikit-learn/pull/2188 . У цьому комітеті оцінка OOB змінюється на покращення OOB так, як це робить gbm. Я не знаю, як точно працює ця ідея, але з того, що я зібрав, зразок oob для поточного дерева використовується для обчислення вдосконалення OOB. Мені не вдалося знайти математичні формули, тож потрібно зануритися в код gbm, щоб побачити, наскільки точно обчислюється це поліпшення.
mpiktas

@Antoine Дуже хвилююче питання! була знайдена остаточна відповідь?
Soren Havelund Welling

1
Ні, на жаль. Деякі підказки даються вищезгаданими посиланнями (у коментарях), цією ниткою та цією іншою темою . Це зводить мене з розуму зовсім. Колись хтось повинен зняти електронний лист до доктора Фрідмана / Хасті ... Хоча за вашу увагу.
Антуан

Відповіді:


2

Відповідаючи лише частково (і додавши нове запитання до свого питання).

Реалізація gbm в R http://www.rdocumentation.org/packages/gbm/functions/gbm має два параметри для регулювання деякої нестабільності.

а) train.fractionвизначить частку даних, які використовуються для тренування всіх дерев, і таким чином 1– train.fractionбуде істинними даними OOB (поза пакетом).

б) bag.fractionвизначить пропорцію даних тренувань, які будуть використані при створенні наступного дерева в прискоренні. Таким чином, можуть бути деякі дані, які ніколи не використовуються для створення будь-якого дерева, і вони можуть бути по-справжньому використані як дані OOB (але це навряд чи див. Питання нижче)

Що підводить мене до питання. Ваш аналіз 37% даних як OOB справедливий лише для одного дерева. Але ймовірність, що будуть будь-які дані, які не використовуються в БУДЬ-якому дереві, набагато менше - (це повинно бути в OOB для всіх дерев - я розумію, що кожне дерево робить свій власний завантажувальний пристрій). Тож у RandomForests мало б мало ймовірності, щоб будь-яка OOB перевіряла ліс. І все ж реалізація randomForest в R (заснована на оригінальному коді Бреймана) багато говорить про OOB (наприклад, результати результатів і див. Http://www.rdocumentation.org/packages/randomForest/functions/randomForest )0,37нтrееснтrееerr.rateconfusion

Я не знаю, як відповісти на це (і я дякую вам (+1) за те, що ви поставили запитання, і даєте мені зрозуміти, що не розумію цей аспект випадкових Форестів). Можливе рішення полягає в тому, що існує лише одна завантажувальна стрічка - і всі дерева побудовані з неї - але, наскільки я знаю, це не так.


Для RF / Baging не виникає жодних питань: на будь-якому етапі процесу складання ансамблю будь-яке спостереження в оригінальному наборі даних може бути передане всім деревам, які були підготовлені на зразках завантаження, позбавлених цього спостереження. Приблизно третина (~ 37%) від загальної кількості дерев буде відповідати цій умові. Крім того, дозволяючи цим деревам голосувати і брати найпопулярніший клас, можна отримати прогноз для спостереження. Скільки разів прогноз відрізняється від справжньої мітки спостереження, усередненої за всіма класами, дає оцінку помилки поза
Антуан

1
Крім того, здається, що те, що дає змогу оцінювати помилку OOB у програмі Boosting, не походить від train.fractionпараметра (який є лише особливістю функції gbm, але відсутній в оригінальному алгоритмі), а насправді від того, що лише піддіапазон дані використовуються для тренування кожного дерева в послідовності, не залишаючи спостережень (які можна використовувати для тестування). Що повертається до мого початкового питання. Як ці спостереження можна використовувати для тестування, оскільки їх, мабуть, бачили багато разів у попередніх деревах у послідовності?
Антуан

забув згадати, що кожне дерево в РФ справді побудоване з власної унікальної вибірки початкових даних
Антуан

@ user2835597 дякую за ваші пояснення щодо РФ. Таким чином, помилка OOB у RF дійсно оцінює лише 1/3 дерев у лісі (це не здається мені дуже корисним). Ну, навчитися чомусь щоденному.
Жак Вайнер

У будь-якому випадку параметр train.fraction, здається, є відповіддю на ваше запитання. Реалізація sklearn також має аналогічний параметр, підпроборік
Жак Вайнер,

-2

Я вважаю, що вони роблять оцінку сумки на кожному кроці. Оскільки результати всіх етапів додаються (з коефіцієнтами), помилки OOB також можуть бути додані з тими ж коефіцієнтами.

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