Обучающие деревья решений на огромных наборах данных - PullRequest
3 голосов
/ 17 июля 2009

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

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

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

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

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

РЕДАКТИРОВАТЬ: количество строк m составляет около 5e8 и k составляет около 500

1 Ответ

2 голосов
/ 17 июля 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...