Чи існують бібліотеки для методів, схожих на CART, які використовують розріджені прогнози та відповіді?


11

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

Оскільки вони, схоже, не публікували свій код, мені було цікаво, чи існують пакети чи бібліотеки з відкритим кодом (будь-якою мовою), оптимізовані для цього випадку. В ідеалі я хотів би щось, що могло б взяти розріджену матрицю прямо з Matrixпакета R , але я візьму те, що можу отримати.

Я озирнувся, і здається, що щось таке повинно бути там:

  • Хіміки, здається, стикаються з цим питанням (стаття, яку я зв'язав вище, стосувалася того, щоб навчитися знаходити нові лікарські сполуки), але реалізація, яку я міг знайти, була або власною, або високоспеціалізованою для хімічного аналізу. Можливо, одна з них може бути переглянута.

  • Класифікація документів також здається областю, в якій корисне навчання з розріджених просторів функцій (більшість документів не містять більшості слів). Наприклад, є похила посилання на розріджені реалізації C4.5 (віз-подібний алгоритм) в цій статті , але без коду.

  • Відповідно до списку розсилки , WEKA може приймати розріджені дані, але на відміну від методу в роботі, яку я згадав вище, WEKA не оптимізована для того, щоб реально скористатись цим з точки зору уникнення марних циклів процесора.

Спасибі заздалегідь!


2
Не R, але Python scikits.learn має дещо зростаючу підтримку розріджених матриць.
chl

@ ch1 дякую. Схоже, вони ще не додали деревних методів. Хтось працює над впровадженням , але я не впевнений, чи вдасться використовувати розріджені дані. Я обов'язково маю на увазі розріджені методи SVM!
Девід Дж. Харріс

Коли ви говорите "CART-like", ви конкретно хочете дерева рішень чи будь-яку модель прогнозування?
Майкл Макгован

@Michael - Мені б хотілося дерев, оскільки я їх підгодовую до прискореної процедури, і вони мають велику дисперсію.
Девід Дж. Харріс

2
Я не знаю моделей дерев, але glmnetі e1071::svmобидва підтримують розріджені Matrixоб'єкти. GAMboostі GLMboost(з пакета GAMboost) може також.
Зак

Відповіді:


2

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

Частина причини полягає в тому, що використання розумного алгоритму сортування на зразок Quicksort при розщепленому пошуку може забезпечити майже O (n) продуктивність для майже постійних функцій (включаючи рідкісні). Швидкі реалізації також відстежують, коли функція стала постійною у гілці дерева і її більше не слід розглядати. Щільні представлення функцій забезпечують швидкі перегляди у кеш-процесорі, таким чином вам знадобиться справді розумне рідке представлення, щоб виграти в циклах процесора.

Про це йдеться тут , тут , тут .

Я фактично реалізував розріджене представлення даних в один момент свого пакету rf CloudForest, але виявив, що це повільніше, ніж щільне подання даних, і відмовився від нього, хоча це і надало деякі переваги в пам'яті.

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


1

Напевно, є невеликий шанс для будь-якого коду, який би скористався цим - вам скоріше потрібно щось написати самостійно.
Однак інший варіант - перетворити ваші дані, щоб зменшити розмір ваших даних, видаливши зайву інформацію. Важко сказати, як без інформації про ваші дані, але, можливо, ви можете об'єднати деякі функції, які, як відомо, не перетинаються, частини PCA або змінити представлення деяких дескрипторів? Крім того, якщо ви скажете, що ваша відповідь також є рідкою, можливо, доцільно зменшити вибірку об'єктів з 0 у відповідь?


Дякую за відповідь. Зниження звуку звучить як цікава ідея. Наразі я зважую деякі аспекти даних з інших причин, але це також може бути хорошою ідеєю. Але чому ви кажете, що код для цього навряд чи існує? Я зв’язаний із документом 12 років тому, який, здається, вирішив ту ж проблему.
Девід Дж. Харріс

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

Боюся, не зрозумію, що ти говориш. Перетворення форми даних - це саме те, що я хочу зробити, і наскільки я можу сказати, саме це робить цей документ. Вони не хотіли перераховувати всі функції, яким бракувало кожної хімічної речовини, лише ті, які вона мала. Це мало сенс у їхній ситуації, тому що у більшості хімічних речовин відсутні більшість функцій, як у моєму випадку. Таким чином вони перетворили свої функції в розріджену матрицю, а потім їх алгоритм рекурсивного розподілу безпосередньо на цій розрідженій матриці. Я шукаю способи з відкритим кодом, щоб зробити те ж саме зі своїми даними. Що я пропускаю? Спасибі
Девід Дж. Харріс

@David, я думаю, що суть mbq полягає в тому, що велике кодування 1-з-н (наприклад, ідентифікатор веб-сайту / клієнта тощо) або список хімічних речовин є дуже поганим представленням для навчання. Вам краще змінити "функції", наприклад, для веб-сайту це може бути категоризація: магазин / новини / блог спорт / технології тощо
seanv507

1

Ви подивилися caretпакет на R? Він надає інтерфейс, що полегшує використання різноманітних моделей, включаючи деякі для рекурсивного розподілу, наприклад rpart, ctreeта ctree2.


Мені знайомі ці пакети / функції, і жоден з них не працює над обмеженими даними, наскільки я можу сказати.
Девід Дж. Харріс

1
Підтримка карет для Matrixоб'єктів була б чудовою, але вона наразі не існує. Усе примушується до data.frame.
Зак

Ви можете спробувати надіслати електронний лист розробнику та запитати його про це. Я послав по електронній пошті його на що - то інше , і він надав корисний відповідь - max.kuhn [в] pfizer.com
PAUL
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.