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