predictorImportance

Оценки важности предиктора

Синтаксис

imp = predictorImportance(tree)

Описание

imp = predictorImportance(tree) вычисляет оценки важности предиктора для tree путем подведения итогов изменений в риске из-за разделений на каждом предикторе и деления суммы на количество узлов ответвления.

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

tree

Дерево классификации, созданное fitctree, или методом compact.

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

imp

Вектор - строка с тем же числом элементов как количество предикторов (столбцы) в tree .X. Записи являются оценками важности предиктора с 0, представляющим наименьшую важность.

Примеры

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

Загрузите ирисовый набор данных Фишера.

load fisheriris

Вырастите дерево классификации.

Mdl = fitctree(meas,species);

Вычислите оценки важности предиктора для всех переменных прогноза.

imp = predictorImportance(Mdl)
imp = 1×4

         0         0    0.0907    0.0682

Первые два элемента imp являются нулем. Поэтому первые два предиктора не вводят в вычисления Mdl для классификации ирисовых диафрагм.

Оценки важности предиктора не зависят от порядка предикторов, если вы используете суррогатные разделения, но действительно зависите от порядка, если вы не используете суррогатные разделения.

Переставьте порядок столбцов данных в предыдущем примере, вырастите другое дерево классификации, и затем вычислите оценки важности предиктора.

measPerm  = meas(:,[4 1 3 2]);
MdlPerm = fitctree(measPerm,species);
impPerm = predictorImportance(MdlPerm)
impPerm = 1×4

    0.1515         0    0.0074         0

Оценки важности предиктора не являются перестановкой imp.

Загрузите ирисовый набор данных Фишера.

load fisheriris

Вырастите дерево классификации. Задайте использование суррогатных разделений.

Mdl = fitctree(meas,species,'Surrogate','on');

Вычислите оценки важности предиктора для всех переменных прогноза.

imp = predictorImportance(Mdl)
imp = 1×4

    0.0791    0.0374    0.1530    0.1529

Все предикторы имеют некоторую важность. Первые два предиктора менее важны, чем итоговые два.

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

measPerm  = meas(:,[4 1 3 2]);
MdlPerm = fitctree(measPerm,species,'Surrogate','on');
impPerm = predictorImportance(MdlPerm)
impPerm = 1×4

    0.1529    0.0791    0.1530    0.0374

Оценки важности предиктора являются перестановкой imp.

Загрузите набор данных 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: 32561x1 double

        Values:

            Min        17  
            Median     37  
            Max        90  

    workClass: 32561x1 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: 32561x1 double

        Values:

            Min              1       
            Median          10       
            Max             16       

    marital_status: 32561x1 categorical

        Values:

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

    race: 32561x1 categorical

        Values:

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

    sex: 32561x1 categorical

        Values:

            Female    10771
            Male      21790

    capital_gain: 32561x1 double

        Values:

            Min               0     
            Median            0     
            Max           99999     

    capital_loss: 32561x1 double

        Values:

            Min               0     
            Median            0     
            Max            4356     

    hours_per_week: 32561x1 double

        Values:

            Min               1       
            Median           40       
            Max              99       

    salary: 32561x1 categorical

        Values:

            <=50K     24720  
            >50K       7841  

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

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

Mdl = fitctree(X,'salary','PredictorSelection','curvature',...
    'Surrogate','on');

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

imp = predictorImportance(Mdl);

figure;
bar(imp);
title('Predictor Importance Estimates');
ylabel('Estimates');
xlabel('Predictors');
h = gca;
h.XTickLabel = Mdl.PredictorNames;
h.XTickLabelRotation = 45;
h.TickLabelInterpreter = 'none';

В этом случае capital_gain является самым важным предиктором, сопровождаемым education_num.

Больше о

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