oobPermutedPredictorImportance

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

Описание

пример

Imp = oobPermutedPredictorImportance(Mdl) возвращает вектор out-of-bag, предикторных оценок важности путем сочетания с помощью случайного леса деревьев регрессии 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)

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

расширить все

Out-of-bag, предиктор важности оценивает путем сочетания, возвращается как 1-байтовый p числовой вектор. p - количество переменных предиктора в обучающих данных (size(Mdl.X,2)). Имп (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стандартный алгоритм разделения предикторов ТЕЛЕЖКА предпочитает разделение непрерывного предиктора над этими двумя переменными.

Обучите случайный лес из 500 регрессионых деревьев, используя весь набор данных. Чтобы вырастить объективные деревья, задайте использование теста кривизны для разделения предикторов. Поскольку в данных отсутствуют значения, задайте использование суррогатных разделений. Чтобы воспроизвести случайные выборки предиктора, установите seed генератора случайных чисел при помощи 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:

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

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

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

Для получения дополнительной информации см. templateTree и выберите Split Predictor Selection Technique.

Ссылки

[1] Breiman, L., J. Friedman, R. Olshen, and C. Stone. Деревья классификации и регрессии. Бока Ратон, FL: CRC Press, 1984.

[2] Loh, W.Y. «Regression Trees with Unbiased Variable Selection and Interaction Detection». Statistica Sinica, Vol. 12, 2002, pp. 361-386.

[3] Loh, W.Y. and Y.S. Shih. «Разделение методов выбора для деревьев классификации». Statistica Sinica, Vol. 7, 1997, pp. 815-840.

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

Введенный в R2016b