predictorImportance

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

Синтаксис

imp = predictorImportance(tree)

Описание

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

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

tree

Дерево регрессии, созданное fitrtree, или методом compact.

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

imp

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

Примеры

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

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

Загрузите набор данных carsmall.

load carsmall

Вырастите дерево регрессии для MPG с помощью Acceleration, Cylinders, Displacement, Horsepower, Model_Year и Weight как предикторы.

X = [Acceleration Cylinders Displacement Horsepower Model_Year Weight];
tree = fitrtree(X,MPG);

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

imp = predictorImportance(tree)
imp = 1×6

    0.0647    0.1068    0.1155    0.1411    0.3348    2.6565

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

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

Загрузите набор данных carsmall.

load carsmall

Вырастите дерево регрессии для MPG с помощью Acceleration, Cylinders, Displacement, Horsepower, Model_Year и Weight как предикторы. Задайте, чтобы идентифицировать суррогатные разделения.

X = [Acceleration Cylinders Displacement Horsepower Model_Year Weight];
tree = fitrtree(X,MPG,'Surrogate','on');

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

imp = predictorImportance(tree)
imp = 1×6

    1.0449    2.4560    2.5570    2.5788    2.0832    2.8938

Сравнивая imp с результатами в Оценочной Важности Предиктора, Weight все еще оказывает большую часть влияния на пробег, но Cylinders является четвертым по важности предиктором.

Загрузите набор данных carsmall. Рассмотрите модель, которая предсказывает среднюю экономию топлива автомобиля, учитывая его ускорение, количество цилиндров, объема двигателя, лошадиной силы, производителя, модельный год и вес. Рассмотрите Cylinders, Mfg и Model_Year как категориальные переменные.

load carsmall
Cylinders = categorical(Cylinders);
Mfg = categorical(cellstr(Mfg));
Model_Year = categorical(Model_Year);
X = table(Acceleration,Cylinders,Displacement,Horsepower,Mfg,...
    Model_Year,Weight,MPG);

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

numCylinders = numel(categories(Cylinders))
numCylinders = 3
numMfg = numel(categories(Mfg))
numMfg = 28
numModelYear = numel(categories(Model_Year))
numModelYear = 3

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

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

Mdl = fitrtree(X,'MPG','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';

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

Больше о

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