Оценки важности предиктора для дерева регрессии
imp = predictorImportance(tree)
вычисляет оценки важности предиктора для imp
= predictorImportance(tree
)tree
путем подведения итогов изменений в среднеквадратической ошибке из-за разделений на каждом предикторе и деления суммы на количество узлов ветви.
|
Вектор-строка с тем же числом элементов как количество предикторов (столбцы) в |
Оцените важность предиктора для всех переменных предикторов в данных.
Загрузите 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
.
predictorImportance
вычисляет оценки важности предиктора для tree
путем подведения итогов изменений в среднеквадратической ошибке (MSE) из-за разделений на каждом предикторе и деления суммы на количество узлов ветви. Если дерево выращено без суррогатных разделений, эта сумма взята по лучшим разделениям, найденным в каждом узле ветви. Если дерево выращено с суррогатными разделениями, эта сумма взята по всем разделениям в каждом узле ветви включая суррогатные разделения. imp
имеет один элемент для каждого входного предиктора в данных, используемых, чтобы обучить это дерево. В каждом узле MSE оценивается как ошибка узла, взвешенная вероятностью узла. Переменная важность, сопоставленная с этим разделением, вычисляется как различие между MSE для родительского узла и общим MSE для двух дочерних элементов.
Оценки важности предиктора не зависят от порядка предикторов, если вы используете суррогатные разделения, но действительно зависите от порядка, если вы не используете суррогатные разделения.
Если вы используете суррогатные разделения, predictorImportance
вычисляет оценки, прежде чем дерево будет уменьшаться путем сокращения или слияния листов. Если вы не используете суррогатные разделения, predictorImportance
вычисляет оценки после того, как дерево будет уменьшаться путем сокращения или слияния листов. Поэтому сокращение дерева сокращением влияет на важность предиктора для дерева, выращенного без суррогатных разделений, и не влияет на важность предиктора для дерева, выращенного с суррогатными разделениями.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.