oobPermutedPredictorImportance

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

Синтаксис

Imp = oobPermutedPredictorImportance(Mdl)
Imp = oobPermutedPredictorImportance(Mdl,Name,Value)

Описание

пример

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

пример

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

Входные параметры

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

Случайный лес деревьев классификации, заданных как объект модели ClassificationBaggedEnsemble, создается fitcensemble.

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

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (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).

Примеры

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

Загрузите набор данных census1994. Рассмотрите модель, которая предсказывает категорию зарплаты человека, учитывая их возраст, рабочий класс, образовательный уровень, военное состояние, гонку, пол, прирост капитала и потерю и номер рабочего времени в неделю.

load census1994
X = adultdata(:,{'age','workClass','education_num','marital_status','race',...
    'sex','capital_gain','capital_loss','hours_per_week','salary'});

Можно обучить случайный лес 50 деревьев классификации с помощью целого набора данных.

Mdl = fitcensemble(X,'salary','Method','Bag','NumLearningCycles',50);

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

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

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

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

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 9 вектор оценок важности предиктора. Большие значения указывают на предикторы, которые имеют большее влияние на прогнозы. В этом случае marital_status является самым важным предиктором, сопровождаемым capital_gain.

Загрузите набор данных census1994. Рассмотрите модель, которая предсказывает категорию зарплаты человека, учитывая их возраст, рабочий класс, образовательный уровень, военное состояние, гонку, пол, прирост капитала и потерю и номер рабочего времени в неделю.

load census1994
X = adultdata(:,{'age','workClass','education_num','marital_status','race', ...
    'sex','capital_gain','capital_loss','hours_per_week','salary'});

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

summary(X)
Variables:

    age: 32561×1 double

        Values:

            Min        17  
            Median     37  
            Max        90  

    workClass: 32561×1 categorical

        Values:

            Federal-gov              960   
            Local-gov               2093   
            Never-worked               7   
            Private                22696   
            Self-emp-inc            1116   
            Self-emp-not-inc        2541   
            State-gov               1298   
            Without-pay               14   
            NumMissing              1836   

    education_num: 32561×1 double

        Values:

            Min              1       
            Median          10       
            Max             16       

    marital_status: 32561×1 categorical

        Values:

            Divorced                       4443      
            Married-AF-spouse                23      
            Married-civ-spouse            14976      
            Married-spouse-absent           418      
            Never-married                 10683      
            Separated                      1025      
            Widowed                         993      

    race: 32561×1 categorical

        Values:

            Amer-Indian-Eskimo      311 
            Asian-Pac-Islander     1039 
            Black                  3124 
            Other                   271 
            White                 27816 

    sex: 32561×1 categorical

        Values:

            Female    10771
            Male      21790

    capital_gain: 32561×1 double

        Values:

            Min               0     
            Median            0     
            Max           99999     

    capital_loss: 32561×1 double

        Values:

            Min               0     
            Median            0     
            Max            4356     

    hours_per_week: 32561×1 double

        Values:

            Min               1       
            Median           40       
            Max              99       

    salary: 32561×1 categorical

        Values:

            <=50K     24720  
            >50K       7841  

Поскольку существует немного категорий, представленных в категориальных переменных по сравнению с уровнями в непрерывных переменных, стандартном CART, разделяющий предиктор алгоритм предпочитает разделять непрерывный предиктор по категориальным переменным.

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

rng('default') % For reproducibility
t = templateTree('PredictorSelection','curvature','Surrogate','on', ...
    'Reproducible',true); % For reproducibility of random predictor selections
Mdl = fitcensemble(X,'salary','Method','bag','NumLearningCycles',50, ...
    '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';

В этом случае capital_gain является самым важным предиктором, сопровождаемым martial_status. Сравните эти результаты с результатами в Оценочной Важности Предикторов.

Больше о

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

Советы

При росте случайного леса с помощью fitcensemble:

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

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

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

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

Ссылки

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

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

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

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

Введенный в R2017b