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.

Больше о

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