TreeBagger class

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

Описание

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

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

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

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

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

Конструкция

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

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

appendДобавьте новые деревья ансамблю
compactКомпактный ансамбль деревьев решений
errorОшибка (misclassification вероятность или MSE)
fillproxМатрица близости для обучающих данных
growTreesОбучите дополнительные деревья и добавьте к ансамблю
marginПоле классификации
mdsproxМногомерное масштабирование матрицы близости
meanMarginСреднее поле классификации
oobErrorОшибка из сумки
oobMarginПоля из сумки
oobMeanMarginСредние поля из сумки
oobPredictПредсказания ансамбля для наблюдений из сумки
oobQuantileErrorПотеря квантиля из сумки мешка деревьев регрессии
oobQuantilePredictПредсказания квантиля для наблюдений из сумки от мешка деревьев регрессии
partialDependenceВычислите частичную зависимость
plotPartialDependenceСоздайте графики отдельного условного ожидания (ICE) и частичный график зависимости (PDP)
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 если его истинным классом является i (т.е. строки соответствуют истинному классу, и столбцы соответствуют предсказанному классу). Порядок строк и столбцов Cost соответствует порядку классов в ClassNames. Количество строк и столбцов в Cost количество уникальных классов в ответе.

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

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

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

DefaultYfit

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

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

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

DeltaCriterionDecisionSplit

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

InBagFraction

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

MergeLeaves

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

Method

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

MinLeafSize

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

NumTrees

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

NumPredictorSplit

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

NumPredictorsToSample

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

OOBIndices

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

OOBInstanceWeight

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

OOBPermutedPredictorCountRaiseMargin

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

OOBPermutedPredictorDeltaError

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

OOBPermutedPredictorDeltaMeanMargin

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

OutlierMeasure

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

Prior

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

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

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

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

Proximity

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

Prune

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

SampleWithReplacement

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

TreeArguments

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

Trees

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

SurrogateAssociation

Матрица A размера 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')

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

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

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

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

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

Чтобы пометить наблюдения из сумки, передайте 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');

Загрузите 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, стандартный CART, разделяющий предиктор алгоритм предпочитает разделять непрерывный предиктор по этим двум переменным.

Обучите случайный лес 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';

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

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

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';

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

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

Значение. Чтобы изучить, как это влияет на ваше использование класса, смотрите Сравнение Указателя и Классов Значения в документации MATLAB® Object-Oriented Programming.

Советы

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

view(B.Trees{t})

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

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

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

Ссылки

[1] Бреимен, L. Случайные Леса. Машинное обучение 45, стр 5–32, 2001.

[2] Meinshausen, N. “Леса Регрессии квантиля”. Журнал Исследования Машинного обучения, Издания 7, 2006, стр 983–999.