Деревья решений в обучении на огромных наборах данных
-
16-09-2019 - |
Вопрос
Я пытаюсь создать бинарное дерево решений классификации из огромных (т.е., которые не могут храниться в памяти), используя MATLAB. По сути, я делаю:
- Соберите все данные
- Проверять не Функции принятия решений на данных
- Выберите Лучшая функция решения разделить классы в данных
- Разделите исходный набор данных на 2
- Выяснять
Данные имеют k атрибуты и классификация, поэтому он хранится как матрица с огромный количество рядов и K+1 колонны Функции решения являются логическими и действуют на атрибуты, назначающие каждую строку левой или правой поддере.
Прямо сейчас я подумываю о хранении данных в файлах в кусках, которые можно хранить в памяти и назначить идентификатор каждой строке, поэтому решение о разделении принимается путем последовательного чтения всех файлов, а будущие расколы идентифицируются по идентификационным номерам.
Кто -нибудь знает, как сделать это лучше?
Редактировать: количество рядов M составляет около 5E8, а K - около 500
Решение
При каждом разделении вы разбиваете набор данных на более мелкие и меньшие подмножества. Начните с единого файла данных. Откройте его как поток и просто обрабатывайте по одной строке за раз, чтобы выяснить, какой атрибут вы хотите разделить. После того, как у вас есть первая функция решения, разделите исходный файл данных на 2 более мелких файла данных, каждый из которых содержит одну ветвь разделения данных. Выступать. Файлы данных должны стать меньше и меньше, пока вы не сможете загрузить их в память. Таким образом, вам не нужно помечать ряды и продолжать прыгать в огромном файле данных.