Используйте параллельную обработку в регрессии рабочий процесс TreeBagger

Этот пример показывает вам как:

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

  • Улучшите скорость расчета при помощи параллельных вычислений.

Выборочные данные являются базой данных 1 985 автомобильного импорта с 205 наблюдениями, 25 предикторов и 1 ответ, который является страховкой, рискуют оценивать, или "symboling". Первые 15 переменных являются числовыми, и последние 10 являются категориальными. Индекс symboling принимает целочисленные значения от-3 до 3.

Загрузите выборочные данные и разделите их на предиктор и массивы ответа.

load imports-85;
Y = X(:,1);
X = X(:,2:end);

Настройте параллельную среду, чтобы использовать два ядра.

mypool = parpool(2)
Starting parallel pool (parpool) using the 'local' profile ...
Connected to the parallel pool (number of workers: 2).

mypool = 

 LocalProcessesPool with properties: 

            Connected: true
           NumWorkers: 2
              Cluster: local
        AttachedFiles: {}
    AutoAddClientPath: true
          IdleTimeout: 30 minutes (30 minutes remaining)
          SpmdEnabled: true

Установите опции использовать параллельную обработку.

paroptions = statset('UseParallel',true);

Оцените важность функции с помощью листового размера 1 и 5000 деревья параллельно. Время функция в целях сравнения.

tic
b = TreeBagger(5000,X,Y,'Method','r','OOBVarImp','on', ...
    'cat',16:25,'MinLeafSize',1,'Options',paroptions);
toc
Elapsed time is 30.297706 seconds.

Выполните тот же расчет в сериале для синхронизации сравнения.

tic
b = TreeBagger(5000,X,Y,'Method','r','OOBVarImp','on', ...
    'cat',16:25,'MinLeafSize',1);
toc
Elapsed time is 32.935544 seconds.

Результаты показывают, что вычисление параллельно берет часть времени, которое требуется, чтобы вычислить последовательно. Обратите внимание на то, что прошедшее время может варьироваться в зависимости от вашей операционной системы.

Смотрите также

| |

Похожие темы