Подходящее дерево выбора из двух альтернатив для регрессии
tree = fitrtree(Tbl,ResponseVarName)
tree = fitrtree(Tbl,formula)
tree = fitrtree(Tbl,Y)
tree = fitrtree(X,Y)
tree = fitrtree(___,Name,Value)
возвращает дерево регрессии на основе входных переменных (также известный как предикторы, функции или атрибуты) в таблице tree
= fitrtree(Tbl
,ResponseVarName
)Tbl
и выводе (ответ), содержавшийся в Tbl.ResponseVarName
. Возвращенный tree
является двоичным деревом, где каждый переходящий узел разделен на основе значений столбца Tbl
.
задает опции с помощью одного или нескольких аргументов пары "имя-значение" в дополнение к любой из комбинаций входных аргументов в предыдущих синтаксисах. Например, можно задать веса наблюдения или обучить перекрестную подтвержденную модель.tree
= fitrtree(___,Name,Value
)
Загрузите выборочные данные.
load carsmall
Создайте дерево регрессии использование выборочных данных. Переменная отклика является милями на галлон, MPG.
tree = fitrtree([Weight, Cylinders],MPG,... 'CategoricalPredictors',2,'MinParentSize',20,... 'PredictorNames',{'W','C'})
tree = RegressionTree PredictorNames: {'W' 'C'} ResponseName: 'Y' CategoricalPredictors: 2 ResponseTransform: 'none' NumObservations: 94 Properties, Methods
Предскажите пробег автомобилей за 4 000 фунтов с 4, 6, и 8 цилиндров.
MPG4Kpred = predict(tree,[4000 4; 4000 6; 4000 8])
MPG4Kpred = 3×1
19.2778
19.2778
14.3889
fitrtree
выращивает глубокие деревья решений по умолчанию. Можно вырастить более мелкие деревья, чтобы уменьшать сложность модели или время вычисления. Чтобы управлять глубиной деревьев, используйте 'MaxNumSplits'
, 'MinLeafSize'
или аргументы пары "имя-значение" 'MinParentSize'
.
Загрузите набор данных carsmall
. Рассмотрите Displacement
, Horsepower
и Weight
как предикторы ответа MPG
.
load carsmall
X = [Displacement Horsepower Weight];
Значения по умолчанию контроллеров древовидной глубины для роста деревьев регрессии:
n - 1
для MaxNumSplits
. n
является учебным объемом выборки.
1
для MinLeafSize
.
10
для MinParentSize
.
Эти значения по умолчанию имеют тенденцию выращивать глубокие деревья для больших учебных объемов выборки.
Обучите дерево регрессии использование значений по умолчанию для управления древовидной глубины. Перекрестный подтвердите модель с помощью 10-кратной перекрестной проверки.
rng(1); % For reproducibility MdlDefault = fitrtree(X,MPG,'CrossVal','on');
Чертите гистограмму количества наложенных разделений на деревьях. Количество наложенных разделений является тем меньше, чем количество листов. Кроме того, просмотрите одно из деревьев.
numBranches = @(x)sum(x.IsBranch); mdlDefaultNumSplits = cellfun(numBranches, MdlDefault.Trained); figure; histogram(mdlDefaultNumSplits)
view(MdlDefault.Trained{1},'Mode','graph')
Среднее количество разделений между 14 и 15.
Предположим, что вы хотите дерево регрессии, которое не является столь комплексное (глубокий), как те обучили использование количества по умолчанию разделений. Обучите другое дерево регрессии, но определите максимальный номер разделений в 7, который является приблизительно половиной среднего количества разделений от дерева регрессии по умолчанию. Перекрестный подтвердите модель с помощью 10-кратной перекрестной проверки.
Mdl7 = fitrtree(X,MPG,'MaxNumSplits',7,'CrossVal','on'); view(Mdl7.Trained{1},'Mode','graph')
Сравните среднеквадратические ошибки перекрестной проверки (MSEs) моделей.
mseDefault = kfoldLoss(MdlDefault)
mseDefault = 25.7383
mse7 = kfoldLoss(Mdl7)
mse7 = 26.5748
Mdl7
является намного менее комплексным и выполняет незначительно хуже, чем MdlDefault
.
Оптимизируйте гиперпараметры автоматически с помощью fitrtree
.
Загрузите набор данных carsmall
.
load carsmall
Используйте Weight
и Horsepower
как предикторы для MPG
. Найдите гиперпараметры, которые минимизируют пятикратную потерю перекрестной проверки при помощи автоматической гипероптимизации параметров управления.
Для воспроизводимости, набор случайный seed и использование функция приобретения 'expected-improvement-plus'
.
X = [Weight,Horsepower]; Y = MPG; rng default Mdl = fitrtree(X,Y,'OptimizeHyperparameters','auto',... 'HyperparameterOptimizationOptions',struct('AcquisitionFunctionName',... 'expected-improvement-plus'))
|======================================================================================| | Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | MinLeafSize | | | result | | runtime | (observed) | (estim.) | | |======================================================================================| | 1 | Best | 3.2818 | 0.33636 | 3.2818 | 3.2818 | 28 | | 2 | Accept | 3.4183 | 0.16932 | 3.2818 | 3.2888 | 1 | | 3 | Best | 3.1491 | 0.08867 | 3.1491 | 3.166 | 4 | | 4 | Best | 2.9885 | 0.091869 | 2.9885 | 2.9885 | 9 | | 5 | Accept | 2.9978 | 0.09795 | 2.9885 | 2.9885 | 7 | | 6 | Accept | 3.0203 | 0.059809 | 2.9885 | 3.0013 | 8 | | 7 | Accept | 2.9885 | 0.047582 | 2.9885 | 2.9981 | 9 | | 8 | Best | 2.9589 | 0.049282 | 2.9589 | 2.985 | 10 | | 9 | Accept | 3.0459 | 0.053177 | 2.9589 | 2.9895 | 12 | | 10 | Accept | 4.1881 | 0.066028 | 2.9589 | 2.9594 | 50 | | 11 | Accept | 3.4182 | 0.050155 | 2.9589 | 2.9594 | 2 | | 12 | Accept | 3.0376 | 0.0697 | 2.9589 | 2.9592 | 6 | | 13 | Accept | 3.1453 | 0.046923 | 2.9589 | 2.9856 | 19 | | 14 | Accept | 2.9589 | 0.051579 | 2.9589 | 2.9591 | 10 | | 15 | Accept | 2.9589 | 0.053981 | 2.9589 | 2.959 | 10 | | 16 | Accept | 2.9589 | 0.046891 | 2.9589 | 2.959 | 10 | | 17 | Accept | 3.3055 | 0.047559 | 2.9589 | 2.959 | 3 | | 18 | Accept | 3.4577 | 0.054804 | 2.9589 | 2.9589 | 37 | | 19 | Accept | 3.1584 | 0.051801 | 2.9589 | 2.9589 | 15 | | 20 | Accept | 3.107 | 0.048557 | 2.9589 | 2.9589 | 5 | |======================================================================================| | Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | MinLeafSize | | | result | | runtime | (observed) | (estim.) | | |======================================================================================| | 21 | Accept | 3.0398 | 0.048573 | 2.9589 | 2.9589 | 23 | | 22 | Accept | 3.3226 | 0.051323 | 2.9589 | 2.9589 | 32 | | 23 | Accept | 3.1883 | 0.0474 | 2.9589 | 2.9589 | 17 | | 24 | Accept | 4.1881 | 0.047663 | 2.9589 | 2.9589 | 43 | | 25 | Accept | 3.0123 | 0.046762 | 2.9589 | 2.9589 | 11 | | 26 | Accept | 3.0932 | 0.048755 | 2.9589 | 2.9589 | 21 | | 27 | Accept | 3.078 | 0.064211 | 2.9589 | 2.9589 | 13 | | 28 | Accept | 3.2818 | 0.058083 | 2.9589 | 2.9589 | 25 | | 29 | Accept | 3.0992 | 0.051327 | 2.9589 | 2.9589 | 14 | | 30 | Accept | 3.4361 | 0.047885 | 2.9589 | 2.9589 | 34 | __________________________________________________________ Optimization completed. MaxObjectiveEvaluations of 30 reached. Total function evaluations: 30 Total elapsed time: 34.9016 seconds. Total objective function evaluation time: 2.094 Best observed feasible point: MinLeafSize ___________ 10 Observed objective function value = 2.9589 Estimated objective function value = 2.9589 Function evaluation time = 0.049282 Best estimated feasible point (according to models): MinLeafSize ___________ 10 Estimated objective function value = 2.9589 Estimated function evaluation time = 0.061038
Mdl = RegressionTree ResponseName: 'Y' CategoricalPredictors: [] ResponseTransform: 'none' NumObservations: 94 HyperparameterOptimizationResults: [1x1 BayesianOptimization] Properties, Methods
Загрузите набор данных 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);
Отобразите количество категорий, представленных в категориальных переменных.
numCylinders = numel(categories(Cylinders))
numCylinders = 3
numMfg = numel(categories(Mfg))
numMfg = 28
numModelYear = numel(categories(Model_Year))
numModelYear = 3
Поскольку существует 3 категории только в Cylinders
и Model_Year
, стандартном CART, разделяющий предиктор алгоритм предпочитает разделять непрерывный предиктор по этим двум переменным.
Обучите дерево регрессии использование целого набора данных. Чтобы вырастить несмещенные деревья, задайте использование теста искривления для разделения предикторов. Поскольку существуют отсутствующие значения в данных, задают использование суррогатных разделений.
Mdl = fitrtree(X,'MPG','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';
В этом случае Displacement
является самым важным предиктором, сопровождаемым Horsepower
.
fitrtree
выращивает глубокие деревья решений по умолчанию. Создайте более мелкое дерево, которое требует, чтобы меньше прошли через длинный массив. Используйте аргумент пары "имя-значение" 'MaxDepth'
, чтобы управлять максимальной древовидной глубиной.
Загрузите набор данных carsmall
. Рассмотрите Displacement
, Horsepower
и Weight
как предикторы ответа MPG
.
load carsmall
X = [Displacement Horsepower Weight];
Преобразуйте массивы в оперативной памяти X
и MPG
к длинным массивам.
tx = tall(X);
Starting parallel pool (parpool) using the 'local' profile ... Connected to the parallel pool (number of workers: 6).
ty = tall(MPG);
Когда вы выполняете вычисления на длинных массивах, среда выполнения по умолчанию использует или локальный сеанс работы с MATLAB или локальный параллельный пул (если у вас есть Parallel Computing Toolbox™). Можно использовать функцию mapreducer
, чтобы изменить среду выполнения. В этом случае пример использует стандартную среду.
Вырастите дерево регрессии, использующее все наблюдения. Позвольте дереву расти до максимальной возможной глубины.
Для воспроизводимости, набор seed генераторов случайных чисел с помощью rng
и tallrng
. Результаты могут отличаться в зависимости от количества рабочих и среды выполнения для длинных массивов. Для получения дополнительной информации смотрите Управление Где Ваши Выполнения Кода (MATLAB).
rng('default') tallrng('default') Mdl = fitrtree(tx,ty);
Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.52 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.52 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.59 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.49 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.45 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.48 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.59 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.46 sec
Просмотрите обученный древовидный Mdl
.
view(Mdl,'Mode','graph')
Mdl
является деревом глубины 8
.
Оцените среднеквадратическую ошибку в выборке.
MSE_Mdl = loss(Mdl,tx,ty)
MSE_Mdl = tall double 4.9078
Вырастите дерево регрессии, использующее все наблюдения. Ограничьте древовидную глубину путем определения maximium древовидной глубины 4
.
Mdl2 = fitrtree(tx,ty,'MaxDepth',4);
Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.49 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.46 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.47 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.47 sec
Просмотрите обученный древовидный Mdl2
.
view(Mdl2,'Mode','graph')
Оцените среднеквадратическую ошибку в выборке.
MSE_Mdl2 = loss(Mdl2,tx,ty)
MSE_Mdl2 = tall double 9.3903
Mdl2
является менее комплексным деревом с глубиной 4 и среднеквадратическая ошибка в выборке, которая выше, чем среднеквадратическая ошибка Mdl
.
Оптимизируйте гиперпараметры дерева регрессии автоматически с помощью длинного массива. Набор выборочных данных является набором данных carsmall
. Этот пример преобразовывает набор данных в длинный массив и использует его, чтобы запустить процедуру оптимизации.
Загрузите набор данных carsmall
. Рассмотрите Displacement
, Horsepower
и Weight
как предикторы ответа MPG
.
load carsmall
X = [Displacement Horsepower Weight];
Преобразуйте массивы в оперативной памяти X
и MPG
к длинным массивам.
tx = tall(X);
Starting parallel pool (parpool) using the 'local' profile ... Connected to the parallel pool (number of workers: 6).
ty = tall(MPG);
Когда вы выполняете вычисления на длинных массивах, среда выполнения по умолчанию использует или локальный сеанс работы с MATLAB или локальный параллельный пул (если у вас есть Parallel Computing Toolbox™). Можно использовать функцию mapreducer
, чтобы изменить среду выполнения. В этом случае пример использует стандартную среду.
Оптимизируйте гиперпараметры автоматически с помощью аргумента пары "имя-значение" 'OptimizeHyperparameters'
. Найдите оптимальное значение 'MinLeafSize'
, которое минимизирует потерю перекрестной проверки затяжки. (Определение 'auto'
использует 'MinLeafSize'
.) Для воспроизводимости, используйте функцию приобретения 'expected-improvement-plus'
и установите seed генераторов случайных чисел с помощью rng
и tallrng
. Результаты могут отличаться в зависимости от количества рабочих и среды выполнения для длинных массивов. Для получения дополнительной информации смотрите Управление Где Ваши Выполнения Кода (MATLAB).
rng('default') tallrng('default') [Mdl,FitInfo,HyperparameterOptimizationResults] = fitrtree(tx,ty,... 'OptimizeHyperparameters','auto',... 'HyperparameterOptimizationOptions',struct('Holdout',0.3,... 'AcquisitionFunctionName','expected-improvement-plus'))
Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.19 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.45 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.42 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.4 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.4 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.39 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.18 sec |======================================================================================| | Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | MinLeafSize | | | result | | runtime | (observed) | (estim.) | | |======================================================================================| | 1 | Best | 3.2376 | 12.472 | 3.2376 | 3.2376 | 2 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.12 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.47 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.19 sec | 2 | Error | NaN | 4.4697 | NaN | 3.2376 | 46 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.092 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.49 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.46 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.16 sec | 3 | Best | 3.2342 | 8.3529 | 3.2342 | 3.2357 | 18 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.098 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.4 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.43 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.16 sec | 4 | Best | 2.9244 | 10.078 | 2.9244 | 2.977 | 6 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.09 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.4 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.45 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.42 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.45 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.4 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.18 sec | 5 | Accept | 3.2919 | 12.127 | 2.9244 | 3.172 | 4 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.091 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.46 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.4 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.39 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.15 sec | 6 | Accept | 2.9504 | 10.124 | 2.9244 | 2.9244 | 8 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.086 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.4 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.39 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.17 sec | 7 | Accept | 2.9498 | 9.8558 | 2.9244 | 2.9316 | 7 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.12 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.46 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.44 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.17 sec | 8 | Accept | 2.9582 | 10.122 | 2.9244 | 2.9245 | 10 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.092 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.4 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.4 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.42 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.4 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.5 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.15 sec | 9 | Accept | 3.3095 | 13.867 | 2.9244 | 2.9245 | 1 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.11 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.4 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.39 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.42 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.17 sec | 10 | Accept | 2.9582 | 9.9676 | 2.9244 | 2.9248 | 9 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.11 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.42 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.42 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.45 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.2 sec | 11 | Accept | 3.0115 | 10.309 | 2.9244 | 2.9247 | 12 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.097 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.4 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.15 sec | 12 | Accept | 3.0677 | 5.8924 | 2.9244 | 2.9245 | 32 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.11 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.46 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.19 sec | 13 | Error | NaN | 4.4099 | 2.9244 | 2.9245 | 39 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.086 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.43 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.4 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.43 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.42 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.15 sec | 14 | Accept | 2.9244 | 9.8586 | 2.9244 | 2.9244 | 6 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.085 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.4 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.42 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.42 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.44 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.17 sec | 15 | Accept | 2.9244 | 9.8685 | 2.9244 | 2.9244 | 6 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.12 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.48 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.4 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.39 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.42 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.17 sec | 16 | Accept | 2.9244 | 10.225 | 2.9244 | 2.9244 | 6 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.096 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.4 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.43 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.15 sec | 17 | Accept | 3.3005 | 6.1228 | 2.9244 | 2.9244 | 25 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.093 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.38 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.4 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.39 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.43 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.17 sec | 18 | Accept | 3.1854 | 11.795 | 2.9244 | 2.9244 | 3 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.095 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.39 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.43 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.43 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.16 sec | 19 | Best | 2.8161 | 9.8982 | 2.8161 | 2.8161 | 5 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.095 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.42 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.47 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.39 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.42 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.15 sec | 20 | Accept | 2.8161 | 9.9123 | 2.8161 | 2.8161 | 5 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.13 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.44 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.39 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.15 sec |======================================================================================| | Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | MinLeafSize | | | result | | runtime | (observed) | (estim.) | | |======================================================================================| | 21 | Accept | 2.8161 | 10.113 | 2.8161 | 2.8161 | 5 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.087 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.43 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.47 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.15 sec | 22 | Accept | 2.8161 | 9.8916 | 2.8161 | 2.8161 | 5 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.088 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.45 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.42 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.43 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.15 sec | 23 | Accept | 3.2342 | 8.1838 | 2.8161 | 2.8161 | 15 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.084 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.4 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.15 sec | 24 | Error | NaN | 3.8862 | 2.8161 | 2.8161 | 43 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.095 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.42 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.44 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.38 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.15 sec | 25 | Accept | 3.2342 | 7.9812 | 2.8161 | 2.8161 | 21 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.084 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.38 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.17 sec | 26 | Error | NaN | 3.8838 | 2.8161 | 2.8161 | 34 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.086 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.47 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.15 sec | 27 | Accept | 3.3005 | 5.9523 | 2.8161 | 2.8161 | 29 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.098 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.43 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.42 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.17 sec | 28 | Accept | 3.2342 | 7.9259 | 2.8161 | 2.8161 | 13 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.093 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.4 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.43 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.42 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.15 sec | 29 | Accept | 2.9565 | 9.9316 | 2.8161 | 2.8161 | 11 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.098 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.45 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.17 sec | 30 | Accept | 3.5557 | 6.1465 | 2.8161 | 2.8161 | 23 | __________________________________________________________ Optimization completed. MaxObjectiveEvaluations of 30 reached. Total function evaluations: 30 Total elapsed time: 292.6074 seconds. Total objective function evaluation time: 263.6231 Best observed feasible point: MinLeafSize ___________ 5 Observed objective function value = 2.8161 Estimated objective function value = 2.8161 Function evaluation time = 9.8982 Best estimated feasible point (according to models): MinLeafSize ___________ 5 Estimated objective function value = 2.8161 Estimated function evaluation time = 10.2924 Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.39 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.44 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec
Mdl = classreg.learning.regr.CompactRegressionTree ResponseName: 'Y' CategoricalPredictors: [] ResponseTransform: 'none' Properties, Methods
FitInfo = struct with no fields.
HyperparameterOptimizationResults = BayesianOptimization with properties: ObjectiveFcn: @createObjFcn/tallObjFcn VariableDescriptions: [3×1 optimizableVariable] Options: [1×1 struct] MinObjective: 2.8161 XAtMinObjective: [1×1 table] MinEstimatedObjective: 2.8161 XAtMinEstimatedObjective: [1×1 table] NumObjectiveEvaluations: 30 TotalElapsedTime: 292.6074 NextPoint: [1×1 table] XTrace: [30×1 table] ObjectiveTrace: [30×1 double] ConstraintsTrace: [] UserDataTrace: {30×1 cell} ObjectiveEvaluationTimeTrace: [30×1 double] IterationTimeTrace: [30×1 double] ErrorTrace: [30×1 double] FeasibilityTrace: [30×1 logical] FeasibilityProbabilityTrace: [30×1 double] IndexOfMinimumTrace: [30×1 double] ObjectiveMinimumTrace: [30×1 double] EstimatedObjectiveMinimumTrace: [30×1 double]
Tbl
Выборочные данныеВыборочные данные раньше обучали модель, заданную как таблица. Каждая строка Tbl
соответствует одному наблюдению, и каждый столбец соответствует одной переменной прогноза. Опционально, Tbl
может содержать один дополнительный столбец для переменной отклика. Многостолбцовые переменные и массивы ячеек кроме массивов ячеек из символьных векторов не позволены.
Если Tbl
содержит переменную отклика, и вы хотите использовать все остающиеся переменные в Tbl
как предикторы, затем задать переменную отклика при помощи ResponseVarName
.
Если Tbl
содержит переменную отклика, и вы хотите использовать только подмножество остающихся переменных в Tbl
как предикторы, затем задать формулу при помощи formula
.
Если Tbl
не содержит переменную отклика, то задайте переменную отклика при помощи Y
. Длина переменной отклика и количество строк в Tbl
должны быть равными.
Типы данных: table
ResponseVarName
— Имя переменной откликаTbl
Имя переменной отклика, заданное как имя переменной в Tbl
. Переменная отклика должна быть числовым вектором.
Необходимо задать ResponseVarName
как вектор символов или представить скаляр в виде строки. Например, если Tbl
хранит переменную отклика Y
как Tbl.Y
, то задайте его как 'Y'
. В противном случае программное обеспечение обрабатывает все столбцы Tbl
, включая Y
, как предикторы когда обучение модель.
Типы данных: char | string
formula
— Explanatory ответа и подмножество переменных прогнозаОбъяснительная модель ответа и подмножество переменных прогноза, заданных как вектор символов или скаляр строки в форме 'Y~X1+X2+X3'
. В этой форме Y
представляет переменную отклика, и X1
, X2
, и X3
представляет переменные прогноза. Переменные должны быть именами переменных в Tbl
(Tbl.Properties.VariableNames
).
Чтобы задать подмножество переменных в Tbl
как предикторы для обучения модель, используйте формулу. Если вы задаете формулу, то программное обеспечение не использует переменных в Tbl
, которые не появляются в formula
.
Типы данных: char | string
Y
Данные об ответеДанные об ответе, заданные как числовой вектор-столбец с одинаковым числом строк как X
. Каждая запись в Y
является ответом на данные в соответствующей строке X
.
Программное обеспечение полагает, что значения NaN
в Y
отсутствующие значения. fitrtree
не использует наблюдения с отсутствующими значениями для Y
в подгонке.
Типы данных: single | double
X
Данные о предиктореДанные о предикторе, заданные как числовая матрица. Каждый столбец X
представляет одну переменную, и каждая строка представляет одно наблюдение.
fitrtree
рассматривает значения NaN
в X
как отсутствующие значения. fitrtree
не использует наблюдения со всеми отсутствующими значениями для X
в подгонке. fitrtree
использует наблюдения с некоторыми отсутствующими значениями для X
, чтобы найти разделения на переменных, для которых эти наблюдения имеют допустимые значения.
Типы данных: single | double
Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми.
Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение.
Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
'CrossVal','on','MinParentSize',30
задает перекрестное подтвержденное дерево регрессии с минимумом 30 наблюдений на узел ответвления.Вы не можете использовать аргумент пары "имя-значение" перекрестной проверки наряду с аргументом пары "имя-значение" 'OptimizeHyperparameters'
. Можно изменить перекрестную проверку для 'OptimizeHyperparameters'
только при помощи аргумента пары "имя-значение" 'HyperparameterOptimizationOptions'
.
'CategoricalPredictors'
— Категориальный список предикторов'all'
Категориальный список предикторов, заданный как пара, разделенная запятой, состоящая из 'CategoricalPredictors'
и одно из значений в этой таблице.
Значение | Описание |
---|---|
Вектор положительных целых чисел | Запись в векторе является индексным значением, соответствующим столбцу данных о предикторе (X или Tbl ), который содержит категориальную переменную. |
Логический вектор | Запись true означает, что соответствующий столбец данных о предикторе (X или Tbl ) является категориальной переменной. |
Символьная матрица | Каждая строка матрицы является именем переменной прогноза. Имена должны совпадать с записями в PredictorNames . Заполните имена дополнительными пробелами, таким образом, каждая строка символьной матрицы имеет ту же длину. |
Массив строк или массив ячеек из символьных векторов | Каждый элемент в массиве является именем переменной прогноза. Имена должны совпадать с записями в PredictorNames . |
все | Все предикторы являются категориальными. |
По умолчанию, если данные о предикторе находятся в таблице (Tbl
), fitrtree
принимает, что переменная является категориальной, если это содержит логические значения, категориальные значения, массив строк или массив ячеек из символьных векторов. Если данные о предикторе являются матрицей (X
), fitrtree
принимает, что все предикторы непрерывны. Чтобы идентифицировать любые категориальные предикторы, когда данные будут матрицей, используйте аргумент пары "имя-значение" 'CategoricalPredictors'
.
Пример: 'CategoricalPredictors','all'
Типы данных: single
| double
| logical
| char
| string
| cell
'MaxDepth'
— Максимальная древовидная глубинаМаксимальная древовидная глубина, заданная как пара, разделенная запятой, состоящая из 'MaxDepth'
и положительного целого числа. Задайте значение для этого аргумента, чтобы возвратить дерево, которое имеет меньше уровней и требует, чтобы меньше прошли через длинный массив, чтобы вычислить. Обычно алгоритм fitrtree
берет один проход через данные и дополнительную передачу для каждого древовидного уровня. Функция не устанавливает максимальную древовидную глубину по умолчанию.
Эта опция применяется только, когда вы используете fitrtree
на длинных массивах. Смотрите Длинные массивы для получения дополнительной информации.
'MergeLeaves'
— Листовой флаг слияния'on'
(значение по умолчанию) | 'off'
Листовой флаг слияния, заданный как пара, разделенная запятой, состоящая из 'MergeLeaves'
и 'on'
или 'off'
.
Если MergeLeaves
является 'on'
, то fitrtree
:
Листы слияний, которые происходят из того же родительского узла и приводят к сумме значений риска, больше, чем или равный риску, сопоставленному с родительским узлом
Оценивает оптимальную последовательность сокращенных поддеревьев, но не сокращает дерево регрессии
В противном случае fitrtree
не объединяет листы.
Пример: 'MergeLeaves','off'
'MinParentSize'
— Минимальное количество наблюдений узла ответвления10
(значение по умолчанию) | положительное целочисленное значениеМинимальное количество наблюдений узла ответвления, заданных как пара, разделенная запятой, состоящая из 'MinParentSize'
и положительного целочисленного значения. Каждый узел ответвления в дереве имеет, по крайней мере, наблюдения MinParentSize
. Если вы предоставляете и MinParentSize
и MinLeafSize
, fitrtree
использует установку, которая дает большие листы: MinParentSize = max(MinParentSize,2*MinLeafSize)
.
Пример: 'MinParentSize',8
Типы данных: single | double
NumBins
Количество интервалов для числовых предикторов[]
(пустое) (значение по умолчанию) | положительный целочисленный скалярКоличество интервалов для числовых предикторов, заданных как пара, разделенная запятой, состоящая из 'NumBins'
и положительного целочисленного скаляра.
Если значение 'NumBins'
пусто (значение по умолчанию), то программное обеспечение не делает интервала никакие предикторы.
Если вы задаете значение 'NumBins'
как положительный целочисленный скаляр, то интервалы программного обеспечения каждый числовой предиктор в конкретное количество равновероятных интервалов, и затем выращивает деревья на индексах интервала вместо исходных данных.
Если значение 'NumBins'
превышает номер (u) уникальных значений для предиктора, то интервалы fitrtree
предиктор в интервалы u.
fitrtree
не делает интервала категориальные предикторы.
Когда вы используете большой обучающий набор данных, эта опция раскладывания ускоряет обучение, но вызывает потенциальное уменьшение в точности. Можно попробовать 'NumBins',50
сначала, и затем изменить значение 'NumBins'
в зависимости от точности и учебной скорости.
Обученная модель хранит ребра интервала в свойстве BinEdges
.
Пример: 'NumBins',50
Типы данных: single | double
'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'
, чтобы выбрать который переменные прогноза использовать в обучении. Таким образом, fitrtree
использует только переменные прогноза в PredictorNames
и переменную отклика в обучении.
PredictorNames
должен быть подмножеством Tbl.Properties.VariableNames
и не может включать имя переменной отклика.
По умолчанию PredictorNames
содержит имена всех переменных прогноза.
Это - хорошая практика, чтобы задать предикторы для обучения с помощью или 'PredictorNames'
или formula
только.
Пример: 'PredictorNames',{'SepalLength','SepalWidth','PetalLength','PetalWidth'}
Типы данных: string
| cell
'PredictorSelection'
— Алгоритм раньше выбирал лучший предиктор разделения'allsplits'
(значение по умолчанию) | 'curvature'
| 'interaction-curvature'
Алгоритм раньше выбирал лучший предиктор разделения в каждом узле, заданном как пара, разделенная запятой, состоящая из 'PredictorSelection'
и значения в этой таблице.
Значение | Описание |
---|---|
'allsplits' | Стандартный CART — Выбирает предиктор разделения, который максимизирует усиление критерия разделения по всем возможным разделениям всех предикторов [1]. |
'curvature' | Тест искривления — Выбирает предиктор разделения, который минимизирует p - значение тестов хи-квадрата независимости между каждым предиктором и ответом [2]. Учебная скорость подобна стандартному CART. |
'interaction-curvature' | Тест взаимодействия — Выбирает предиктор разделения, который минимизирует p - значение тестов хи-квадрата независимости между каждым предиктором и ответом (то есть, проводит тесты искривления), и это минимизирует p - значение теста хи-квадрата независимости между каждой парой предикторов и ответом [2]. Учебная скорость может быть медленнее, чем стандартный CART. |
Для 'curvature'
и 'interaction-curvature'
, если все тесты приводят к p - значения, больше, чем 0,05, то fitrtree
прекращает разделять узлы.
Стандартный CART имеет тенденцию выбирать предикторы разделения, содержащие много отличных значений, например, непрерывные переменные, по тем, которые содержат немного отличных значений, например, категориальные переменные [3]. Рассмотрите определение искривления или теста взаимодействия, если какое-либо следующее верно:
Если существуют предикторы, которые имеют относительно меньше отличных значений, чем другие предикторы, например, если набор данных предиктора неоднороден.
Если анализ важности предиктора является вашей целью. Для больше на оценке важности предиктора, смотрите predictorImportance
.
Деревья, выращенные с помощью стандартного CART, не чувствительны к взаимодействиям переменной прогноза. Кроме того, такие деревья, менее вероятно, идентифицируют важные переменные в присутствии многих несоответствующих предикторов, чем приложение теста взаимодействия. Поэтому, чтобы составлять взаимодействия предиктора и идентифицировать переменные важности в присутствии многих несоответствующих переменных, задайте тест взаимодействия.
Скорость прогноза незатронута значением 'PredictorSelection'
.
Для получения дополнительной информации о том, как fitrtree
выбирает предикторы разделения, см. Правила Расщепления узлов и Выберите Split Predictor Selection Technique.
Пример: 'PredictorSelection','curvature'
'Prune'
— Отметьте, чтобы оценить оптимальную последовательность сокращенных поддеревьев'on'
(значение по умолчанию) | 'off'
Отметьте, чтобы оценить оптимальную последовательность сокращенных поддеревьев, заданных как пара, разделенная запятой, состоящая из 'Prune'
и 'on'
или 'off'
.
Если Prune
является 'on'
, то fitrtree
выращивает дерево регрессии и оценивает оптимальную последовательность сокращенных поддеревьев, но не сокращает дерево регрессии. В противном случае fitrtree
выращивает дерево регрессии, не оценивая оптимальную последовательность сокращенных поддеревьев.
Чтобы сократить обученное дерево регрессии, передайте дерево регрессии prune
.
Пример: 'Prune','off'
'PruneCriterion'
— Сокращение критерия'mse'
(значение по умолчанию)Сокращение критерия, заданного как пара, разделенная запятой, состоящая из 'PruneCriterion'
и 'mse'
.
'QuadraticErrorTolerance'
— Квадратичный ошибочный допуск1e-6
(значение по умолчанию) | значение положительной скалярной величиныКвадратичный ошибочный допуск на узел, заданный как пара, разделенная запятой, состоящая из 'QuadraticErrorTolerance'
и значения положительной скалярной величины. Функция прекращает разделять узлы, когда квадратичная невязка взвешенного среднего на узел опускается ниже QuadraticErrorTolerance*ε
, где ε
является квадратичной невязкой взвешенного среднего всех ответов n, вычисленных прежде, чем вырастить дерево решений.
wi является весом наблюдения i, учитывая, что веса всех наблюдений суммируют к одному (), и
взвешенное среднее всех ответов.
Для получения дополнительной информации на расщеплении узлов, см. Правила Расщепления узлов.
Пример: 'QuadraticErrorTolerance',1e-4
'Reproducible'
— Отметьте, чтобы осуществить воспроизводимостьfalse
(логический 0
) (значение по умолчанию) | true
(логический 1
)Отметьте, чтобы осуществить воспроизводимость по повторным выполнениям обучения модель, заданная как пара, разделенная запятой, состоящая из 'Reproducible'
и или false
или true
.
Если 'NumVariablesToSample'
не является 'all'
, то программное обеспечение выбирает предикторы наугад для каждого разделения. Чтобы воспроизвести случайные выборы, необходимо задать 'Reproducible',true
и установить seed генератора случайных чисел при помощи rng
. Обратите внимание на то, что установка 'Reproducible'
к true
может замедлить обучение.
Пример: 'Reproducible',true
Типы данных: логический
'ResponseName'
— Имя переменной отклика'Y'
(значение по умолчанию) | вектор символов | представляет скаляр в виде строкиИмя переменной отклика, заданное как пара, разделенная запятой, состоящая из 'ResponseName'
и вектора символов или скаляра строки.
Если вы предоставляете Y
, то можно использовать 'ResponseName'
, чтобы задать имя для переменной отклика.
Если вы предоставляете ResponseVarName
или formula
, то вы не можете использовать 'ResponseName'
.
Пример: 'ResponseName','response'
Типы данных: char | string
'ResponseTransform'
— Преобразование ответа'none'
(значение по умолчанию) | указатель на функциюПреобразование ответа, заданное как пара, разделенная запятой, состоящая из 'ResponseTransform'
и или 'none'
или указатель на функцию. Значением по умолчанию является 'none'
, что означает @(y)y
или никакое преобразование. Для функции MATLAB® или функции вы задаете, используете ее указатель на функцию. Указатель на функцию должен принять вектор (исходные значения ответа) и возвратить вектор, одного размера (преобразованные значения ответа).
Пример: Предположим, что вы создаете указатель на функцию, который применяет экспоненциальное преобразование к входному вектору при помощи myfunction = @(y)exp(y)
. Затем можно задать преобразование ответа как 'ResponseTransform',myfunction
.
Типы данных: char
| string
| function_handle
'SplitCriterion'
— Разделите критерий'MSE'
(значение по умолчанию)Разделите критерий, заданный как пара, разделенная запятой, состоящая из 'SplitCriterion'
и 'MSE'
, имея в виду среднеквадратическую ошибку.
Пример: 'SplitCriterion','MSE'
'Surrogate'
— Суррогатное решение разделяет флаг'off'
(значение по умолчанию) | 'on'
| 'all'
| положительное целое числоСуррогатное решение разделяет флаг, заданный как пара, разделенная запятой, состоящая из 'Surrogate'
и 'on'
, 'off'
, 'all'
или положительного целого числа.
Когда 'on'
, fitrtree
находит самое большее 10 суррогатных разделений в каждом узле ответвления.
Когда установлено в положительное целое число, fitrtree
находит самое большее конкретное количество суррогатных разделений в каждом узле ответвления.
Когда установлено в 'all'
, fitrtree
находит все суррогатные разделения в каждом узле ответвления. Установка 'all'
может использовать много времени и памяти.
Используйте суррогатные разделения, чтобы улучшить точность прогнозов для данных с отсутствующими значениями. Установка также позволяет вам вычислить меры прогнозирующей ассоциации между предикторами.
Пример: 'Surrogate','on'
Типы данных: single
| double
| char
| string
'Weights'
— Веса наблюденияones(size(X,1),1)
(значение по умолчанию) | вектор скалярных значений | имя переменной в Tbl
Веса наблюдения, заданные как пара, разделенная запятой, состоящая из 'Weights'
и вектор скалярных значений или имя переменной в Tbl
. Программное обеспечение взвешивает наблюдения в каждой строке X
или Tbl
с соответствующим значением в Weights
. Размер Weights
должен равняться количеству строк в X
или Tbl
.
Если вы задаете входные данные как таблицу Tbl
, то Weights
может быть именем переменной в Tbl
, который содержит числовой вектор. В этом случае необходимо задать Weights
как вектор символов или представить скаляр в виде строки. Например, если вектор весов, W
хранится как Tbl.W
, то задают его как 'W'
. В противном случае программное обеспечение обрабатывает все столбцы Tbl
, включая W
, как предикторы когда обучение модель.
fitrtree
нормирует веса в каждом классе, чтобы составить в целом 1.
Типы данных: single
| double
| char
| string
'CrossVal'
— Флаг перекрестной проверки'off'
(значение по умолчанию) | 'on'
Флаг перекрестной проверки, заданный как пара, разделенная запятой, состоящая из 'CrossVal'
и или 'on'
или 'off'
.
Если 'on'
, fitrtree
выращивает перекрестное подтвержденное дерево решений с 10 сгибами. Можно заменить эту установку перекрестной проверки с помощью одного из 'KFold'
, 'Holdout'
, 'Leaveout'
или аргументов пары "имя-значение" 'CVPartition'
. Можно только использовать одну из этих четырех опций ('KFold'
, 'Holdout'
, 'Leaveout'
или 'CVPartition'
) при создании перекрестного подтвержденного дерева.
Также перекрестный подтвердите tree
позже с помощью метода crossval
.
Пример: 'CrossVal','on'
'CVPartition'
— Раздел для дерева перекрестной проверкиcvpartition
Раздел для перекрестного подтвержденного дерева, заданного как пара, разделенная запятой, состоящая из 'CVPartition'
и объекта, созданного с помощью cvpartition
.
Если вы используете 'CVPartition'
, вы не можете использовать ни один 'KFold'
, 'Holdout'
или аргументы пары "имя-значение" 'Leaveout'
.
'Holdout'
— Часть данных для валидации затяжки0
(значение по умолчанию) | скалярное значение в области значений [0,1]
Часть данных используется для валидации затяжки, заданной как пара, разделенная запятой, состоящая из 'Holdout'
и скалярного значения в области значений [0,1]
. Валидация затяжки тестирует заданную часть данных и использует остальную часть данных для обучения.
Если вы используете 'Holdout'
, вы не можете использовать ни один 'CVPartition'
, 'KFold'
или аргументы пары "имя-значение" 'Leaveout'
.
Пример: 'Holdout',0.1
Типы данных: single | double
'KFold'
— Количество сгибов10
(значение по умолчанию) | положительное целое число, больше, чем 1Количество сгибов, чтобы использовать в перекрестном подтвержденном дереве, заданном как пара, разделенная запятой, состоящая из 'KFold'
и положительного целочисленного значения, больше, чем 1.
Если вы используете 'KFold'
, вы не можете использовать ни один 'CVPartition'
, 'Holdout'
или аргументы пары "имя-значение" 'Leaveout'
.
Пример: 'KFold',8
Типы данных: single | double
'Leaveout'
— Флаг перекрестной проверки "Пропускает один"'off'
(значение по умолчанию) | 'on'
Флаг перекрестной проверки "Пропускает один", заданный как пара, разделенная запятой, состоящая из 'Leaveout'
и или 'on'
или 'off
. Используйте перекрестную проверку, "пропускают один" путем установки на 'on'
.
Если вы используете 'Leaveout'
, вы не можете использовать ни один 'CVPartition'
, 'Holdout'
или аргументы пары "имя-значение" 'KFold'
.
Пример: 'Leaveout','on'
'MaxNumSplits'
— Максимальное количество разделений решенияsize(X,1) - 1
(значение по умолчанию) | положительное целое числоМаксимальное количество разделений решения (или узлы ответвления), заданный как пара, разделенная запятой, состоящая из 'MaxNumSplits'
и положительного целого числа. fitrtree
разделяет MaxNumSplits
или меньше узлов ответвления. Для получения дополнительной информации на разделяющем поведении, смотрите Древовидное Управление Глубиной.
Пример: 'MaxNumSplits',5
Типы данных: single | double
'MinLeafSize'
— Минимальное количество наблюдений вершины1
(значение по умолчанию) | положительное целочисленное значениеМинимальное количество наблюдений вершины, заданных как пара, разделенная запятой, состоящая из 'MinLeafSize'
и положительного целочисленного значения. Каждый лист имеет, по крайней мере, наблюдения MinLeafSize
на древовидный лист. Если вы предоставляете и MinParentSize
и MinLeafSize
, fitrtree
использует установку, которая дает большие листы: MinParentSize = max(MinParentSize,2*MinLeafSize)
.
Пример: 'MinLeafSize',3
Типы данных: single | double
'NumVariablesToSample'
— Количество предикторов, чтобы выбрать наугад для каждого разделения'all'
(значение по умолчанию) | положительное целочисленное значениеКоличество предикторов, чтобы выбрать наугад для каждого разделения, заданного как пара, разделенная запятой, состоящая из 'NumVariablesToSample'
и положительного целочисленного значения. Также можно задать 'all'
, чтобы использовать все доступные предикторы.
Если данные тренировки включают много предикторов, и вы хотите анализировать важность предиктора, затем задать 'NumVariablesToSample'
как 'all'
. В противном случае программное обеспечение не может выбрать некоторые предикторы, недооценив их важность.
Чтобы воспроизвести случайные выборы, необходимо установить seed генератора случайных чисел при помощи rng
и задать 'Reproducible',true
.
Пример: 'NumVariablesToSample',3
Типы данных: char
| string
| single
| double
'OptimizeHyperparameters'
— Параметры, чтобы оптимизировать'none'
(значение по умолчанию) | 'auto'
| 'all'
| массив строк или массив ячеек имеющих право названий параметра | вектор объектов optimizableVariable
Параметры, чтобы оптимизировать, заданный как пара, разделенная запятой, состоящая из 'OptimizeHyperparameters'
и одно из следующего:
'none'
Не оптимизировать.
'auto'
Используйте {'MinLeafSize'}
.
все
Оптимизируйте все имеющие право параметры.
Массив строк или массив ячеек имеющих право названий параметра.
Вектор объектов optimizableVariable
, обычно вывод hyperparameters
.
Оптимизация пытается минимизировать потерю перекрестной проверки (ошибка) для fitrtree
путем варьирования параметров. Чтобы управлять типом перекрестной проверки и другими аспектами оптимизации, используйте пару "имя-значение" HyperparameterOptimizationOptions
.
Значения 'OptimizeHyperparameters'
заменяют любые значения, вы устанавливаете использование других аргументов пары "имя-значение". Например, установка 'OptimizeHyperparameters'
к 'auto'
заставляет значения 'auto'
применяться.
Имеющие право параметры для fitrtree
:
MaxNumSplits
— fitrtree
ищет среди целых чисел, по умолчанию масштабируемых журналом в области значений [1,max(2,NumObservations-1)]
.
MinLeafSize
— fitrtree
ищет среди целых чисел, по умолчанию масштабируемых журналом в области значений [1,max(2,floor(NumObservations/2))]
.
NumVariablesToSample
— fitrtree
не оптимизирует по этому гиперпараметру. Если вы передаете NumVariablesToSample
как название параметра, fitrtree
просто использует полное количество предикторов. Однако fitrensemble
действительно оптимизирует по этому гиперпараметру.
Установите параметры не по умолчанию путем передачи вектора объектов optimizableVariable
, которые имеют значения не по умолчанию. Например,
load carsmall params = hyperparameters('fitrtree',[Horsepower,Weight],MPG); params(1).Range = [1,30];
Передайте params
как значение OptimizeHyperparameters
.
По умолчанию итеративное отображение появляется в командной строке, и графики появляются согласно количеству гиперпараметров в оптимизации. Для оптимизации и графиков, целевая функция является журналом (1 + потеря перекрестной проверки) для регрессии и misclassification уровня для классификации. Чтобы управлять итеративным отображением, установите поле Verbose
аргумента пары "имя-значение" 'HyperparameterOptimizationOptions'
. Чтобы управлять графиками, установите поле ShowPlots
аргумента пары "имя-значение" 'HyperparameterOptimizationOptions'
.
Для примера смотрите, Оптимизируют Дерево Регрессии.
Пример: 'auto'
'HyperparameterOptimizationOptions'
— Опции для оптимизацииОпции для оптимизации, заданной как пара, разделенная запятой, состоящая из 'HyperparameterOptimizationOptions'
и структуры. Этот аргумент изменяет эффект аргумента пары "имя-значение" OptimizeHyperparameters
. Все поля в структуре являются дополнительными.
Имя поля | Значения | Значение по умолчанию |
---|---|---|
Optimizer |
| 'bayesopt' |
AcquisitionFunctionName |
Приобретение функционирует, чьи имена включают | 'expected-improvement-per-second-plus' |
MaxObjectiveEvaluations | Максимальное количество оценок целевой функции. | 30 для 'bayesopt' или 'randomsearch' и целой сетки для 'gridsearch' |
MaxTime | Ограничение по времени, заданное как положительное действительное. Ограничение по времени находится в секундах, как измерено | Inf |
NumGridDivisions | Для 'gridsearch' , количества значений в каждой размерности. Значение может быть вектором положительных целых чисел, дающих количество значений для каждой размерности или скаляр, который применяется ко всем размерностям. Это поле проигнорировано для категориальных переменных. | 10 |
ShowPlots | Логическое значение, указывающее, показать ли графики. Если true , это поле строит лучшее значение целевой функции против номера итерации. Если существуют один или два параметра оптимизации, и если Optimizer является 'bayesopt' , то ShowPlots также строит модель целевой функции против параметров. | true |
SaveIntermediateResults | Логическое значение, указывающее, сохранить ли результаты, когда Optimizer является 'bayesopt' . Если true , это поле перезаписывает переменную рабочей области под названием 'BayesoptResults' в каждой итерации. Переменная является объектом BayesianOptimization . | false |
Verbose | Отобразитесь к командной строке.
Для получения дополнительной информации смотрите
аргумент пары "имя-значение" | 1 |
UseParallel | Логическое значение, указывающее, запустить ли Байесовую оптимизацию параллельно, которая требует Parallel Computing Toolbox™. Для получения дополнительной информации смотрите Параллельную Байесовую Оптимизацию. | false |
Repartition | Логическое значение, указывающее, повторно разделить ли перекрестную проверку в каждой итерации. Если
| false |
Используйте не больше, чем одни из следующих трех имен полей. | ||
CVPartition | Объект cvpartition , как создано cvpartition . | 'Kfold',5 , если вы не задаете поля перекрестной проверки |
Holdout | Скаляр в области значений (0,1) , представляющий часть затяжки. | |
Kfold | Целое число, больше, чем 1. |
Пример: 'HyperparameterOptimizationOptions',struct('MaxObjectiveEvaluations',60)
Типы данных: struct
tree
— Дерево регрессииДерево регрессии, возвращенное как объект дерева регрессии. Используя 'Crossval'
, 'KFold'
, 'Holdout'
, 'Leaveout'
или опции 'CVPartition'
приводит к дереву класса RegressionPartitionedModel
. Вы не можете использовать разделенное дерево для прогноза, таким образом, этот вид дерева не имеет метода predict
.
В противном случае tree
имеет класс RegressionTree
, и можно использовать метод predict
, чтобы сделать прогнозы.
curvature test является статистическим тестом, оценивающим нулевую гипотезу, что две переменные являются несвязанными.
Тест искривления между переменной прогноза x и y проводится с помощью этого процесса.
Если x непрерывен, то раздел это в его квартили. Создайте номинальную переменную, что наблюдения интервалов, согласно которому разделу раздела они занимают. Если существуют отсутствующие значения, то создают дополнительный интервал для них.
Для каждого уровня в разделенном предикторе j = 1... J и класс в ответе k = 1..., K, вычисляют взвешенную пропорцию наблюдений в классе k
wi является весом наблюдения i, , I является функцией индикатора, и n является объемом выборки. Если все наблюдения имеют тот же вес, то , где njk является количеством наблюдений на уровне j предиктора, которые находятся в классе k.
Вычислите тестовую статистическую величину
, то есть, безусловная вероятность наблюдения предиктора на уровне j. , это - безусловная вероятность наблюдения класса k. Если n является достаточно большим, то t распределяется как χ 2 с (K – 1) (J – 1) степени свободы.
Если p - значение для теста - меньше чем 0,05, то отклоните нулевую гипотезу, что нет никакой ассоциации между x и y.
При определении лучшего предиктора разделения в каждом узле стандартный алгоритм CART предпочитает выбирать непрерывные предикторы, которые имеют много уровней. Иногда, такой выбор может быть побочным и может также замаскировать более важные предикторы, которые имеют меньше уровней, таких как категориальные предикторы.
Тест искривления может быть применен вместо стандартного CART, чтобы определить лучший предиктор разделения в каждом узле. В этом случае лучшая переменная прогноза разделения является той, которая минимизирует значительный p - значения (те меньше чем 0,05) тестов искривления между каждым предиктором и переменной отклика. Такой выбор устойчив к количеству уровней в отдельных предикторах.
Для получения дополнительной информации о том, как тест искривления применяется к растущим деревьям регрессии, см. Правила Расщепления узлов и [3].
interaction test является статистическим тестом, который оценивает нулевую гипотезу, что нет никакого взаимодействия между парой переменных прогноза и переменной отклика.
Тест взаимодействия, оценивающий ассоциацию между переменными прогноза x 1 и x 2 относительно y, проводится с помощью этого процесса.
Если x 1 или x 2 непрерывен, то раздел что переменная в ее квартили. Создайте номинальную переменную, что наблюдения интервалов, согласно которому разделу раздела они занимают. Если существуют отсутствующие значения, то создают дополнительный интервал для них.
Создайте номинальную переменную z с J = J 1J2 уровни, который присваивает индекс наблюдению i, согласно которым уровням x 1 и x 2 это принадлежит. Удалите любые уровни z, которые не соответствуют никаким наблюдениям.
Проведите тест искривления между z и y.
При росте деревьев решений, если в данных существуют важные взаимодействия между парами предикторов, но существует также много других менее важных предикторов, то стандартный CART имеет тенденцию пропускать важные взаимодействия. Однако проведение искривления и тестов взаимодействия для выбора предиктора вместо этого может улучшить обнаружение важных взаимодействий, которые могут привести к более точным деревьям решений.
Для получения дополнительной информации о том, как тест взаимодействия применяется к росту деревьев решений, смотрите Тест Искривления, Правила Расщепления узлов и [2].
predictive measure of association является значением, которое указывает, что подобие между решением управляет что наблюдения разделения. Среди всех возможных разделений решения, которые сравниваются с оптимальным разделением (найденный путем роста дерева), лучшее суррогатное разделение решения приводит к максимальной прогнозирующей мере ассоциации. Второсортное суррогатное разделение имеет вторую по величине прогнозирующую меру ассоциации.
Предположим, что xj и xk являются переменными прогноза j и k, соответственно, и j ≠ k. В узле t прогнозирующая мера ассоциации между оптимальным разделением xj <u и суррогат разделяют xk <v
PL является пропорцией наблюдений в узле t, такой что xj <u. Нижний L выдерживает за покинутый дочерний элемент узла t.
PR является пропорцией наблюдений в узле t, такой что xj ≥ u. Нижний R выдерживает за правильный дочерний элемент узла t.
пропорция наблюдений в узле t, такой что xj <u и xk <v.
пропорция наблюдений в узле t, такой что xj ≥ u и xk ≥ v.
Наблюдения с отсутствующими значениями для xj или xk не способствуют вычислениям пропорции.
λjk является значением в (– ∞, 1]. Если λjk> 0, то xk <v является стоящим суррогатным разделением для xj <u.
surrogate decision split является альтернативой оптимальному разделению решения в данном узле в дереве решений. Оптимальное разделение найдено путем роста дерева; суррогатное разделение использует подобную или коррелированую переменную прогноза и критерий разделения.
Когда значение оптимального предиктора разделения для наблюдения отсутствует, наблюдение отправляется в левый или правый дочерний узел с помощью лучшего суррогатного предиктора. Когда значение лучшего суррогатного предиктора разделения для наблюдения также отсутствует, наблюдение отправляется в левый или правый дочерний узел с помощью второсортного суррогатного предиктора и так далее. Разделения кандидата сортируются в порядке убывания их прогнозирующей мерой ассоциации.
По умолчанию Prune
является 'on'
. Однако эта спецификация не сокращает дерево регрессии. Чтобы сократить обученное дерево регрессии, передайте дерево регрессии prune
.
После обучения модель можно сгенерировать код C/C++, который предсказывает ответы для новых данных. Генерация кода C/C++ требует MATLAB Coder™. Для получения дополнительной информации смотрите Введение в Генерацию кода.
fitrtree
использует эти процессы, чтобы определить, как разделить узел t.
Для стандартного CART (то есть, если PredictorSelection
является 'allpairs'
), и для всех предикторов xi, i = 1..., p:
fitrtree
вычисляет квадратичную невязку взвешенного среднего (MSE) ответов в узле использование t
wj является весом наблюдения j, и T является набором всех индексов наблюдения в узле t. Если вы не задаете Weights
, то wj = 1/n, где n является объемом выборки.
fitrtree
оценивает вероятность, что наблюдение находится в узле использование t
Виды fitrtree
xi в порядке возрастания. Каждый элемент отсортированного предиктора является разделяющим кандидатом или точкой разделения. fitrtree
записывает любые индексы, соответствующие отсутствующим значениям в наборе TU, который является неразделенным набором.
fitrtree
определяет лучший способ разделить узел t с помощью xi путем максимизации сокращения MSE (ΔI) по всем кандидатам разделения. Таким образом, для всех кандидатов разделения в xi:
fitrtree
разделяет наблюдения в узле t в левые и правые дочерние узлы (tL и tR, соответственно).
fitrtree
вычисляет ΔI. Предположим, что для конкретного кандидата разделения, tL и tR содержат индексы наблюдения в наборах TL и TR, соответственно.
Если xi не содержит отсутствующих значений, то сокращение MSE для текущего кандидата разделения
Если xi содержит отсутствующие значения, то, принимая, что наблюдения отсутствуют наугад, сокращение MSE
T TU является набором всех индексов наблюдения в узле t, которые не отсутствуют.
Если вы используете суррогатные разделения решения, то:
fitrtree
вычисляет прогнозирующие меры ассоциации между разделением решения xj <u и все возможное решение разделяют xk <v, j ≠ k.
fitrtree
сортирует возможные альтернативные разделения решения в порядке убывания по их прогнозирующей мере связи с оптимальным разделением. Суррогатное разделение является разделением решения, приводящим к самой большой мере.
fitrtree
решает дочерние присвоения узла для наблюдений с отсутствующим значением для xi с помощью суррогатного разделения. Если суррогатный предиктор также содержит отсутствующее значение, то fitrtree
использует разделение решения со второй по величине мерой, и так далее, пока нет никаких других суррогатов. Для fitrtree
возможно разделить два различных наблюдения в узле t с помощью двух различных суррогатных разделений. Например, предположите предикторы, x 1 и x 2 является лучшими и почти лучшими суррогатами, соответственно, для предиктора xi, i ∉ {1,2}, в узле t. Если наблюдение m предиктора, который пропускает xi (т.е. xmi отсутствует), но x m 1 не отсутствует, то x 1 является суррогатным предиктором для наблюдения xmi. Если наблюдения x (m + 1), i и x (m + 1), 1 отсутствует, но x (m + 1), 2 не отсутствует, то x 2 является суррогатным предиктором для наблюдения m + 1.
fitrtree
использует соответствующую формулу сокращения MSE. Таким образом, если fitrtree
не удается присвоить все недостающие наблюдения в узле t к дочерним узлам с помощью суррогатных разделений, то сокращение MSE является ΔIU. В противном случае fitrtree
использует ΔI для сокращения MSE.
fitrtree
выбирает кандидата, который приводит к самому большому сокращению MSE.
fitrtree
разделяет переменную прогноза в точке разделения, которая максимизирует сокращение MSE.
Для теста искривления (то есть, если PredictorSelection
является 'curvature'
):
fitrtree
вычисляет невязки для всех наблюдений в узле t. , который является взвешенным средним ответов в узле t. Веса являются весами наблюдения в Weights
.
fitrtree
присваивает наблюдения одному из двух интервалов согласно знаку соответствующих невязок. Позвольте zt быть номинальной переменной, которая содержит присвоения интервала для наблюдений в узле t.
fitrtree
проводит тесты искривления между каждым предиктором и zt. Для деревьев регрессии, K = 2.
Если весь p - значения - по крайней мере 0,05, то fitrtree
не разделяет узел t.
Если существует минимальный p - значение, то fitrtree
выбирает соответствующий предиктор, чтобы разделить узел t.
Если больше чем один p - значение является нулем, должным потерять значимость, то fitrtree
применяет стандартный CART к соответствующим предикторам, чтобы выбрать предиктор разделения.
Если fitrtree
выбирает предиктор разделения, то он использует стандартный CART, чтобы выбрать точку разделения (см. шаг 4 в стандартном процессе CART).
Для теста взаимодействия (то есть, если PredictorSelection
является 'interaction-curvature'
):
Для наблюдений в узле t fitrtree
проводит тесты искривления между каждым предиктором и ответом и тесты взаимодействия между каждой парой предикторов и ответом.
Если весь p - значения - по крайней мере 0,05, то fitrtree
не разделяет узел t.
Если существует минимальный p - значение, и это - результат теста искривления, то fitrtree
выбирает соответствующий предиктор, чтобы разделить узел t.
Если существует минимальный p - значение, и это - результат теста взаимодействия, то fitrtree
выбирает предиктор разделения с помощью стандартного CART на соответствующей паре предикторов.
Если больше чем один p - значение является нулем, должным потерять значимость, то fitrtree
применяет стандартный CART к соответствующим предикторам, чтобы выбрать предиктор разделения.
Если fitrtree
выбирает предиктор разделения, то он использует стандартный CART, чтобы выбрать точку разделения (см. шаг 4 в стандартном процессе CART).
Если MergeLeaves
является 'on'
, и PruneCriterion
является 'mse'
(которые являются значениями по умолчанию для этих аргументов пары "имя-значение"), то программное обеспечение применяет сокращение только к листам и при помощи MSE. Эта спецификация составляет слияние листов, прибывающих из того же родительского узла, MSE которого является самое большее суммой MSE ее двух листов.
Чтобы разместить MaxNumSplits
, fitrtree
разделяет все узлы в текущем layer, и затем считает количество узлов ответвления. Слой является набором узлов, которые являются равноотстоящими от корневого узла. Если количество узлов ответвления превышает MaxNumSplits
, fitrtree
выполняет эту процедуру:
Определите, сколько узлов ответвления в текущем слое должно быть не разделено так, чтобы было в большинстве узлов ответвления MaxNumSplits
.
Сортировка узлов ответвления их примесными усилениями.
Неразделенный количество наименее успешных ответвлений.
Возвратите дерево решений, выращенное до сих пор.
Эта процедура производит максимально сбалансированные деревья.
Слой узлов ответвления разделений программного обеспечения слоем до по крайней мере одного из этих событий происходит:
Существуют узлы ответвления MaxNumSplits
.
Предложенное разделение заставляет количество наблюдений по крайней мере в одном узле ответвления быть меньше, чем MinParentSize
.
Предложенное разделение заставляет количество наблюдений по крайней мере в одной вершине быть меньше, чем MinLeafSize
.
Алгоритм не может найти хорошее разделение на слое (т.е. критерий сокращения (см. PruneCriterion
), не улучшается для всех предложенных разделений в слое). Особый случай - когда все узлы чисты (т.е. все наблюдения в узле имеют тот же класс).
Для значений 'curvature'
или 'interaction-curvature'
PredictorSelection
, все тесты приводят к p - значения, больше, чем 0,05.
MaxNumSplits
и MinLeafSize
не влияют на разделение в их значениях по умолчанию. Поэтому, если вы устанавливаете 'MaxNumSplits'
, разделение может остановиться из-за значения MinParentSize
, прежде чем разделения MaxNumSplits
произойдут.
Для двухъядерных систем и выше, fitrtree
параллелизирует учебные деревья решений с помощью Intel® Threading Building Blocks (TBB). Для получения дополнительной информации на Intel TBB, см. https://software.intel.com/en-us/intel-tbb.
[1] Бреимен, L., Дж. Фридман, Р. Олшен и К. Стоун. Классификация и деревья регрессии. Бока-Ратон, FL: нажатие CRC, 1984.
[2] Loh, W.Y. “Деревья регрессии с Несмещенным Обнаружением Выбора переменной и Взаимодействия”. Statistica Sinica, Издание 12, 2002, стр 361–386.
[3] Loh, В.И. и И.С. Ши. “Разделите Методы выбора для Деревьев Классификации”. Statistica Sinica, Издание 7, 1997, стр 815–840.
Указания и ограничения по применению:
Поддерживаемые синтаксисы:
tree = fitrtree(Tbl,Y)
tree = fitrtree(X,Y)
tree = fitrtree(___,Name,Value)
[tree,FitInfo,HyperparameterOptimizationResults] = fitrtree(___,Name,Value)
— fitrtree
возвращает дополнительные выходные аргументы FitInfo
и HyperparameterOptimizationResults
, когда вы задаете аргумент пары "имя-значение" 'OptimizeHyperparameters'
.
tree
является объектом CompactRegressionTree
; поэтому, это не включает данные, используемые в обучение дерево регрессии.
Выходным аргументом FitInfo
является пустой массив структур, в настоящее время зарезервированный для возможного будущего использования.
Выходным аргументом HyperparameterOptimizationResults
является объект BayesianOptimization
или таблица гиперпараметров с присваиваемыми значениями, которые описывают оптимизацию перекрестной проверки гиперпараметров.
'HyperparameterOptimizationResults'
непуст, когда аргумент пары "имя-значение" 'OptimizeHyperparameters'
непуст в то время, когда вы создаете модель. Значения в 'HyperparameterOptimizationResults'
зависят от значения, которое вы задаете для аргумента пары "имя-значение" 'HyperparameterOptimizationOptions'
, когда вы создаете модель.
Если вы задаете 'bayesopt'
(значение по умолчанию), то HyperparameterOptimizationResults
является объектом класса BayesianOptimization
.
Если вы задаете 'gridsearch'
или 'randomsearch'
, то HyperparameterOptimizationResults
является таблицей гиперпараметров используемые, наблюдаемые значения целевой функции (потеря перекрестной проверки), и ранг наблюдений от самого низкого (лучше всего) к (худшему) самому высокому.
Поддерживаемые аргументы пары "имя-значение":
'CategoricalPredictors'
'HyperparameterOptimizationOptions'
— Для перекрестной проверки высокая оптимизация поддерживает только валидацию 'Holdout'
. Например, можно задать fitrtree(X,Y,'OptimizeHyperparameters','auto','HyperparameterOptimizationOptions',struct('Holdout',0.2))
.
'MaxNumSplits'
— Для высокой оптимизации fitrtree
ищет среди целых чисел, масштабируемых журналом (по умолчанию) в области значений [1,max(2,min(10000,NumObservations–1))]
.
'MergeLeaves'
'MinLeafSize'
— Для высокой оптимизации fitrtree
ищет среди целых чисел, масштабируемых журналом (по умолчанию) в области значений [1,max(2,floor(NumObservations/2))]
.
'MinParentSize'
'NumVariablesToSample'
— Для высокой оптимизации fitrtree
ищет среди целых чисел в области значений [1,max(2,NumPredictors)]
.
'OptimizeHyperparameters'
'PredictorNames'
'QuadraticErrorTolerance'
'ResponseName'
'ResponseTransform'
'SplitCriterion'
'Weights'
Этот дополнительный аргумент пары "имя-значение" характерен для длинных массивов:
'MaxDepth'
— Положительное целое число, задающее максимальную глубину выходного дерева. Задайте значение для этого аргумента, чтобы возвратить дерево, которое имеет меньше уровней и требует, чтобы меньше прошли через длинный массив, чтобы вычислить. Обычно алгоритм fitrtree
берет один проход через данные и дополнительную передачу для каждого древовидного уровня. Функция не устанавливает максимальную древовидную глубину по умолчанию.
Для получения дополнительной информации смотрите Длинные массивы (MATLAB).
Чтобы запуститься параллельно, установите опцию 'UseParallel'
на true
.
Чтобы выполнить параллельную гипероптимизацию параметров управления, используйте аргумент пары "имя-значение" 'HyperparameterOptions', struct('UseParallel',true)
в вызове этой функции.
Для получения дополнительной информации о параллельной гипероптимизации параметров управления смотрите Параллельную Байесовую Оптимизацию.
Для более общей информации о параллельных вычислениях смотрите функции MATLAB Выполнения с Автоматической Параллельной Поддержкой (Parallel Computing Toolbox).
RegressionPartitionedModel
| RegressionTree
| predict
| prune
| surrogateAssociation
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.