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. Обученный (learners) только, где learners значение 'Learners'.

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

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

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

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

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

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

Из сумки, оценки важности предиктора сочетания, возвращенного как 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';

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

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

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

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

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

Ссылки

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

[2] Loh, W.Y. “Деревья регрессии с Несмещенным Обнаружением Выбора переменной и Взаимодействия”. Statistica Sinica, Издание 12, 2002, стр 361–386.

[3] Loh, В.И. и И.С. Ши. “Разделите Методы выбора для Деревьев Классификации”. Statistica Sinica, Издание 7, 1997, стр 815–840.

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

Введенный в R2017b