TreeBagger

Класс: TreeBagger

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

Отдельные деревья решений имеют тенденцию сверхсоответствовать. Агрегированный начальной загрузкой (bagged) деревья решений комбинируют результаты многих деревьев решений, который уменьшает эффекты сверхподбора кривой и улучшает обобщение. TreeBagger выращивает деревья решений в ансамбле, использующем выборки начальной загрузки данных. Кроме того, TreeBagger выбирает случайное подмножество предикторов, чтобы использовать в каждом разделении решения в качестве в случайном лесном алгоритме [1].

По умолчанию, TreeBagger деревья классификации сумок. К деревьям регрессии сумки вместо этого, задайте 'Method','regression'.

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

Синтаксис

Mdl = TreeBagger(NumTrees,Tbl,ResponseVarName)
Mdl = TreeBagger(NumTrees,Tbl,formula)
Mdl = TreeBagger(NumTrees,Tbl,Y)
B = TreeBagger(NumTrees,X,Y)
B = TreeBagger(NumTrees,X,Y,Name,Value)

Описание

Mdl = TreeBagger(NumTrees,Tbl,ResponseVarName) возвращает ансамбль NumTrees сложенные в мешок деревья классификации обучили использование выборочных данных в таблице Tbl. ResponseVarName имя переменной отклика в Tbl.

Mdl = TreeBagger(NumTrees,Tbl,formula) возвращает ансамбль сложенных в мешок деревьев классификации, обученных с помощью выборочных данных в таблице Tbl. formula объяснительная модель ответа и подмножество переменных предикторов в Tbl используемый, чтобы соответствовать Mdl. Задайте Formula использование обозначения Уилкинсона. Для получения дополнительной информации смотрите Обозначение Уилкинсона.

Mdl = TreeBagger(NumTrees,Tbl,Y) возвращает ансамбль деревьев классификации с помощью переменных предикторов в таблице Tbl и класс помечает в векторном Y.

Y массив данных об ответе. Элементы Y соответствуйте строкам Tbl. Для классификации, Y набор истинных меток класса. Метки могут быть любой сгруппированной переменной, то есть, числовым или логическим вектором, символьной матрицей, массивом строк, массивом ячеек из символьных векторов или категориальным вектором. TreeBagger преобразует метки в массив ячеек из символьных векторов. Для регрессии, Y числовой вектор. Чтобы вырастить деревья регрессии, необходимо задать пару "имя-значение" 'Method','regression'.

B = TreeBagger(NumTrees,X,Y) создает ансамбль B из NumTrees деревья решений для предсказания ответа Y как функция предикторов в числовой матрице обучающих данных, X. Каждая строка в X представляет наблюдение, и каждый столбец представляет предиктор или функцию.

B = TreeBagger(NumTrees,X,Y,Name,Value) задает дополнительные пары "имя-значение" параметра:

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

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

В качестве альтернативы cost может быть структура S наличие двух полей:

  • S.ClassNames содержа названия группы как категориальную переменную, символьный массив, массив строк или массив ячеек из символьных векторов

  • S.ClassificationCosts содержа матрицу стоимости C

Значением по умолчанию является   C(i,j) = 1 если   i ~= j, и   C(i,j) = 0 если   i = j.

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

'SampleWithReplacement''on' к выборке с заменой или 'off' к выборке без замены. Если вы производите без замены, необходимо установить 'InBagFraction' к значению меньше чем один. Значением по умолчанию является 'on'.
'OOBPrediction''on' сохранить информацию о том, что наблюдения вне сумки для каждого дерева. Эта информация может использоваться oobPrediction вычислить предсказанные вероятности класса для каждого дерева в ансамбле. Значением по умолчанию является 'off'.
'OOBPredictorImportance''on' сохранить оценки из сумки важности функции в ансамбле. Значением по умолчанию является 'off'. Определение 'on' также устанавливает 'OOBPrediction' значение к 'on'. Если анализ важности предиктора является вашей целью, то также задают 'PredictorSelection','curvature' или 'PredictorSelection','interaction-curvature'. Для получения дополнительной информации смотрите fitctree или fitrtree.
'Method'Любой 'classification' или 'regression'. Регрессия требует числового Y.
'NumPredictorsToSample'Количество переменных, чтобы выбрать наугад для каждого разделения решения. Значением по умолчанию является квадратный корень из количества переменных для классификации и одной трети количества переменных для регрессии. Допустимыми значениями является 'all' или положительное целое число. Установка этого аргумента к любому допустимому значению, но 'all' вызывает Breiman's случайный лесной алгоритм [1].
'NumPrint'Количество учебных циклов (выращенные деревья), после который TreeBagger отображает диагностическое сообщение, показывающее прогресс обучения. Значением по умолчанию не являются никакие диагностические сообщения.
'MinLeafSize'Минимальное количество наблюдений на древовидный лист. Значение по умолчанию 1 для классификации и 5 для регрессии.
'Options'

Структура, которая задает опции, которые управляют расчетом при росте ансамбля деревьев решений. Одна опция запрашивает, чтобы расчет деревьев решений на нескольких загрузился, реплицирует, использует несколько процессоров, если Parallel Computing Toolbox™ доступен. Две опции указывают, что потоки случайных чисел, чтобы использовать в выборе начальной загрузки реплицируют. Можно создать этот аргумент с вызовом statset. Можно получить значения отдельных полей с вызовом statget. Применимый statset параметры:

  • 'UseParallel' — Если true и если parpool из Parallel Computing Toolbox открыто, вычислите деревья решений, продвинутые, отдельная начальная загрузка реплицирует параллельно. Если Parallel Computing Toolbox не установлен, или parpool не открыто, расчет происходит в последовательном режиме. Значением по умолчанию является false, или последовательный расчет.

    Для двухъядерных систем и выше, TreeBagger параллелизирует обучение с помощью Intel® Threading Building Blocks (TBB). Поэтому использование 'UseParallel' опция не полезна на одиночном компьютере. Используйте эту опцию на кластере. Для получения дополнительной информации на Intel TBB, см. https://software.intel.com/en-us/intel-tbb.

  • 'UseSubstreams' — Если true выбор каждая начальная загрузка реплицирует использование отдельного Подпотока генератора случайных чисел (иначе Поток). Эта опция доступна только с RandStream типы, которые поддерживают Подпотоки: 'mlfg6331_64' или 'mrg32k3a'. Значением по умолчанию является false, не используйте различный Подпоток, чтобы вычислить каждую начальную загрузку, реплицируют.

  • StreamsRandStream объектный массив или массив ячеек таких объектов. Если вы не задаете Streams, TreeBagger использует поток по умолчанию или потоки. Если вы принимаете решение задать Streams, используйте отдельный объект кроме случая

    • UseParallel true

    • UseSubstreams false

    В этом случае используйте массив ячеек тот же размер в качестве Параллельного пула.

'Prior'

Априорные вероятности для каждого класса. Задайте как один из:

  • Вектор символов или скаляр строки:

    • 'Empirical' определяет вероятности класса из частот класса в Y. Если вы передаете веса наблюдения, они используются для расчета вероятности класса. Это значение по умолчанию.

    • 'Uniform' наборы все равные вероятности класса.

  • Вектор (одно скалярное значение для каждого класса). Порядок элементов Prior соответствует порядку классов в ClassNames свойство обученного TreeBagger модель B.

  • Структура S с двумя полями:

    • S.ClassNames содержа имена классов как категориальную переменную, символьный массив, массив строк или массив ячеек из символьных векторов

    • S.ClassProbs содержа вектор соответствующих вероятностей

Если вы устанавливаете значения для обоих Weights и Prior, веса повторно нормированы, чтобы составить в целом значение априорной вероятности в соответствующем классе.

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

'PredictorNames'

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

  • Если вы предоставляете X и Y, затем можно использовать 'PredictorNames' дать переменные предикторы в X имена.

    • Порядок имен в PredictorNames должен соответствовать порядку следования столбцов X. Таким образом, PredictorNames{1} имя X(:,1)PredictorNames{2} имя X(:,2), и так далее. Кроме того, size(X,2) и numel(PredictorNames) должно быть равным.

    • По умолчанию, PredictorNames  {'x1','x2',...}.

  • Если вы предоставляете Tbl, затем можно использовать 'PredictorNames' выбрать который переменные предикторы использовать в обучении. Таким образом, TreeBagger использует переменные предикторы в PredictorNames и ответ только в обучении.

    • PredictorNames должно быть подмножество Tbl.Properties.VariableNames и не может включать имя переменной отклика.

    • По умолчанию, PredictorNames содержит имена всех переменных предикторов.

    • Это хорошая практика, чтобы задать предикторы для обучения с помощью одного из 'PredictorNames' или formula только.

'CategoricalPredictors'

Категориальный список предикторов, заданный как разделенная запятой пара, состоящая из 'CategoricalPredictors' и одно из следующих.

  • Числовой вектор с индексами от 1 к p, где p количество столбцов X.

  • Логический вектор длины p, где true запись означает что соответствующий столбец X категориальная переменная.

  • Массив строк или массив ячеек из символьных векторов, где каждый элемент в массиве является именем переменного предиктора. Имена должны совпадать с записями в PredictorNames значения.

  • Символьная матрица, где каждая строка матрицы является именем переменного предиктора. Имена должны совпадать с записями в PredictorNames значения. Заполните имена дополнительными пробелами, таким образом, каждая строка символьной матрицы имеет ту же длину.

  • 'all', значение всех предикторов является категориальным.

'ChunkSize'

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

Примечание

Эта опция только применяется при использовании TreeBagger на длинных массивах. Смотрите Расширенные Возможности для получения дополнительной информации.

В дополнение к дополнительным аргументам выше, TreeBagger принимает их дополнительный fitctree и fitrtree аргументы.

Примеры

развернуть все

Загрузите ирисовый набор данных Фишера.

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, который является непрерывным предиктором.

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

Когда вы выполняете вычисления на длинных массивах, MATLAB® использует любого параллельный пул (значение по умолчанию, если у вас есть Parallel Computing Toolbox™), или локальный сеанс работы с MATLAB. Если вы хотите запустить пример с помощью локального сеанса работы с MATLAB, когда у вас есть Parallel Computing Toolbox, можно изменить глобальную среду выполнения при помощи mapreducer функция.

Создайте datastore, который ссылается на местоположение папки, содержащей набор данных. Выберите подмножество переменных, чтобы работать с и обработать 'NA' значения как недостающие данные так, чтобы datastore заменяет их на NaN значения. Составьте длинную таблицу, которая содержит данные в datastore.

ds = datastore('airlinesmall.csv');
ds.SelectedVariableNames = {'Month','DayofMonth','DayOfWeek',...
                            'DepTime','ArrDelay','Distance','DepDelay'};
ds.TreatAsMissing = 'NA';
tt  = tall(ds) % Tall table
Starting parallel pool (parpool) using the 'local' profile ...
Connected to the parallel pool (number of workers: 12).

tt =

  Mx7 tall table

    Month    DayofMonth    DayOfWeek    DepTime    ArrDelay    Distance    DepDelay
    _____    __________    _________    _______    ________    ________    ________

     10          21            3          642          8         308          12   
     10          26            1         1021          8         296           1   
     10          23            5         2055         21         480          20   
     10          23            5         1332         13         296          12   
     10          22            4          629          4         373          -1   
     10          28            3         1446         59         308          63   
     10           8            4          928          3         447          -2   
     10          10            6          859         11         954          -1   
      :          :             :           :          :           :           :
      :          :             :           :          :           :           :

Определите рейсы, которые являются поздними на 10 минут или больше путем определения логической переменной, которая верна для позднего рейса. Эта переменная содержит метки класса. Предварительный просмотр этой переменной включает первые несколько строк.

Y = tt.DepDelay > 10 % Class labels
Y =

  Mx1 tall logical array

   1
   0
   1
   1
   0
   1
   0
   0
   :
   :

Создайте длинный массив для данных о предикторе.

X = tt{:,1:end-1} % Predictor data
X =

  Mx6 tall double matrix

          10          21           3         642           8         308
          10          26           1        1021           8         296
          10          23           5        2055          21         480
          10          23           5        1332          13         296
          10          22           4         629           4         373
          10          28           3        1446          59         308
          10           8           4         928           3         447
          10          10           6         859          11         954
          :           :            :          :           :           :
          :           :            :          :           :           :

Создайте длинный массив для весов наблюдения путем произвольного присвоения двойных весов наблюдениям в классе 1.

W = Y+1; % Weights

Удалите строки в XY, и W это содержит недостающие данные.

R = rmmissing([X Y W]); % Data with missing entries removed
X = R(:,1:end-2); 
Y = R(:,end-1); 
W = R(:,end);

Обучите ансамбль 20 сложенных в мешок деревьев решений с помощью целого набора данных. Задайте вектор веса и универсальные априорные вероятности. Для воспроизводимости, набор seed генераторов случайных чисел с помощью rng и tallrng. Результаты могут варьироваться в зависимости от количества рабочих и среды выполнения для длинных массивов. Для получения дополнительной информации смотрите Управление Где Ваши Запуски Кода (MATLAB).

rng('default') 
tallrng('default')
tMdl = TreeBagger(20,X,Y,'Weights',W,'Prior','Uniform')
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 4 sec
Evaluation completed in 4.2 sec
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 3.9 sec
Evaluation completed in 8.7 sec
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 8.2 sec
Evaluation completed in 8.3 sec
tMdl = 
  CompactTreeBagger
Ensemble with 20 bagged decision trees:
              Method:       classification
       NumPredictors:                    6
          ClassNames: '0' '1'

  Properties, Methods

tMdl CompactTreeBagger ансамбль с 20 сложенными в мешок деревьями решений.

Вычислите misclassification вероятность каждого дерева в модели. Припишите вес, содержавшийся в векторном W к каждому наблюдению при помощи 'Weights' аргумент пары "имя-значение".

terr = error(tMdl,X,Y,'Weights',W)
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 7.6 sec
Evaluation completed in 7.7 sec
terr = 20×1

    0.1428
    0.1214
    0.1112
    0.1077
    0.1034
    0.1023
    0.1000
    0.0991
    0.0974
    0.0982
      ⋮

Найдите среднее значение misclassification вероятностью для ансамбля деревьев решений.

avg_terr = mean(terr)
avg_terr = 0.1019

Советы

  • Избегайте больших предполагаемых ошибочных отклонений из сумки путем установки более сбалансированной матрицы стоимости misclassification или менее скошенного вектора априорной вероятности.

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

    view(B.Trees{t})

  • Стандартный CART имеет тенденцию выбирать предикторы разделения, содержащие много отличных значений, например, непрерывные переменные, по тем, которые содержат немного отличных значений, например, категориальные переменные [4]. Рассмотрите определение искривления или теста взаимодействия, если какое-либо следующее верно:

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

    • Если анализ важности предиктора является вашей целью. TreeBagger важность предиктора хранилищ оценивает в OOBPermutedPredictorDeltaError свойство Mdl.

    Для получения дополнительной информации о выборе предиктора смотрите PredictorSelection для деревьев классификации или PredictorSelection для деревьев регрессии.

Алгоритмы

  • TreeBagger генерирует выборки в сумке путем сверхдискретизации классов с большими затратами misclassification и субдискретизации классов с маленькими затратами misclassification. Следовательно, выборки из сумки имеют меньше наблюдений от классов с большими затратами misclassification и больше наблюдений от классов с маленькими затратами misclassification. Если вы обучаете ансамбль классификации, использующий небольшой набор данных и очень скошенную матрицу стоимости, то количество наблюдений из сумки в классе может быть очень низким. Поэтому предполагаемая ошибка из сумки может иметь большое отклонение и может затруднить, чтобы интерпретировать. То же явление может произойти для классов с большими априорными вероятностями.

  • Для получения дополнительной информации при выборе предикторов разделения и алгоритмов расщепления узлов при росте деревьев решений, см. Алгоритмы для деревьев классификации и Алгоритмы для деревьев регрессии.

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

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

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

Ссылки

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

[2] Бреимен, L., Дж. Фридман, Р. Олшен и К. Стоун. Классификация и деревья регрессии. Бока-Ратон, FL: нажатие CRC, 1984.

[3] Loh, W.Y. “Деревья регрессии с Несмещенным Обнаружением Выбора переменной и Взаимодействия”. Statistica Sinica, Издание 12, 2002, стр 361–386.

[4] Loh, В.И. и И.С. Ши. “Разделите Методы выбора для Деревьев Классификации”. Statistica Sinica, Издание 7, 1997, стр 815–840.

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

Расширенные возможности

Представленный в R2009a