exponenta event banner

oobPermutedPredictorImportance

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

Описание

пример

Imp = oobPermutedPredictorImportance(Mdl) возвращает вектор оценок важности предиктора вне пакета путем перестановки с использованием случайного леса деревьев регрессии Mdl. Mdl должно быть RegressionBaggedEnsemble объект модели.

пример

Imp = oobPermutedPredictorImportance(Mdl,Name,Value) использует дополнительные параметры, указанные одним или несколькими Name,Value аргументы пары. Например, можно ускорить вычисления с помощью параллельных вычислений или указать, какие деревья использовать в оценке важности предиктора.

Входные аргументы

развернуть все

Случайный лес регрессионных деревьев, указанный как RegressionBaggedEnsemble объект модели, созданный fitrensemble.

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Индексы учащихся, используемые при оценке важности предиктора, определенные как пара, разделенная запятыми, состоящая из 'Learners' и числовой вектор положительных целых чисел. Значения должны быть не более Mdl.NumTrained. Когда oobPermutedPredictorImportance оценивает важность предиктора, он включает учащихся в Mdl.Trained(learners) только, где learners - значение 'Learners'.

Пример: 'Learners',[1:2:Mdl.NumTrained]

Параметры параллельных вычислений, указанные как разделенная запятыми пара, состоящая из 'Options' и массив структуры, возвращенный statset. 'Options' требуется лицензия Parallel Computing Toolbox™.

oobPermutedPredictorImportance использует 'UseParallel' только поле. statset('UseParallel',true) вызывает пул работников.

Пример: 'Options',statset('UseParallel',true)

Выходные аргументы

развернуть все

Оценки важности предиктора вне пакета по перестановке возвращаются в виде числового вектора 1 на p. p - количество переменных предиктора в обучающих данных (size(Mdl.X,2)). Imp(j) - важность предиктора Mdl.PredictorNames(j).

Примеры

развернуть все

Загрузить carsmall набор данных. Рассмотрим модель, которая предсказывает среднюю экономию топлива автомобиля с учетом его ускорения, количества цилиндров, рабочего объема двигателя, лошадиных сил, производителя, модельного года и веса. Рассмотреть Cylinders, Mfg, и Model_Year в качестве категориальных переменных.

load carsmall
Cylinders = categorical(Cylinders);
Mfg = categorical(cellstr(Mfg));
Model_Year = categorical(Model_Year);
X = table(Acceleration,Cylinders,Displacement,Horsepower,Mfg,...
    Model_Year,Weight,MPG);

Можно обучить случайный лес из 500 деревьев регрессии, используя весь набор данных.

Mdl = fitrensemble(X,'MPG','Method','Bag','NumLearningCycles',500);

fitrensemble использует объект дерева шаблонов по умолчанию templateTree() как слабый ученик, когда 'Method' является 'Bag'. В этом примере для воспроизводимости укажите 'Reproducible',true при создании объекта шаблона дерева, а затем использовании объекта в качестве слабого ученика.

rng('default') % For reproducibility
t = templateTree('Reproducible',true); % For reproducibiliy of random predictor selections
Mdl = fitrensemble(X,'MPG','Method','Bag','NumLearningCycles',500,'Learners',t);

Mdl является RegressionBaggedEnsemble модель.

Оценка показателей важности предиктора путем перестановки наблюдений вне пакета. Сравните оценки с помощью гистограммы.

imp = oobPermutedPredictorImportance(Mdl);

figure;
bar(imp);
title('Out-of-Bag Permuted Predictor Importance Estimates');
ylabel('Estimates');
xlabel('Predictors');
h = gca;
h.XTickLabel = Mdl.PredictorNames;
h.XTickLabelRotation = 45;
h.TickLabelInterpreter = 'none';

Figure contains an axes. The axes with title Out-of-Bag Permuted Predictor Importance Estimates contains an object of type bar.

imp является вектором 1 на 7 оценок важности предиктора. Большие значения указывают на предикторы, которые оказывают большее влияние на прогнозы. В этом случае Weight является наиболее важным предиктором, за которым следует Model_Year.

Загрузить carsmall набор данных. Рассмотрим модель, которая предсказывает среднюю экономию топлива автомобиля с учетом его ускорения, количества цилиндров, рабочего объема двигателя, лошадиных сил, производителя, модельного года и веса. Рассмотреть Cylinders, Mfg, и Model_Year в качестве категориальных переменных.

load carsmall
Cylinders = categorical(Cylinders);
Mfg = categorical(cellstr(Mfg));
Model_Year = categorical(Model_Year);
X = table(Acceleration,Cylinders,Displacement,Horsepower,Mfg,...
    Model_Year,Weight,MPG);

Отображение количества категорий, представленных в категориальных переменных.

numCylinders = numel(categories(Cylinders))
numCylinders = 3
numMfg = numel(categories(Mfg))
numMfg = 28
numModelYear = numel(categories(Model_Year))
numModelYear = 3

Потому что есть 3 категории только в Cylinders и Model_Yearстандартный алгоритм разделения предиктора CART предпочитает разделение непрерывного предиктора по этим двум переменным.

Обучение случайного леса из 500 деревьев регрессии с использованием всего набора данных. Чтобы вырастить несмещенные деревья, укажите использование теста кривизны для расщепления предикторов. Поскольку в данных отсутствуют значения, укажите использование суррогатных разбиений. Чтобы воспроизвести выбор случайного предиктора, задайте начальное число генератора случайных чисел с помощью rng и указать 'Reproducible',true.

rng('default'); % For reproducibility
t = templateTree('PredictorSelection','curvature','Surrogate','on', ...
    'Reproducible',true); % For reproducibility of random predictor selections
Mdl = fitrensemble(X,'MPG','Method','bag','NumLearningCycles',500, ...
    'Learners',t);

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

options = statset('UseParallel',true);
imp = oobPermutedPredictorImportance(Mdl,'Options',options);
Starting parallel pool (parpool) using the 'local' profile ...
Connected to the parallel pool (number of workers: 6).

Сравните оценки с помощью гистограммы.

figure;
bar(imp);
title('Out-of-Bag Permuted Predictor Importance Estimates');
ylabel('Estimates');
xlabel('Predictors');
h = gca;
h.XTickLabel = Mdl.PredictorNames;
h.XTickLabelRotation = 45;
h.TickLabelInterpreter = 'none';

В этом случае Model_Year является наиболее важным предиктором, за которым следует Cylinders. Сравните эти результаты с результатами оценки важности предикторов.

Подробнее

развернуть все

Совет

При выращивании случайного леса с использованием fitrensemble:

  • Стандартная CART имеет тенденцию выбирать разделенные предикторы, содержащие много различных значений, например непрерывных переменных, по сравнению с теми, которые содержат несколько различных значений, например категориальных переменных [3]. Если набор данных предиктора неоднороден, или если есть предикторы, которые имеют относительно меньше отличных значений, чем другие переменные, то рассмотрите возможность указания теста кривизны или взаимодействия.

  • Деревья, выращенные с использованием стандартной CART, не чувствительны к переменным взаимодействиям предиктора. Кроме того, такие деревья с меньшей вероятностью идентифицируют важные переменные в присутствии многих неактуальных предикторов, чем применение теста взаимодействия. Поэтому для учета предикторных взаимодействий и определения переменных важности при наличии множества неактуальных переменных укажите тест взаимодействия [2].

  • Если обучающие данные включают много предикторов и требуется проанализировать важность предиктора, укажите 'NumVariablesToSample' из templateTree функция как 'all' для обучающихся на деревьях ансамбля. В противном случае программное обеспечение может не выбирать некоторые предикторы, недооценивая их важность.

Дополнительные сведения см. в разделе templateTree и выберите «Метод выбора разделенного предиктора».

Ссылки

[1] Брейман, Л., Дж. Фридман, Р. Ольшен и К. Стоун. Деревья классификации и регрессии. Бока Ратон, FL: CRC Press, 1984.

[2] О, W.Y. «Регрессионные деревья с несмещенным выбором переменных и обнаружением взаимодействия». Statistica Sinica, Vol. 12, 2002, pp. 361-386.

[3] Ло, У.Я. и Ю.С. Ших. «Разбить методы выбора для деревьев классификации». Statistica Sinica, том 7, 1997, стр. 815-840.

Расширенные возможности

Представлен в R2016b