exponenta event banner

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';

Figure contains an axes. The axes with title Predictor Importance Estimates contains an object of type bar.

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

Подробнее

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