exponenta event banner

oobPermutedPredictorImportance

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

Описание

пример

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

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

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

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

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  

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

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

Ссылки

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

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

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

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

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