В этом примере показано, как:
Используйте ансамбль пакетных деревьев регрессии для оценки важности элементов.
Повышение скорости вычислений с помощью параллельных вычислений.
Выборочные данные представляют собой базу данных по импорту автомобилей 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 (Панель инструментов параллельных вычислений)