Який найефективніший спосіб навчання даних з використанням найменшої пам'яті?


10

Це мої дані про навчання: 200 000 Приклади х 10 000 Особливості. Тож моя матриця даних про навчання - 200 000 х 10 000.

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

Але зараз, коли я використовую молоко , світло SVM або будь-який інший алгоритм машинного навчання, усе намагається завантажити цілі дані тренувань у пам'ять, а не тренувати їх по черзі. Однак у мене просто 8 ГБ оперативної пам’яті, тому я не можу продовжувати цей шлях.

Чи знаєте ви про те, що я міг би тренувати алгоритм одного набору даних за одним набором даних? Тобто, щоб у будь-який момент у мене просто один набір даних завантажився в пам'ять під час тренування.


1
Що ви маєте на увазі під "збереженням кожного набору даних по одному?" Ви маєте на увазі "кожен рядок даних?" Якщо у вас є кілька наборів даних, які ви зберігаєте по черзі, чому б не завантажувати їх по черзі і підходити до кожного алгоритму?
Зак

1
Чи означає "один набір даних за одним набором даних" рядок за рядком? Тобто один набір даних = 10000 функцій? Якщо це так, то онлайн-алгоритми можуть бути те, що ви шукаєте, дивіться: en.wikipedia.org/wiki/Online_algorithm та en.wikipedia.org/wiki/Online_machine_learning . Існує онлайн-версія для багатьох алгоритмів нахилу машин, наприклад SVM та випадкових лісів.
Herra Huu

Спасибі .. Зак та Герра. Я редагував питання, щоб чіткіше визначитись один за одним. І так, я думав про Інтернет-навчання, але ніколи не замислювався над онлайн-алгоритмами, дозвольте мені прочитати це і спробувати його.
madCode

Відповіді:


4

Я вважаю , що термін для цього типу навчання є поза ядра навчання. Однією з пропозицій є wabbit vowpal , у якому є зручна бібліотека R , а також бібліотеки для багатьох інших мов.


У мене виникають проблеми із збільшенням при збільшенні під час його встановлення. у вас є ідеї, чому я отримую це? bit.ly/L939DO
madCode

@madCode Я ніколи фактично не використовував wabbit vowpal, тому не можу допомогти вам встановити його. Я чув, що їхній список розсилки відмінний, і я впевнений, що ви можете знайти там допомогу для його налаштування.
Зак

Гей..Зач. Це добре працювало. Я встановив це і навіть дав мені прогнози. дякую :-)
madCode

1

Я від душі друге пропозицію Зака. vowpal wabbit - відмінний варіант, і вас здивує його швидкість. Набір даних 200k на 10k не вважається великим за нормами vowpal wabbit.

vowpal_wabbit (доступний у вихідній формі через https://github.com/JohnLangford/vowpal_wabbit , старша версія доступна як стандартний пакет у Всесвіті Ubuntu) - це швидкий онлайн-лінійний та білінарний учень, з дуже гнучким входом. Ви можете змішувати двійкові та числові функції. Не потрібно зараховувати функції, оскільки імена змінних працюватимуть "як є". У ньому є безліч варіантів, алгоритмів, скорочень, функцій втрат і великої гнучкості. Ви можете приєднатися до списку розсилки (знайти його через github) і задати будь-яке запитання. Громада дуже обізнана та підтримує.


1

Я відповів , подібне питання тут . Точка більшості алгоритмів машинного навчання / обміну даними - це пакетні студенти, тобто вони завантажують усі дані в пам'ять. Тому вам потрібні різні інструменти для дуже великих наборів даних, як у вас є. Дивіться, що інструменти питань також.

Інтернет-навчання - це спосіб зменшити слід пам'яті алгоритмів.

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