В этом примере показано, как:
Используйте ансамбль мешанных регрессионных деревьев, чтобы оценить функцию важность.
Улучшите скорость расчетов с помощью параллельных вычислений.
Выборочные данные являются базой данных импорта автомобилей 1985 года с 205 наблюдениями, 25 предикторами и 1 ответом, который является рейтингом страхового риска или «символизацией». Первые 15 переменных являются числовыми, а последние 10 категориальными. Индекс символизации принимает целочисленные значения от -3 до 3.
Загрузите выборочные данные и разделите его на массивы предикторов и ответов.
load imports-85;
Y = X(:,1);
X = X(:,2:end);
Настройте параллельное окружение, чтобы использовать количество работников по умолчанию. Компьютер, создавший этот пример, имеет шесть ядер.
mypool = parpool
Starting parallel pool (parpool) using the 'local' profile ... Connected to the parallel pool (number of workers: 6). mypool = ProcessPool with properties: Connected: true NumWorkers: 6 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 9.873065 seconds.
Для сравнения временных параметров выполните те же расчеты последовательно.
tic b = TreeBagger(5000,X,Y,'Method','r','OOBVarImp','on', ... 'cat',16:25,'MinLeafSize',1); toc
Elapsed time is 28.092654 seconds.
Результаты показывают, что параллельные вычисления занимают часть времени, необходимого для последовательного вычисления. Обратите внимание, что прошедшее время может варьироваться в зависимости от вашей операционной системы.
statset
| TreeBagger
| parpool
(Parallel Computing Toolbox)