Этот пример показывает вам как:
Используйте ансамбль сложенных в мешок деревьев регрессии, чтобы оценить важность функции.
Улучшите скорость расчета при помощи параллельных вычислений.
Выборочные данные являются базой данных 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.
Результаты показывают, что вычисление параллельно берет часть времени, которое требуется, чтобы вычислить последовательно. Обратите внимание на то, что прошедшее время может варьироваться в зависимости от вашей операционной системы.
statset
| TreeBagger
| parpool
(Parallel Computing Toolbox)