oobPermutedPredictorImportance

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

Описание

пример

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

пример

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

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

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

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

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

Задайте необязательные разделенные разделенными запятой парами 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).

Примеры

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

Загрузите 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';

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

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  

Поскольку в категориальных переменных представлено немного категорий по сравнению с уровнями в непрерывных переменных, стандартный алгоритм разделения предикторов ТЕЛЕЖКА предпочитает разделение непрерывного предиктора над категориальными переменными.

Обучите случайный лес из 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:

  • Стандартная ТЕЛЕЖКА имеет тенденцию выбирать разделенные предикторы, содержащие много различных значений, например, непрерывных переменных, по сравнению с теми, которые содержат несколько различных значений, например, категориальные переменные [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