Оценки важности предиктора для дерева классификации
imp = predictorImportance(tree)
вычисляет оценки важности предиктора для imp = predictorImportance(tree)tree путем подведения итогов изменений в риске из-за разделений на каждом предикторе и деления суммы на количество узлов ветви.
|
Вектор-строка с тем же числом элементов как количество предикторов (столбцы) в |
Загрузите ирисовый набор данных Фишера.
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.
predictorImportance вычисляет меры по важности предикторов в дереве путем подведения итогов изменений в риске узла из-за разделений на каждом предикторе и затем деления суммы общим количеством узлов ветви. Изменение в риске узла является различием между риском для родительского узла и общим риском для двух дочерних элементов. Например, если дерево разделяет родительский узел (например, узел 1) в два дочерних узла (например, узлы 2 и 3), то predictorImportance увеличивает важность предиктора разделения
(R1 – R2 – R3)/Nbranch,
где Ri является риском узла узла i, и ветвь N является общим количеством узлов ветви. node risk задан как ошибка узла или примесь узла, взвешенная вероятностью узла:
Ri = Pi Ei,
где Pi является вероятностью узла узла i, и Ei является любой ошибкой узла (для дерева, выращенного путем минимизации twoing критерия) или примесь узла (для дерева, выращенного путем минимизации примесного критерия, такого как индекс Gini или отклонение) узла i.
Оценки важности предиктора зависят от того, используете ли вы суррогатные разделения для обучения.
Если вы используете суррогатные разделения, predictorImportance суммирует изменения в риске узла по всем разделениям в каждом узле ветви, включая суррогатные разделения. Если вы не используете суррогатные разделения, то функция берет сумму по лучшим разделениям, найденным в каждом узле ветви.
Оценки важности предиктора не зависят от порядка предикторов, если вы используете суррогатные разделения, но действительно зависите от порядка, если вы не используете суррогатные разделения.
Если вы используете суррогатные разделения, predictorImportance вычисляет оценки, прежде чем дерево будет уменьшаться путем сокращения (или слияния листов). Если вы не используете суррогатные разделения, predictorImportance вычисляет оценки после того, как дерево будет уменьшаться путем сокращения. Поэтому сокращение влияет на важность предиктора для дерева, выращенного без суррогатных разделений, и не влияет на важность предиктора для дерева, выращенного с суррогатными разделениями.
Дерево решений разделяет узлы или на основе impurity или на основе node error.
Примесь означает одну из нескольких вещей, в зависимости от вашего выбора SplitCriterion аргумент пары "имя-значение":
Индекс разнообразия Джини (gdi) — Индекс Gini узла
где суммой является по классам i в узле, и p (i) является наблюдаемой частью классов с классом i, которые достигают узла. Узел со всего одним классом (узел pure) сделал, чтобы Gini индексировал 0; в противном случае индекс Gini положителен. Таким образом, индекс Gini является мерой примеси узла.
Отклонение ('deviance') — С p (i) задал то же самое что касается индекса Gini, отклонение узла
Чистый узел имеет отклонение 0; в противном случае отклонение положительно.
Правило Twoing ('twoing') — Twoing не является мерой по чистоте узла, но является различной мерой для решения, как разделить узел. Позволенный L (i) обозначает часть членов класса i в левом дочернем узле после разделения, и R (i) обозначает часть членов класса i в правильном дочернем узле после разделения. Выберите критерий разделения, чтобы максимизировать
где P (L) и P (R) является частями наблюдений, которые разделяют налево и право соответственно. Если выражение является большим, разделение сделало каждый дочерний узел более чистым. Точно так же, если выражение мало, разделение сделало каждый дочерний узел похожим друг на друга, и поэтому похожим на родительский узел. Разделение не увеличило чистоту узла.
Ошибка узла — ошибка узла является частью неправильно классифицированных классов в узле. Если j является классом с наибольшим числом обучающих выборок в узле, ошибка узла
1 – p (j).
Эта функция полностью поддерживает массивы графического процессора. Для получения дополнительной информации смотрите функции MATLAB Запуска на графическом процессоре (Parallel Computing Toolbox).
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.