이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

TreeBagger

결정 트리의 배깅 생성하기

개별 결정 트리는 과적합되는 경향이 있습니다. 배깅(Bootstrap-Aggregated) 결정 트리는 많은 결정 트리의 결과를 결합합니다. 이는 과적합의 영향을 줄이고 일반화를 향상시킵니다. 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)은 테이블 Tbl에 포함된 표본 데이터를 사용하여 훈련된 NumTrees개 배깅 분류 트리의 앙상블을 반환합니다. ResponseVarNameTbl에 포함된 응답 변수의 이름입니다.

Mdl = TreeBagger(NumTrees,Tbl,formula)는 테이블 Tbl에 포함된 표본 데이터를 사용하여 훈련된 배깅 분류 트리 앙상블을 반환합니다. formulaMdl을 피팅하는 데 사용되는 Tbl의 예측 변수의 부분 집합과 응답 변수에 대한 설명 모델입니다. 윌킨슨(Wilkinson) 표기법을 사용하여 Formula를 지정합니다. 자세한 내용은 Wilkinson Notation 항목을 참조하십시오.

Mdl = TreeBagger(NumTrees,Tbl,Y)는 테이블 Tbl에 포함된 예측 변수와 벡터 Y의 클래스 레이블을 사용하여 분류 트리의 앙상블을 반환합니다.

Y는 응답 변수 데이터로 구성된 배열입니다. Y의 요소는 Tbl의 행에 대응됩니다. 분류의 경우, Y는 실제 클래스 레이블 세트입니다. 레이블은 그룹화 변수, 즉 숫자형 벡터 또는 논리형 벡터, 문자형 행렬, string형 배열, 문자형 벡터로 구성된 셀형 배열, 또는 categorical형 벡터일 수 있습니다. TreeBagger는 레이블을 문자형 벡터로 구성된 셀형 배열로 변환합니다. 회귀의 경우, Y는 숫자형 벡터입니다. 회귀 트리를 성장시키려면 이름-값 쌍 'Method','regression'을 지정해야 합니다.

B = TreeBagger(NumTrees,X,Y)는 응답 변수 Y를 예측하기 위한 NumTrees개의 결정 트리의 앙상블 B를 훈련 데이터로 구성된 숫자형 행렬 X의 예측 변수 함수로 생성합니다. X의 각 행은 관측값을 나타내고 각 열은 예측 변수 또는 특징을 나타냅니다.

B = TreeBagger(NumTrees,X,Y,Name,Value)는 선택적 파라미터 이름-값 쌍을 지정합니다.

'InBagFraction'각각의 새로운 트리를 성장시키기 위해 입력 데이터에서 복원추출할 입력 데이터의 비율입니다. 디폴트 값은 1입니다.
'Cost'

정사각 행렬 C로, 여기서 C(i,j)는 특정 점에 대해 실제 클래스가 i인 경우 이 점을 j 클래스로 분류하는 비용입니다(즉, 행은 실제 클래스에 대응되고, 열은 예측된 클래스에 대응됨). Cost의 행과 열 순서는 훈련된 TreeBagger 모델 BClassNames 속성에 있는 클래스 순서와 일치합니다.

또한, cost는 다음 두 필드를 갖는 구조체 S일 수 있습니다.

  • categorical형 변수, 문자형 배열, string형 배열 또는 문자형 벡터로 구성된 셀형 배열로 그룹 이름을 포함하는 S.ClassNames

  • 비용 행렬 C를 포함하는 S.ClassificationCosts

디폴트 값은 i ~= j인 경우 C(i,j) = 1이고, i = j인 경우 C(i,j) = 0입니다.

Cost가 많이 편중된 경우 In-bag 표본에 대해 소프트웨어가 큰 벌점을 갖는 클래스에서 고유한 관측값을 과잉추출합니다. 소규모 표본 크기의 경우 이로 인해 큰 벌점을 갖는 클래스에서 Out-of-bag 관측값의 상대 도수가 매우 낮아질 수 있습니다. 따라서, 추정된 Out-of-bag 오차가 상당히 가변적이어서 해석하기 어려울 수 있습니다.

'SampleWithReplacement'복원추출의 경우 'on' 또는 비복원추출의 경우 'off'입니다. 비복원추출하는 경우 'InBagFraction'을 1보다 작은 값으로 설정해야 합니다. 디폴트 값은 'on'입니다.
'OOBPrediction'각 트리에 대해 Out-of-bag인 관측값이 무엇인지에 대한 정보를 저장하려는 경우 'on'입니다. 이 정보는 oobPrediction에서 앙상블의 각 트리에 대한 예측된 클래스 확률을 계산하는 데 사용될 수 있습니다. 디폴트 값은 'off'입니다.
'OOBPredictorImportance'앙상블의 특징 중요도에 대한 Out-of-bag 추정값을 저장하려는 경우 'on'입니다. 디폴트 값은 'off'입니다. 'on'을 지정하면 'OOBPrediction' 값도 'on'으로 설정됩니다. 예측 변수 중요도 분석이 목표인 경우 'PredictorSelection','curvature' 또는 'PredictorSelection','interaction-curvature'도 지정해야 합니다. 자세한 내용은 fitctree 또는 fitrtree를 참조하십시오.
'Method''classification' 또는 'regression'입니다. 회귀에는 숫자형 Y가 필요합니다.
'NumPredictorsToSample'각 결정 분할에 대해 임의로 선택할 변수의 개수입니다. 디폴트 값은 분류의 경우 변수 개수의 제곱근이고 회귀의 경우 변수 개수의 삼분의 일입니다. 유효한 값은 'all' 또는 양의 정수입니다. 이 인수를 'all'을 제외한 유효한 값으로 지정하면 브라이만(Breiman)의 랜덤 포레스트 알고리즘 [1]을 불러옵니다.
'NumPrint'훈련 순환 횟수(성장된 트리)로, 그 이후에 TreeBagger가 훈련 진행 상황을 보여주는 진단 메시지를 표시합니다. 디폴트 값은 진단 메시지 표시 안 함입니다.
'MinLeafSize'트리 리프당 최대 관측값 개수입니다. 디폴트 값은 분류의 경우 1이고, 회귀의 경우 5입니다.
'Options'

결정 트리의 앙상블을 성장시킬 때 계산을 제어하는 옵션을 지정하는 구조체입니다. 한 옵션은 Parallel Computing Toolbox™를 사용할 수 있는 경우 여러 부트스트랩 반복 실험에 대한 결정 트리 계산에서 여러 프로세서를 사용하도록 요청합니다. 두 옵션은 부트스트랩 반복 실험을 선택하는 데 사용할 난수 스트림을 지정합니다. statset을 호출하여 이 인수를 생성할 수 있습니다. statget을 호출하여 개별 필드의 값을 검색할 수 있습니다. 적용 가능한 statset 파라미터는 다음과 같습니다.

  • 'UseParallel'true이고 Parallel Computing Toolbox의 parpool이 열려 있는 경우 개별 부트스트랩 반복 실험에 대해 추출된 결정 트리를 병렬로 계산합니다. Parallel Computing Toolbox가 설치되어 있지 않거나 parpool이 열려 있지 않은 경우 계산이 직렬 모드로 실행됩니다. 디폴트 값은 false, 즉 직렬 계산입니다.

    듀얼 코어 이상의 시스템인 경우, TreeBagger는 Intel® TBB(Threading Building Block)를 사용하여 훈련을 병렬 처리합니다. 따라서 단일 컴퓨터에서 'UseParallel' 옵션을 사용하는 것은 도움이 되지 않습니다. 이 옵션은 클러스터에서 사용하십시오. Intel TBB에 대한 자세한 내용은 https://software.intel.com/en-us/intel-tbb를 참조하십시오.

  • 'UseSubstreams'true이면, 난수 생성기(스트림이라고도 함)의 개별 서브스트림을 사용하여 각 부트스트랩 반복 실험을 선택합니다. 이 옵션은 서브스트림 'mlfg6331_64' 또는 'mrg32k3a'를 지원하는 RandStream 유형에서만 사용할 수 있습니다. 디폴트 값은 false로, 각 부트스트랩 반복 실험을 계산하는 데 각기 다른 서브스트림을 사용하지 않습니다.

  • StreamsRandStream 객체 또는 이러한 객체로 구성된 셀형 배열입니다. Streams를 지정하지 않으면 TreeBagger가 디폴트 스트림을 사용합니다. Streams를 지정하도록 선택하면 다음 경우를 제외하고는 단일 객체를 사용하십시오.

    • UseParalleltrue입니다.

    • UseSubstreamsfalse입니다.

    이 경우에는 병렬 풀과 크기가 같은 셀형 배열을 사용하십시오.

'Prior'

각 클래스의 사전 확률입니다. 다음 값 중 하나로 지정합니다.

  • 문자형 벡터 또는 string형 스칼라:

    • 'Empirical'Y의 클래스 빈도에서 클래스 확률을 확인합니다. 관측값 가중치를 전달하면 이 관측값 가중치가 클래스 확률을 계산하는 데 사용됩니다. 이는 디폴트 값입니다.

    • 'Uniform'은 모든 클래스 확률을 같게 설정합니다.

  • 벡터(각 클래스마다 하나의 스칼라 값 구성). 요소 Prior의 순서는 훈련된 TreeBagger 모델 BClassNames 속성에 지정된 클래스 순서에 대응합니다.

  • 다음과 같은 두 개의 필드를 갖는 구조체 S입니다.

    • 클래스 이름을 categorical형 변수, 문자형 배열, string형 배열 또는 문자형 벡터로 구성된 셀형 배열로 포함하는 S.ClassNames

    • 대응되는 확률로 구성된 벡터를 포함하는 S.ClassProbs

WeightsPrior 모두에 대한 값을 설정하면 합이 각 클래스의 사전 확률 값이 되도록 가중치가 다시 정규화됩니다.

Prior가 많이 편중된 경우 In-bag 표본에 대해 소프트웨어가 큰 사전 확률을 갖는 클래스에서 고유한 관측값을 과잉추출합니다. 소규모 표본 크기의 경우 이로 인해 큰 사전 확률을 갖는 클래스에서 Out-of-bag 관측값의 상대 도수가 매우 낮아질 수 있습니다. 따라서, 추정된 Out-of-bag 오차가 상당히 가변적이어서 해석하기 어려울 수 있습니다.

'PredictorNames'

예측 변수 이름으로, 'PredictorNames'와 함께 string형 배열 또는 고유한 문자형 벡터로 구성된 셀형 배열이 쉼표로 구분되어 지정됩니다. 'PredictorNames'의 기능은 훈련 데이터를 어떤 방식으로 제공하느냐에 따라 달라집니다.

  • XY를 제공하는 경우, 'PredictorNames'를 사용하여 X 이름에 예측 변수를 제공할 수 있습니다.

    • PredictorNames의 이름의 순서는 X의 열 순서와 일치해야 합니다. 즉, PredictorNames{1}X(:,1)의 이름이고, PredictorNames{2}X(:,2)의 이름이 되는 식입니다. 또한, size(X,2)numel(PredictorNames)는 같아야 합니다.

    • 기본적으로 PredictorNames{'x1','x2',...}입니다.

  • Tbl을 제공하는 경우, 'PredictorNames'를 사용하여 훈련에 사용할 예측 변수를 선택할 수 있습니다. 즉, TreeBaggerPredictorNames의 예측 변수와 이에 대한 응답 변수만을 훈련에 사용합니다.

    • PredictorNamesTbl.Properties.VariableNames의 부분 집합이어야 하므로 응답 변수의 이름은 포함할 수 없습니다.

    • 기본적으로, PredictorNames는 모든 예측 변수의 이름을 포함합니다.

    • 'PredictorNames' 또는 formula 중 하나만 사용하여 훈련에 사용할 예측 변수를 지정하는 것이 좋습니다.

'CategoricalPredictors'

categorical형 예측 변수 목록으로, 'CategoricalPredictors'와 함께 다음 중 하나가 쉼표로 구분되어 지정됩니다.

  • 1부터 p까지의 인덱스를 갖는 숫자형 벡터(여기서 pX의 열 개수임).

  • 길이가 p인 논리형 벡터(여기서 true 항목은 대응하는 X의 열이 범주형 변수임을 의미함).

  • string형 배열 또는 문자형 벡터로 구성된 셀형 배열(여기서 배열의 각 요소는 예측 변수의 이름임). 이 이름은 PredictorNames 값의 항목과 일치해야 합니다.

  • 행렬의 각 행이 예측 변수의 이름인 문자형 행렬. 이 이름은 PredictorNames 값의 항목과 일치해야 합니다. 문자형 행렬의 각 행의 길이가 같게 되도록 이름 뒤에 추가로 공백을 채웁니다.

  • 'all'(모든 예측 변수가 categorical형 변수임을 의미함).

'ChunkSize'

청크 크기로, 'ChunkSize'와 함께 양의 정수가 쉼표로 구분되어 지정됩니다. 청크 크기는 각 데이터 청크의 관측값 개수를 지정합니다. 디폴트 값은 50000입니다.

참고

이 옵션은 tall형 배열에 TreeBagger를 사용하는 경우에만 적용됩니다. 자세한 내용은 확장 기능 항목을 참조하십시오.

위에 열거된 선택적 인수 외에 TreeBagger는 선택적으로 fitctree 인수와 fitrtree 인수를 받습니다.

예제

모두 확장

피셔(Fisher)의 붓꽃 데이터 세트를 불러옵니다.

load fisheriris

전체 데이터 세트를 사용하여 배깅 분류 트리의 앙상블을 훈련시킵니다. 50개의 약한 학습기를 지정합니다. 각 트리에 대해 Out-of-bag인 관측값을 저장합니다.

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

MdlTreeBagger의 앙상블입니다.

Mdl.Trees는 앙상블을 구성하는 훈련된 분류 트리(CompactClassificationTree 모델 객체)로 구성된 50x1 셀형 벡터를 저장합니다.

첫 번째 훈련된 분류 트리의 그래프를 플로팅합니다.

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

기본적으로, TreeBagger는 깊은 트리를 성장시킵니다.

Mdl.OOBIndices는 논리값으로 구성된 행렬로 Out-of-bag 인덱스를 저장합니다.

성장된 분류 트리의 개수에 대한 Out-of-bag 오차를 플로팅합니다.

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

Out-of-bag 오차는 성장된 트리 개수를 따라 감소합니다.

Out-of-bag 관측값에 레이블을 지정하려면 MdloobPredict로 전달하십시오.

carsmall 데이터 세트를 불러옵니다. 주어진 엔진 배기량에서 자동차의 연비를 예측하는 모델을 가정해 봅니다.

load carsmall

전체 데이터 세트를 사용하여 배깅 회귀 트리의 앙상블을 훈련시킵니다. 100개의 약한 학습기를 지정합니다.

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

MdlTreeBagger의 앙상블입니다.

훈련된 회귀 트리 배깅을 사용하여 조건부 평균 응답 변수를 추정하거나 분위수 회귀를 수행하여 조건부 분위수를 예측할 수 있습니다.

최소 표본내 변위와 최대 표본내 변위 사이에 있는 균일한 간격의 엔진 배기량 10개에 대해 조건부 평균 응답 변수와 조건부 분위수를 예측합니다.

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

동일한 Figure에 관측값, 추정된 평균 응답 변수, 그리고 분위수를 플로팅합니다.

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

CylindersModel_Year에 3개 범주만 있기 때문에 표준 CART, 예측 변수 분할 알고리즘이 이 두 변수를 사용하는 대신 연속형 예측 변수를 분할하려 합니다.

전체 데이터 세트를 사용하여 200개 회귀 트리로 구성된 랜덤 포레스트를 훈련시킵니다. 무편향 트리를 성장시키려면 예측 변수 분할에 곡률 검정을 사용하도록 지정하십시오. 데이터에 결측값이 있기 때문에 대리 분할을 사용하도록 지정합니다. 예측 변수 중요도 추정에 대한 Out-of-bag 정보를 저장합니다.

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가 그 다음으로 중요한 예측 변수입니다.

표준 CART를 사용하여 트리를 성장시키는 랜덤 포레스트에서 계산된 예측 변수 중요도 추정값과 imp를 비교합니다.

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

impCART = MdlCART.OOBPermutedPredictorDeltaError;

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

이 경우, 연속형 예측 변수 Weight가 가장 중요합니다. 다음으로 중요한 두 예측 변수는 Model_Year와 바로 근소한 차이의 중요도를 보이는 Horsepower 연속형 예측 변수입니다.

tall형 배열의 관측값에 대해 전체 배깅 분류 트리의 앙상블을 훈련시키고, 가중 관측값에 대해 모델에 있는 각 트리의 오분류 확률을 구합니다. 표본 데이터 세트 airlinesmall.csv는 항공편 데이터로 구성된 테이블 형식 파일을 포함하는 대규모 데이터 세트입니다.

데이터 세트가 있는 폴더의 위치를 참조하는 데이터저장소를 생성합니다. 사용할 변수의 부분 집합을 선택하고, datastore에서 'NA' 값을 누락된 데이터로 처리하여 이를 NaN 값으로 바꿀 수 있도록 합니다. 데이터저장소에 있는 데이터를 포함하는 tall형 테이블을 생성합니다.

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: 6).

tt =

  M×7 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   
      :          :             :           :          :           :           :
      :          :             :           :          :           :           :

tall형 배열에 대한 계산을 수행할 때 디폴트 실행 환경은 로컬 MATLAB 세션 또는 로컬 병렬 풀(Parallel Computing Toolbox™를 사용하는 경우)을 사용합니다. mapreducer 함수를 사용하여 실행 환경을 변경할 수 있습니다.

늦은 항공편에 대해 true인 논리형 변수를 정의하여 10분 이상 늦은 항공편을 확인합니다. 이 변수는 클래스 레이블을 포함합니다. 이 변수의 미리보기에는 처음 몇 개 행만 포함됩니다.

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

  M×1 tall logical array

   1
   0
   1
   1
   0
   1
   0
   0
   :
   :

예측 변수 데이터에 대한 tall형 배열을 생성합니다.

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

  M×6 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에 있는 관측값에 임의로 두 배의 가중치를 할당하여 관측값 가중치에 대한 tall형 배열을 생성합니다.

W = Y+1; % Weights

X, Y, W에서 누락된 데이터를 포함하는 행을 제거합니다.

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

전체 데이터 세트를 사용하여 20개 배깅 결정 트리의 앙상블을 훈련시킵니다. 가중 벡터와 균등 사전 확률을 지정합니다. 재현이 가능하도록 rngtallrng를 사용하여 난수 생성기의 시드값을 설정합니다. 결과는 워커의 개수 및 tall형 배열의 실행 환경에 따라 다를 수 있습니다. 자세한 내용은 Control Where Your Code Runs (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 8.4 sec
Evaluation completed in 8.6 sec
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 4 sec
Evaluation completed in 11 sec
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 7.7 sec
Evaluation completed in 7.8 sec
tMdl = 
  CompactTreeBagger
Ensemble with 20 bagged decision trees:
              Method:       classification
       NumPredictors:                    6
          ClassNames: '0' '1'

  Properties, Methods

tMdl은 20개의 배깅 결정 트리를 갖는 CompactTreeBagger의 앙상블입니다.

모델에 있는 각 트리의 오분류 확률을 계산합니다. 'Weights' 이름-값 쌍의 인수를 사용하여, 벡터 W에 포함된 가중치를 각 관측값에 지정합니다.

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

    0.1422
    0.1225
    0.1113
    0.1082
    0.1036
    0.1022
    0.1001
    0.1000
    0.0982
    0.0982
      ⋮

결정 트리 앙상블에 대한 평균 오분류 확률을 구합니다.

avg_terr = mean(terr)
avg_terr = 0.1025

  • 더욱 균형된 오분류 비용 행렬 또는 덜 편중된 사전 확률 벡터를 설정하여 Out-of-bag 오차 분산이 큰 값으로 추정되지 않도록 하십시오.

  • BTrees 속성은 B.NumTreesCompactClassificationTree 또는 CompactRegressionTree 모델 객체로 구성된 셀형 배열을 저장합니다. 셀형 배열의 트리 t를 텍스트 또는 그래픽 방식으로 표시하려면 다음을 입력하십시오.

    view(B.Trees{t})

  • 표준 CART는 적은 고유 값을 포함하는 분할 예측 변수(예: 범주형 변수)보다 많은 고유 값을 포함하는 분할 예측 변수(예: 연속형 변수)를 선택하는 경향이 있습니다 [4]. 다음 중 하나에 해당되는 경우 곡률 검정이나 상호 작용 검정을 지정해 보십시오.

    • 다른 예측 변수보다 상대적으로 더 적은 수의 고유 값을 갖는 예측 변수가 있는 경우(예를 들어, 예측 변수 데이터 세트가 이종인 경우).

    • 예측 변수 중요도의 분석이 목표인 경우. TreeBaggerMdlOOBPermutedPredictorDeltaError 속성에 예측 변수 중요도 추정값을 저장합니다.

    예측 변수 선택에 대한 자세한 내용은 분류 트리의 경우 PredictorSelection을, 회귀 트리의 경우 PredictorSelection을 참조하십시오.

알고리즘

  • TreeBagger는 오분류 비용이 큰 클래스를 과다추출하고 오분류 비용이 작은 클래스를 과소추출하여 In-bag 표본을 생성합니다. 따라서, Out-of-bag 표본은 오분류 비용이 큰 클래스의 관측값을 더 적게 가지고 오분류 비용이 작은 클래스의 관측값을 더 많이 가집니다. 작은 데이터 세트와 많이 편중된 비용 행렬을 사용하여 분류 앙상블을 훈련하는 경우 클래스당 Out-of-bag 관측값 개수가 매우 낮을 수 있습니다. 그러므로 추정된 Out-of-bag 오차가 큰 분산을 가질 수 있으며 해석이 어려울 수 있습니다. 큰 사전 확률을 갖는 클래스의 경우 동일한 현상이 발생할 수 있습니다.

  • 결정 트리를 성장시킬 때 분할 예측 변수와 노드 분할 알고리즘을 선택하는 데 대한 자세한 내용은 분류 트리의 경우 알고리즘 항목을, 회귀 트리의 경우 Algorithms 항목을 참조하십시오.

대체 기능

Statistics and Machine Learning Toolbox™는 배깅 및 랜덤 포레스트를 위한 세 가지 객체를 제공합니다.

TreeBagger와 배깅 앙상블(ClassificationBaggedEnsembleRegressionBaggedEnsemble) 사이의 차이에 대한 자세한 내용은 Comparison of TreeBagger and Bagged Ensembles 항목을 참조하십시오.

참고 문헌

[1] Breiman, L. Random Forests. Machine Learning 45, pp. 5–32, 2001.

[2] Breiman, L., J. Friedman, R. Olshen, and C. Stone. Classification and Regression Trees. Boca Raton, FL: CRC Press, 1984.

[3] Loh, W.Y. “Regression Trees with Unbiased Variable Selection and Interaction Detection.” Statistica Sinica, Vol. 12, 2002, pp. 361–386.

[4] Loh, W.Y. and Y.S. Shih. “Split Selection Methods for Classification Trees.” Statistica Sinica, Vol. 7, 1997, pp. 815–840.

[5] Meinshausen, N. “Quantile Regression Forests.” Journal of Machine Learning Research, Vol. 7, 2006, pp. 983–999.

확장 기능

R2009a에 개발됨