Деревья решений в обучении на огромных наборах данных

StackOverflow https://stackoverflow.com/questions/1144929

Вопрос

Я пытаюсь создать бинарное дерево решений классификации из огромных (т.е., которые не могут храниться в памяти), используя MATLAB. По сути, я делаю:

  1. Соберите все данные
  2. Проверять не Функции принятия решений на данных
  3. Выберите Лучшая функция решения разделить классы в данных
  4. Разделите исходный набор данных на 2
  5. Выяснять

Данные имеют k атрибуты и классификация, поэтому он хранится как матрица с огромный количество рядов и K+1 колонны Функции решения являются логическими и действуют на атрибуты, назначающие каждую строку левой или правой поддере.

Прямо сейчас я подумываю о хранении данных в файлах в кусках, которые можно хранить в памяти и назначить идентификатор каждой строке, поэтому решение о разделении принимается путем последовательного чтения всех файлов, а будущие расколы идентифицируются по идентификационным номерам.

Кто -нибудь знает, как сделать это лучше?

Редактировать: количество рядов M составляет около 5E8, а K - около 500

Это было полезно?

Решение

При каждом разделении вы разбиваете набор данных на более мелкие и меньшие подмножества. Начните с единого файла данных. Откройте его как поток и просто обрабатывайте по одной строке за раз, чтобы выяснить, какой атрибут вы хотите разделить. После того, как у вас есть первая функция решения, разделите исходный файл данных на 2 более мелких файла данных, каждый из которых содержит одну ветвь разделения данных. Выступать. Файлы данных должны стать меньше и меньше, пока вы не сможете загрузить их в память. Таким образом, вам не нужно помечать ряды и продолжать прыгать в огромном файле данных.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top