TreeBagger class

Мешок деревьев принятия решений

Описание

TreeBagger мешает ансамбль деревьев решений для классификации или регрессии. Bagging означает агрегацию загрузочных стропов. Каждое дерево ансамбля выращивается на независимо нарисованной загрузочной реплике входных данных. Наблюдения, не включенные в эту реплику, находятся «вне мешка» для этого дерева.

TreeBagger полагается на ClassificationTree и RegressionTree функциональность для выращивания отдельных деревьев. В частности, ClassificationTree и RegressionTree принимает количество функций, выбранных случайным образом для каждого разделения решения, как необязательный входной параметр. То есть TreeBagger реализует случайный алгоритм леса [1].

Для задач регрессии, TreeBagger поддерживает среднюю и квантовую регрессию (то есть лес регрессии квантиля [2]).

  • Чтобы предсказать средние отклики или оценить данные о средней квадратной ошибке, передайте TreeBagger модель и данные для predict или error, соответственно. Для выполнения аналогичных операций при наблюдениях вне мешка используйте oobPredict или oobError.

  • Чтобы оценить квантования распределения отклика или заданных данных о квантильной ошибке, передайте TreeBagger модель и данные для quantilePredict или quantileError, соответственно. Для выполнения аналогичных операций при наблюдениях вне мешка используйте oobQuantilePredict или oobQuantileError.

Конструкция

TreeBaggerСоздайте сумку деревьев принятия решений

Функции объекта

appendДобавьте новые деревья в ансамбль
compactКомпактный ансамбль деревьев решений
errorОшибка (вероятность неправильной классификации или MSE)
fillproxМатрица близости для обучающих данных
growTreesОбучите дополнительные деревья и добавьте в ансамбль
marginКлассификационный запас
mdsproxМногомерное масштабирование матрицы близости
meanMarginСредний классификационный запас
oobErrorОшибка вне сумки
oobMarginПоля вне сумки
oobMeanMarginСредние поля вне сумки
oobPredictАнсамблевые предсказания для наблюдений вне мешка
oobQuantileErrorКоличество вне мешка потери мешка регрессионных деревьев
oobQuantilePredictПредсказания квантиля для наблюдений вне мешка из мешка регрессионых деревьев
partialDependenceВычисление частичной зависимости
plotPartialDependenceСоздайте график частичной зависимости (PDP) и отдельные графики условного ожидания (ICE)
predictПрогнозируйте ответы с помощью ансамбля упакованных деревьев решений
quantileErrorПотеря квантиля с помощью сумки деревьев регрессии
quantilePredictСпрогнозируйте количество отклика с помощью сумки регрессионых деревьев

Свойства

ClassNames

Массив ячеек, содержащий имена классов для переменной отклика Y. Это свойство пустое для деревьев регрессии.

ComputeOOBPrediction

Логический флаг, определяющий, должны ли вычисляться внеболговые предсказания для обучающих наблюдений. Значение по умолчанию является false.

Если этот флаг true, доступны следующие свойства:

  • OOBIndices

  • OOBInstanceWeight

Если этот флаг trueможно вызвать следующие методы:

  • oobError

  • oobMargin

  • oobMeanMargin

ComputeOOBPredictorImportance

Логический флаг, определяющий, должны ли вычисляться оценки вне мешка переменной важности. Значение по умолчанию является false. Если этот флаг true, затем ComputeOOBPrediction также верно.

Если этот флаг true, доступны следующие свойства:

  • OOBPermutedPredictorDeltaError

  • OOBPermutedPredictorDeltaMeanMargin

  • OOBPermutedPredictorCountRaiseMargin

Cost

Квадратная матрица, где Cost(i,j) - стоимость классификации точки в класс j если его класс true i (т.е. строки соответствуют истинному классу, а столбцы - предсказанному классу). Порядок строк и столбцов Cost соответствует порядку классов в ClassNames. Количество строк и столбцов в Cost количество уникальных классов в ответе.

Это свойство:

  • только для чтения

  • пустой ([]) для ансамблей регрессионных деревьев

DefaultYfit

Значение по умолчанию, возвращаемое predict и oobPredict. The DefaultYfit свойство управляет тем, что предсказанное значение возвращается, когда предсказание невозможно. Для примера, когда oobPredict нужно предсказать для наблюдения, которое находится в мешке для всех деревьев ансамбля.

  • Для классификации можно задать для этого свойства любое '' или 'MostPopular'. Если вы выбираете 'MostPopular' (по умолчанию), значение свойства становится именем наиболее вероятно класса в обучающих данных. Если вы выбираете ''наблюдения в мешке исключаются из расчета ошибки вне мешка и запаса.

  • Для регрессии можно задать это свойство в любой числовой скаляр. Значение по умолчанию является средним значением отклика для обучающих данных. Если вы задаете это свойство равным NaNнаблюдения в мешке исключаются из расчета ошибки вне мешка и запаса.

DeltaCriterionDecisionSplit

Численный массив размера 1-by - Nvars изменений критерия разделения, суммированных по разделениям на каждой переменной, усредненный по всему ансамблю выращенных деревьев.

InBagFraction

Доля наблюдений, которые случайным образом выбираются с заменой для каждой реплики bootstrap. Размер каждой реплики Nobs × InBagFraction, где Nobs - количество наблюдений в набор обучающих данных. Значение по умолчанию является 1.

MergeLeaves

Логический флаг, определяющий, объединяются ли листья дерева решений с тем же родительским элементом для разделений, которые не уменьшают общий риск. Значение по умолчанию false.

Method

Метод, используемый деревьями. Возможные значения 'classification' для классификационных ансамблей и 'regression' для регрессионных ансамблей.

MinLeafSize

Минимальное количество наблюдений на лист дерева. По умолчанию MinLeafSize является 1 для классификации и 5 для регрессии. Для обучения дереву решений, MinParent значение установлено равным 2*MinLeafSize.

NumTrees

Скалярное значение, равное количеству деревьев принятия решений в ансамбле.

NumPredictorSplit

Числовой массив размера 1-by- Nvars, где каждый элемент дает количество разделений на этом предикторе, суммированных по всем деревьям.

NumPredictorsToSample

Количество переменных предиктора или функции для случайного выбора для каждого разделения решения. По умолчанию NumPredictorsToSample равен квадратному корню из общего количества переменных для классификации и одной трети от общего числа переменных для регрессии.

OOBIndices

Логический массив размера Nobs -by - NumTrees, где Nobs - количество наблюдений в обучающих данных и NumTrees - количество деревьев в ансамбле. A true значение для элемента (i, j) указывает, что i наблюдения находится вне мешка для древовидных j. Другими словами, i наблюдения не был выбран для обучающих данных, используемых для роста древовидных j.

OOBInstanceWeight

Числовой массив размера Nobs -by-1, содержащий количество деревьев, используемых для вычисления отклика вне мешка для каждого наблюдения. Nobs - количество наблюдений в обучающих данных, используемых для создания ансамбля.

OOBPermutedPredictorCountRaiseMargin

Числовой массив размера 1-by- Nvars, содержащий меру переменной важности для каждой переменной-предиктора ( функции). Для любой переменной мерой является различие между количеством приподнятых полей и количеством пониженных полей, если значения этой переменной перестановлены между наблюдениями вне мешка. Эта мера вычисляется для каждого дерева, затем усредняется по всему ансамблю и делится стандартным отклонением по всему ансамблю. Это свойство пустое для деревьев регрессии.

OOBPermutedPredictorDeltaError

Числовой массив размера 1-by- Nvars, содержащий меру важности для каждой переменной-предиктора ( функции). Для любой переменной мерой является увеличение ошибки предсказания, если значения этой переменной переключены между наблюдениями вне мешка. Эта мера вычисляется для каждого дерева, затем усредняется по всему ансамблю и делится стандартным отклонением по всему ансамблю.

OOBPermutedPredictorDeltaMeanMargin

Числовой массив размера 1-by- Nvars, содержащий меру важности для каждой переменной-предиктора ( функции). Для любой переменной мерой является уменьшение классификационного запаса, если значения этой переменной переключены между наблюдениями вне мешка. Эта мера вычисляется для каждого дерева, затем усредняется по всему ансамблю и делится стандартным отклонением по всему ансамблю. Это свойство пустое для деревьев регрессии.

OutlierMeasure

Численный массив размера Nobs -на-1, где Nobs - количество наблюдений в обучающих данных, содержащих измерения выбросов для каждого наблюдения.

Prior

Числовой вектор априорных вероятностей для каждого класса. Порядок элементов Prior соответствует порядку классов в ClassNames.

Это свойство:

  • только для чтения

  • пустой ([]) для ансамблей регрессионных деревьев

Proximity

Числовая матрица размера Nobs -by- Nobs, где Nobs - количество наблюдений в обучающих данных, содержащих меры близости между наблюдениями. Для любых двух наблюдений их близость определяется как часть деревьев, для которых эти наблюдения приземляются на одном листе. Это симметричная матрица с 1s на диагональном и off-диагональном элементах в диапазоне от 0 до 1.

Prune

The Prune свойство true, если деревья решений обрезаны и ложны, если они неизвестны. Обрезка деревьев решений не рекомендуется для ансамблей. Значение по умолчанию false.

SampleWithReplacement

Логический флаг, определяющий, отбираются ли данные для каждого дерева принятия решений с заменой. Это свойство true если TreeBagger выборки данных с заменой и false в противном случае. Значение по умолчанию true.

TreeArguments

Массив ячеек из аргументов для fitctree или fitrtree. Эти аргументы используются TreeBagger при выращивании новых деревьев для ансамбля.

Trees

Массив ячеек размером NumTrees -by-1, содержащий деревья в ансамбле .

SurrogateAssociation

Матрица размера Nvars -by - Nvars с прогнозирующими показателями переменной ассоциации, усредненная по всему ансамблю выращенных деревьев. Если вы вырастили обстановку ансамбля 'surrogate' на 'on'эта матрица для каждого дерева заполнена прогнозирующими показателями ассоциации, усредненными по суррогатным разделениям. Если вы вырастили обстановку ансамбля 'surrogate' на 'off' (по умолчанию), SurrogateAssociation является диагональным.

PredictorNames

Массив ячеек, содержащий имена переменных предиктора ( функций). TreeBagger берёт эти имена из необязательного 'names' параметр. Имена по умолчанию 'x1', 'x2', и т.д.

W

Числовой вектор весов Nobs длины, где Nobs - количество наблюдений (строк) в обучающих данных. TreeBagger использует эти веса для выращивания каждого дерева решений в ансамбле. Значение по умолчанию W является ones(Nobs,1).

X

Таблица или числовая матрица размера Nobs -by - Nvars, где Nobs - количество наблюдений (строк) и Nvars - количество переменных (столбцов) в обучающих данных. Если вы обучаете ансамбль с помощью таблицы значений предикторов, то X является таблицей. Если вы обучаете ансамбль с помощью матрицы значений предиктора, то X является матрицей. Это свойство содержит значения предиктора (или функции).

Y

Размер Nobs массив данных отклика. Элементы Y соответствуют строкам X. Для классификации, Y - набор меток истинных классов. Метки могут быть любой сгруппированной переменной, то есть числовым или логическим вектором, символом матрицей, строковыми массивами, массивом ячеек векторов символов или категориальным вектором. TreeBagger преобразует метки в массив ячеек из векторов символов для классификации. Для регрессии, Y является числовым вектором.

Примеры

свернуть все

Загрузите набор данных радужки Фишера.

load fisheriris

Обучите ансамбль пакетированных классификационных деревьев, используя весь набор данных. Задайте 50 слабые ученики. Храните, какие наблюдения находятся вне мешка для каждого дерева.

rng(1); % For reproducibility
Mdl = TreeBagger(50,meas,species,'OOBPrediction','On',...
    'Method','classification')
Mdl = 
  TreeBagger
Ensemble with 50 bagged decision trees:
                    Training X:              [150x4]
                    Training Y:              [150x1]
                        Method:       classification
                 NumPredictors:                    4
         NumPredictorsToSample:                    2
                   MinLeafSize:                    1
                 InBagFraction:                    1
         SampleWithReplacement:                    1
          ComputeOOBPrediction:                    1
 ComputeOOBPredictorImportance:                    0
                     Proximity:                   []
                    ClassNames:        'setosa'    'versicolor'     'virginica'

  Properties, Methods

Mdl является TreeBagger ансамбль.

Mdl.Trees хранит вектор камер 50 на 1 обученных деревьев классификации (CompactClassificationTree моделировать объекты), которые составляют ансамбль.

Постройте график первого обученного классификационного дерева.

view(Mdl.Trees{1},'Mode','graph')

Figure Classification tree viewer contains an axes and other objects of type uimenu, uicontrol. The axes contains 21 objects of type line, text.

По умолчанию TreeBagger выращивает глубокие деревья.

Mdl.OOBIndices сохраняет индексы вне сумки как матрицу логических значений.

Постройте график ошибки вне сумки по количеству выращенных деревьев классификации.

figure;
oobErrorBaggedEnsemble = oobError(Mdl);
plot(oobErrorBaggedEnsemble)
xlabel 'Number of grown trees';
ylabel 'Out-of-bag classification error';

Figure contains an axes. The axes contains an object of type line.

Ошибка вне сумки уменьшается с количеством выращенных деревьев.

Чтобы пометить наблюдения вне мешка, передайте Mdl на oobPredict.

Загрузите carsmall набор данных. Рассмотрим модель, которая предсказывает расход топлива автомобиля с учетом объема его двигателя.

load carsmall

Обучите ансамбль мешанных регрессионных деревьев, используя весь набор данных. Укажите 100 слабых учащихся.

rng(1); % For reproducibility
Mdl = TreeBagger(100,Displacement,MPG,'Method','regression');

Mdl является TreeBagger ансамбль.

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

Для десяти одинаковых оборотов двигателя между минимальным и максимальным рабочим объемом в выборке прогнозируйте условные средние отклики и условные квартили.

predX = linspace(min(Displacement),max(Displacement),10)';
mpgMean = predict(Mdl,predX);
mpgQuartiles = quantilePredict(Mdl,predX,'Quantile',[0.25,0.5,0.75]);

Постройте графики наблюдений и предполагаемых средних откликов и квартилей на том же рисунке.

figure;
plot(Displacement,MPG,'o');
hold on
plot(predX,mpgMean);
plot(predX,mpgQuartiles);
ylabel('Fuel economy');
xlabel('Engine displacement');
legend('Data','Mean Response','First quartile','Median','Third quartile');

Figure contains an axes. The axes contains 5 objects of type line. These objects represent Data, Mean Response, First quartile, Median, Third quartile.

Загрузите 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);
rng('default'); % For reproducibility

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

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

Потому что существует 3 категории только в Cylinders и Model_Yearстандартный алгоритм разделения предикторов ТЕЛЕЖКА предпочитает разделение непрерывного предиктора над этими двумя переменными.

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

Mdl = TreeBagger(200,X,'MPG','Method','regression','Surrogate','on',...
    'PredictorSelection','curvature','OOBPredictorImportance','on');

TreeBagger хранит оценки предикторной важности в свойстве OOBPermutedPredictorDeltaError. Сравните оценки с помощью гистограммы.

imp = Mdl.OOBPermutedPredictorDeltaError;

figure;
bar(imp);
title('Curvature Test');
ylabel('Predictor importance estimates');
xlabel('Predictors');
h = gca;
h.XTickLabel = Mdl.PredictorNames;
h.XTickLabelRotation = 45;
h.TickLabelInterpreter = 'none';

Figure contains an axes. The axes with title Curvature Test contains an object of type bar.

В этом случае Model_Year является наиболее важным предиктором, за которым следуют Weight.

Сравните imp к оценкам предикторной важности, вычисленным из случайного леса, который выращивает деревья с помощью стандартной ТЕЛЕЖКА.

MdlCART = TreeBagger(200,X,'MPG','Method','regression','Surrogate','on',...
    'OOBPredictorImportance','on');

impCART = MdlCART.OOBPermutedPredictorDeltaError;

figure;
bar(impCART);
title('Standard CART');
ylabel('Predictor importance estimates');
xlabel('Predictors');
h = gca;
h.XTickLabel = Mdl.PredictorNames;
h.XTickLabelRotation = 45;
h.TickLabelInterpreter = 'none';

Figure contains an axes. The axes with title Standard CART contains an object of type bar.

В этом случае Weight, непрерывный предиктор, является самым важным. Следующие два наиболее важных предиктора Model_Year за которым внимательно следуют Horsepower, который является непрерывным предиктором.

Копировать семантику

Значение. Чтобы узнать, как это влияет на использование класса, смотрите Сравнение указателя и классов значений в MATLAB® Объектно-ориентированная документация по программированию.

Совет

Для TreeBagger объект модели B, а Trees свойство сохраняет вектор камеры B.NumTrees CompactClassificationTree или CompactRegressionTree объекты модели. Для текстового или графического отображения древовидных t в векторе камеры введите

view(B.Trees{t})

Альтернативная функциональность

Statistics and Machine Learning Toolbox™ предлагает три объекта для мешков и случайных лесов:

Для получения дополнительной информации о различиях между TreeBagger и пакетированные ансамбли (ClassificationBaggedEnsemble и RegressionBaggedEnsemble), см. Сравнение TreeBagger и Bagged Ensembles.

Ссылки

[1] Breiman, L. «Random Forests». Машинное обучение 45, стр. 5-32, 2001.

[2] Meinshausen, N. «Quantle Regression Forests». Journal of Машинное Обучение Research, Vol. 7, 2006, pp. 983-999.