Main Content

TreeBagger

배깅 결정 트리의 앙상블

설명

TreeBagger 객체는 분류 또는 회귀를 위한 배깅 결정 트리의 앙상블입니다. 개별 결정 트리는 과적합되는 경향이 있습니다. 배깅(Bagging)은 부트스트랩 집계(bootstrap aggregation)의 약어로 과적합의 영향을 줄이고 일반화를 향상시키는 앙상블 방법입니다.

생성

TreeBagger 함수는 입력 데이터의 부트스트랩 표본을 사용하여 TreeBagger 앙상블 모델의 모든 트리를 성장시킵니다. 표본에 포함되지 않은 관측값은 해당 트리에 대해 "Out-of-bag"으로 간주됩니다. 이 함수는 랜덤 포레스트 알고리즘 [1]을 사용하여 각 결정 분할에 사용할 예측 변수의 일부를 임의로 선택합니다.

설명

기본적으로, TreeBagger 함수는 분류 결정 트리를 성장시킵니다. 회귀 결정 트리를 성장시키려면 이름-값 인수 Method"regression"으로 지정합니다.

예제

Mdl = TreeBagger(NumTrees,Tbl,ResponseVarName)은 테이블 Tbl에 포함된 예측 변수와 변수 Tbl.ResponseVarName의 클래스 레이블로 훈련된 NumTrees 배깅 분류 트리의 앙상블 객체(Mdl)를 반환합니다.

Mdl = TreeBagger(NumTrees,Tbl,formula)는 테이블 Tbl에 포함된 예측 변수로 훈련된 Mdl을 반환합니다. 입력 formulaMdl을 피팅하는 데 사용된 Tbl에 포함된 응답 변수와 예측 변수의 부분 집합에 대한 설명 모델입니다. Wilkinson Notation을 사용하여 formula를 지정합니다.

Mdl = TreeBagger(NumTrees,Tbl,Y)는 테이블 Tbl에 포함된 예측 변수 데이터와 배열 Y의 클래스 레이블로 훈련된 Mdl을 반환합니다.

예제

Mdl = TreeBagger(NumTrees,X,Y)는 행렬 X의 예측 변수 데이터와 배열 Y의 클래스 레이블로 훈련된 Mdl을 반환합니다.

예제

Mdl = TreeBagger(___,Name=Value)는 위에 열거된 입력 인수 조합을 사용하여 하나 이상의 이름-값 인수로 지정된 추가 옵션으로 Mdl을 반환합니다. 예를 들어, 이름-값 인수 PredictorSelection을 사용하여 범주형 예측 변수에 대한 최상의 분할을 찾는 데 사용되는 알고리즘을 지정할 수 있습니다.

입력 인수

모두 확장

배깅 앙상블의 결정 트리의 개수로, 양의 정수로 지정됩니다.

데이터형: single | double

모델을 훈련시키는 데 사용되는 표본 데이터로, 테이블로 지정됩니다. Tbl의 각 행은 하나의 관측값에 대응되고, 각 열은 하나의 예측 변수에 대응됩니다. 선택적으로, Tbl은 응답 변수에 대해 하나의 추가 열을 포함할 수 있습니다. 문자형 벡터로 구성된 셀형 배열 이외의 셀형 배열과 다중 열 변수는 허용되지 않습니다.

  • Tbl이 응답 변수를 포함하며 Tbl의 나머지 모든 변수를 예측 변수로 사용하려는 경우 ResponseVarName을 사용하여 응답 변수를 지정하십시오.

  • Tbl이 응답 변수를 포함하며 Tbl의 나머지 변수 중 일부만 예측 변수로 사용하려는 경우 formula를 사용하여 공식을 지정하십시오.

  • Tbl이 응답 변수를 포함하지 않는 경우 Y를 사용하여 응답 변수를 지정하십시오. 응답 변수의 길이와 Tbl의 행 개수는 동일해야 합니다.

응답 변수 이름으로, Tbl의 변수 이름으로 지정됩니다.

ResponseVarName은 문자형 벡터나 string형 스칼라로 지정해야 합니다. 예를 들어, 응답 변수 YTbl.Y로 저장된 경우 이를 "Y"로 지정하십시오. 이렇게 하지 않으면 모델을 훈련시킬 때 Y를 포함한 Tbl의 모든 열이 예측 변수로 처리됩니다.

응답 변수는 categorical형 배열, 문자형 배열, string형 배열, 논리형 벡터 또는 숫자형 벡터, 문자형 벡터로 구성된 셀형 배열이어야 합니다. Y가 문자형 배열인 경우, 응답 변수의 각 요소는 배열의 각 행에 대응되어야 합니다.

ClassNames 이름-값 인수를 사용하여 클래스의 순서를 지정하는 것이 좋습니다.

데이터형: char | string

응답 변수, 그리고 예측 변수의 부분 집합에 대한 설명 모델로, "Y~x1+x2+x3" 형식의 문자형 벡터나 string형 스칼라로 지정됩니다. 이 형식에서 Y는 응답 변수를 나타내고, x1, x2, x3은 예측 변수를 나타냅니다.

Tbl의 일부 변수를 모델 훈련에 사용할 예측 변수로 지정하려면 식을 사용하십시오. 사용자가 식을 지정하면 Tbl의 변수 중 해당 formula에 표시되지 않은 변수는 사용되지 않습니다.

식에 포함되는 변수 이름은 Tbl에 포함된 변수 이름(Tbl.Properties.VariableNames)이면서 동시에 유효한 MATLAB® 식별자여야 합니다. isvarname 함수를 사용하여 Tbl에 포함된 변수 이름을 확인할 수 있습니다. 변수 이름이 유효하지 않으면 matlab.lang.makeValidName 함수를 사용하여 변수 이름을 변환할 수 있습니다.

데이터형: char | string

배깅 결정 트리의 앙상블이 훈련되는 클래스 레이블 또는 응답 변수로, categorical형 배열, 문자형 배열, string형 배열, 논리형 벡터, 숫자형 벡터 또는 문자형 벡터로 구성된 셀형 배열로 지정됩니다.

  • Method"classification"으로 지정한 경우 클래스 레이블 Y에 다음이 적용됩니다.

    • Y의 각 요소는 X의 대응되는 행이 속하는 클래스를 정의합니다.

    • Y가 문자형 배열인 경우, 각 행은 하나의 클래스 레이블에 대응되어야 합니다.

    • TreeBagger 함수는 클래스 레이블을 문자형 벡터로 구성된 셀형 배열로 변환합니다.

  • Method"regression"으로 지정한 경우 응답 변수 Y는 n×1 숫자형 벡터입니다. 여기서 n은 관측값 개수입니다. Y의 각 요소는 X의 대응 행에 대한 응답 변수입니다.

Y의 길이와 X의 행 개수는 동일해야 합니다.

데이터형: categorical | char | string | logical | single | double | cell

예측 변수 데이터로, 숫자형 행렬로 지정됩니다.

X의 각 행은 하나의 관측값(발생 건 또는 예라고도 함)에 대응되고, 각 열은 하나의 변수(특징이라고도 함)에 대응됩니다.

Y의 길이와 X의 행 개수는 동일해야 합니다.

데이터형: double

이름-값 인수

선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

예: TreeBagger(100,X,Y,Method="regression",Surrogate="on",OOBPredictorImportance="on")은 100개 회귀 트리의 배깅 앙상블을 생성하고, 대리 분할을 사용하고 예측 변수 중요도 추정에 대한 Out-of-bag 정보를 저장하도록 지정합니다.

각 데이터 청크의 관측값 개수로, 양의 정수로 지정됩니다. 이 옵션은 tall형 배열에 TreeBagger를 사용하는 경우에만 적용됩니다. 자세한 내용은 확장 기능 항목을 참조하십시오.

예: ChunkSize=10000

데이터형: single | double

오분류 비용으로, 정사각 행렬 또는 구조체로 지정됩니다.

  • 정사각 행렬 Cost를 지정하고 관측값의 실제 클래스가 i이면 Cost(i,j)는 한 점을 클래스 j로 분류하는 데 드는 비용입니다. 즉, 행은 실제 클래스에 대응되고, 열은 예상된 클래스에 대응됩니다. Cost의 대응 행과 대응 열에 대한 클래스 순서를 지정하려면 ClassNames 이름-값 인수를 사용하십시오.

  • 구조체 S를 지정하는 경우, 이 구조체는 다음과 같은 두 개의 필드를 가져야 합니다.

    • 클래스 이름을 Y와 같은 데이터형의 변수로 포함하는 S.ClassNames

    • S.ClassNames에서와 같은 순서로 행과 열을 갖는 비용 행렬을 포함하는 S.ClassificationCosts

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

많이 편중된 Cost의 효과에 대한 자세한 내용은 알고리즘 항목을 참조하십시오.

예: Cost=[0,1;2,0]

데이터형: single | double | struct

범주형 예측 변수 목록으로, 다음 표에 있는 값 중 하나로 지정됩니다.

설명
양의 정수로 구성된 벡터

벡터의 각 요소는 대응되는 예측 변수가 범주형임을 나타내는 인덱스 값입니다. 인덱스 값은 1과 p 사이입니다. 여기서 p는 모델을 훈련시킬 때 사용되는 예측 변수의 개수입니다.

TreeBagger 함수가 입력 변수의 서브셋을 예측 변수로 사용하는 경우 함수는 해당 서브셋만 사용하여 예측 변수의 요소를 참조합니다. CategoricalPredictors 값은 응답 변수, 관측값 가중치 변수 또는 함수가 사용하지 않는 그 밖의 변수를 세지 않습니다.

논리형 벡터

요소의 값이 true이면 대응되는 예측 변수가 범주형임을 의미합니다. 벡터의 길이는 p입니다.

문자형 행렬행렬의 각 행은 예측 변수의 이름입니다. 이름은 PredictorNames의 요소와 일치해야 합니다. 문자형 행렬의 각 행의 길이가 같게 되도록 이름 뒤에 추가로 공백을 채웁니다.
string형 배열 또는 문자형 벡터로 구성된 셀형 배열배열의 각 요소는 예측 변수의 이름입니다. 이름은 PredictorNames의 요소와 일치해야 합니다.
"all"모든 예측 변수가 범주형 변수입니다.

기본적으로 예측 변수 데이터가 테이블(Tbl) 내에 있는 경우, 변수가 논리형 벡터, categorical형 벡터, 문자형 배열, string형 배열 또는 문자형 벡터로 구성된 셀형 배열이면 TreeBagger 함수는 그 변수를 범주형 변수라고 가정합니다. 예측 변수 데이터가 행렬(X)이면 TreeBagger 함수는 모든 예측 변수를 연속형 변수라고 가정합니다. 다른 모든 예측 변수를 범주형 예측 변수로 식별하려면 이러한 변수를 CategoricalPredictors 이름-값 인수를 사용하여 지정하십시오.

식별된 범주형 예측 변수에 대해 TreeBagger 함수는 범주형 변수에 순서가 지정되어 있는지에 따라 서로 다른 두 가지 체계를 사용하여 가변수를 생성합니다. 순서가 지정되지 않은 범주형 변수에 대해 TreeBagger 함수는 범주형 변수의 각 수준마다 하나의 가변수를 생성합니다. 순서가 지정된 범주형 변수에 대해 TreeBagger 함수는 범주 개수보다 하나가 적은 가변수를 생성합니다. 자세한 내용은 Automatic Creation of Dummy Variables 항목을 참조하십시오.

예: CategoricalPredictors="all"

데이터형: single | double | logical | char | string | cell

결정 트리 유형으로, "classification" 또는 "regression"으로 지정됩니다. 회귀 트리의 경우 Y는 숫자형이어야 합니다.

예: Method="regression"

리프 노드 관측값의 최소 개수로, 양의 정수로 지정됩니다. 각 리프는 트리 리프당 최소 MinLeafSize개의 관측값을 가집니다. 기본적으로 MinLeafSize는 분류 트리의 경우 1이고 회귀 트리의 경우 5입니다.

예: MinLeafSize=4

데이터형: single | double

각 결정 분할에 대한 예측 변수(무작위로 선택됨)의 개수로, 양의 정수 또는 "all"로 지정됩니다. 기본적으로 NumPredictorsToSample은 분류 트리의 경우 변수 개수의 제곱근이고 회귀 트리의 경우 변수 개수의 삼분의 일입니다. 디폴트 개수가 정수가 아닌 경우 양의 무한대 방향의 가장 가까운 정수로 반올림됩니다. NumPredictorsToSample"all" 이외의 값으로 설정하면 브라이만(Breiman)의 랜덤 포레스트 알고리즘 [1]이 사용됩니다.

예: NumPredictorsToSample=5

데이터형: single | double | char | string

소프트웨어가 명령 창에 훈련 진행 상황에 대한 메시지를 표시한 후 성장된 트리(훈련 주기)의 개수로, 음이 아닌 정수로 지정됩니다. 기본적으로 소프트웨어는 진단 메시지를 표시하지 않습니다.

예: NumPrint=10

데이터형: single | double

각각의 새로운 트리를 성장시키기 위해 입력 데이터에서 복원추출할 입력 데이터의 비율로, (0,1] 범위의 양의 스칼라로 지정됩니다.

예: InBagFraction=0.5

데이터형: single | double

앙상블에 Out-of-bag 정보를 저장할지 여부를 나타내는 표시자로, "on" 또는 "off"로 지정됩니다. 어떤 관측값이 각 트리에 대해 Out-of-bag인지에 대한 정보를 저장하려면 OOBPrediction"on"으로 지정하십시오. TreeBagger는 이 정보를 사용하여 앙상블의 각 트리에 대한 예측된 클래스 확률을 계산할 수 있습니다.

예: OOBPrediction="off"

앙상블의 특징 중요도에 대한 Out-of-bag 추정값을 저장할지 여부를 나타내는 표시자로, "on" 또는 "off"로 지정됩니다. OOBPredictorImportance"on"으로 지정한 경우 TreeBagger 함수는 OOBPrediction"on"으로 설정합니다. 예측 변수 중요도를 분석하려면 PredictorSelection"curvature" 또는 "interaction-curvature"로 지정하십시오.

예: OOBPredictorImportance="on"

병렬 계산 실행 및 난수 스트림 설정을 위한 옵션으로, 구조체로 지정됩니다. statset을 사용하여 Options 구조체를 생성합니다. 아래 표에는 Options 필드와 그 값이 나와 있습니다.

필드 이름디폴트 값
UseParallel병렬 계산을 실행하려면 이 값을 true로 설정합니다.false
UseSubstreams

재현 가능한 방식으로 병렬 계산을 실행하려면 이 값을 true로 설정합니다.

재현 가능한 방식으로 계산하려면 Streams를 서브스트림을 허용하는 유형인 "mlfg6331_64" 또는 "mrg32k3a"로 설정하십시오.

false
Streams이 값을 RandStream 객체 또는 이러한 객체 하나로 구성된 셀형 배열로 지정합니다.Streams를 지정하지 않을 경우 TreeBagger 함수가 디폴트 스트림을 사용합니다.

참고

병렬 계산을 실행하려면 Parallel Computing Toolbox™가 필요합니다.

예: Options=statset(UseParallel=true)

데이터형: struct

예측 변수 이름으로, 고유한 이름으로 구성된 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를 사용하여 훈련에 사용할 예측 변수를 선택할 수 있습니다. 즉, TreeBagger 함수는 PredictorNames의 예측 변수와 이에 대한 응답 변수만을 훈련 중에 사용합니다.

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

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

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

예: PredictorNames=["SepalLength","SepalWidth","PetalLength","PetalWidth"]

데이터형: string | cell

복원추출을 나타내는 표시자로, "on" 또는 "off"로 지정됩니다. SampleWithReplacement"on"으로 지정하여 복원추출하거나 "off"로 지정하여 비복원추출합니다. SampleWithReplacement"off"로 설정하면 이름-값 인수 InBagFraction을 1보다 작은 값으로 설정해야 합니다.

예: SampleWithReplacement="on"

2-클래스 학습에 대한 각 클래스의 사전 확률로, 다음 표에 나와 있는 값으로 지정됩니다.

설명
"empirical"클래스 사전 확률은 Y의 클래스 상대 도수입니다.
"uniform"모든 클래스 사전 확률은 1/K와 같습니다. 여기서 K는 클래스 개수입니다.
숫자형 벡터벡터의 각 요소는 클래스 사전 확률입니다. Mdl.ClassNames에 따라 요소의 순서를 지정하거나 ClassNames 이름-값 인수를 사용하여 순서를 지정합니다. 소프트웨어는 합이 1이 되도록 요소를 정규화합니다.
구조체

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

  • S.ClassNames는 클래스 이름을 Y와 같은 유형의 변수로 포함합니다.

  • S.ClassProbs는 대응되는 사전 확률로 구성된 벡터를 포함합니다. 소프트웨어는 합이 1이 되도록 벡터의 요소를 정규화합니다.

비용 행렬을 지정하면 TreeBagger 모델의 Prior 속성이 오분류 비용에 대해 조정된 사전 확률을 저장합니다. 자세한 내용은 알고리즘 항목을 참조하십시오.

이 인수는 2-클래스 학습의 경우에만 유효합니다.

예: Prior=struct(ClassNames=["setosa" "versicolor" "virginica"],ClassProbs=1:3)

데이터형: char | string | single | double | struct

참고

이 이름-값 인수 외에도 TreeBagger 함수는 TreeBagger 함수의 추가 이름-값 인수에 나열된 fitctreefitrtree의 이름-값 인수를 받습니다.

출력 인수

모두 확장

배깅 결정 트리의 앙상블로, TreeBagger 객체로 반환됩니다.

속성

모두 확장

배깅 속성

이 속성은 읽기 전용입니다.

훈련 관측값에 대한 Out-of-bag 예측값을 계산할지 여부를 나타내는 표시자로, 숫자형 또는 논리값 1(true)이나 0(false)으로 지정됩니다. 이 속성이 true인 경우 다음이 적용됩니다.

  • TreeBagger 객체가 속성 OOBIndicesOOBInstanceWeight를 가집니다.

  • 객체 함수 oobError, oobMargin, oobMeanMargin을 사용할 수 있습니다.

이 속성은 읽기 전용입니다.

Out-of-bag 변수 중요도를 계산할지 여부를 나타내는 표시자로, 숫자형 또는 논리값 1(true)이나 0(false)으로 지정됩니다. 이 속성이 true인 경우 다음이 적용됩니다.

  • TreeBagger 객체가 속성 OOBPermutedPredictorDeltaError, OOBPermutedPredictorDeltaMeanMargin, OOBPermutedPredictorCountRaiseMargin을 가집니다.

  • 속성 ComputeOOBPredictiontrue입니다.

이 속성은 읽기 전용입니다.

각 부트스트랩 복제에 대해 복원추출 방식으로 무작위로 선택된 관측값(In-bag 관측값)의 비율로, 숫자형 스칼라로 지정됩니다. 각 복제의 크기는 Nobs×InBagFraction이며, 여기서 Nobs는 훈련 데이터의 관측값 개수입니다.

데이터형: single | double

이 속성은 읽기 전용입니다.

Out-of-bag 인덱스로, 논리형 배열로 지정됩니다. 이 속성은 Nobs×NumTrees 배열입니다. 여기서 Nobs는 훈련 데이터의 관측값 개수이고 NumTrees는 앙상블의 트리 개수입니다. OOBIndices(i,j) 요소가 true이면 관측값 i는 트리 j에 대해 Out-of-bag입니다(즉, TreeBagger 함수가 트리 j를 성장시키는 데 사용한 훈련 데이터에 관측값 i를 선택하지 않음).

이 속성은 읽기 전용입니다.

각 관측값에 대한 Out-of-bag 트리의 개수로, 숫자형 벡터로 지정됩니다. 이 속성은 Nobs×1 벡터입니다. 여기서 Nobs는 훈련 데이터의 관측값 개수입니다. OOBInstanceWeight(i) 요소는 관측값 i에 대한 Out-of-bag 응답 변수를 계산하는 데 사용되는 트리의 개수를 포함합니다.

데이터형: single | double

이 속성은 읽기 전용입니다.

마진을 높이기 위한 예측 변수(특징) 중요도로, 숫자형 벡터로 지정됩니다. 이 속성은 1×Nvars 벡터입니다. 여기서 Nvars는 훈련 데이터의 변수 개수입니다. 각 변수에 대해 측정값은 해당 변수의 값이 Out-of-bag 관측값에서 치환되는 경우 높아진 마진의 개수와 낮아진 마진의 개수 간의 차이입니다. 이 측정값은 모든 트리에 대해 계산된 다음 전체 앙상블에 대해 평균을 내고 전체 앙상블에 대한 표준편차로 나뉩니다.

회귀 트리의 경우 이 속성은 비어 있습니다([]).

데이터형: single | double

이 속성은 읽기 전용입니다.

예측 오차에 대한 예측 변수(특징) 중요도로, 숫자형 벡터로 지정됩니다. 이 속성은 1×Nvars 벡터입니다. 여기서 Nvars는 훈련 데이터의 변수(열) 개수입니다. 각 변수에 대해 측정값은 해당 변수의 값이 Out-of-bag 관측값에서 치환되는 경우 예측 오차의 증가분입니다. 이 측정값은 모든 트리에 대해 계산된 다음 전체 앙상블에 대해 평균을 내고 전체 앙상블에 대한 표준편차로 나뉩니다.

데이터형: single | double

이 속성은 읽기 전용입니다.

분류 마진에 대한 예측 변수(특징) 중요도로, 숫자형 벡터로 지정됩니다. 이 속성은 1×Nvars 벡터입니다. 여기서 Nvars는 훈련 데이터의 변수(열) 개수입니다. 각 변수에 대해 측정값은 해당 변수의 값이 Out-of-bag 관측값에서 치환되는 경우 분류 마진의 감소분입니다. 이 측정값은 모든 트리에 대해 계산된 다음 전체 앙상블에 대해 평균을 내고 전체 앙상블에 대한 표준편차로 나뉩니다.

회귀 트리의 경우 이 속성은 비어 있습니다([]).

데이터형: single | double

트리 속성

이 속성은 읽기 전용입니다.

각 예측 변수에 대한 분할 기준 기여로, 숫자형 벡터로 지정됩니다. 이 속성은 1×Nvars 벡터입니다. 여기서 Nvars는 분할 기준의 변경 횟수입니다. 각 변수의 분할에 대한 분할 기준의 변화가 합산된 다음 성장된 트리의 전체 앙상블에 대한 합이 평균화됩니다.

데이터형: single | double

이 속성은 읽기 전용입니다.

리프를 병합할지 여부를 나타내는 표시자로, 숫자형 또는 논리값 1(true)이나 0(false)으로 지정됩니다. 이 속성은 소프트웨어가 전체 위험을 줄이지 않는 분할에 대해 결정 트리 리프를 동일한 부모와 병합하는 경우 true입니다. 그렇지 않은 경우, 이 속성은 false입니다.

이 속성은 읽기 전용입니다.

리프 노드 관측값의 최소 개수로, 양의 정수로 지정됩니다. 각 리프는 최소 MinLeafSize개의 관측값을 가집니다. 기본적으로 MinLeafSize는 분류 트리의 경우 1이고 회귀 트리의 경우 5입니다. 결정 트리 훈련의 경우 fitctreefitrtree는 이름-값 인수 MinParentSize2*MinLeafSize로 설정합니다.

데이터형: single | double

이 속성은 읽기 전용입니다.

배깅 앙상블의 결정 트리의 개수로, 양의 정수로 지정됩니다.

데이터형: single | double

이 속성은 읽기 전용입니다.

가지치기된 하위 트리에 대한 최적의 시퀀스를 추정할지 여부를 나타내는 표시자로, 숫자형 또는 논리값 1(true)이나 0(false)으로 지정됩니다. Prune 속성은 결정 트리가 가지치기되면 true이고 가지치기되지 않으면 false입니다. 결정 트리의 가지치기는 앙상블에 권장되지 않습니다.

이 속성은 읽기 전용입니다.

각 결정 트리를 복원추출할지 여부를 나타내는 표시자로, 숫자형 또는 논리값 1(true)이나 0(false)으로 지정됩니다. 이 속성은 TreeBagger 함수가 각 결정 트리를 복원추출하는 경우 true이고 그렇지 않은 경우 false입니다.

이 속성은 읽기 전용입니다.

변수 연관성의 예측 측도로, 숫자형 행렬로 지정됩니다. 이 속성은 Nvars×Nvars 행렬입니다. 여기서 Nvars는 예측 변수 개수입니다. 이 속성은 성장된 트리의 전체 앙상블에 대해 평균을 낸 변수 연관성의 예측 측도를 포함합니다.

  • Surrogate 이름-값 인수가 "on"으로 설정된 앙상블을 성장시키면 각 트리에 대해 이 행렬은 대리 분할에 대해 평균을 낸 예측 연관성 측도로 채워집니다.

  • Surrogate 이름-값 인수가 "off"로 설정된 앙상블을 성장시키면 SurrogateAssociation 속성은 단위 행렬입니다. 기본적으로 Surrogate"off"로 설정됩니다.

데이터형: single | double

이 속성은 읽기 전용입니다.

TreeBagger 함수에 지정되는 이름-값 인수로, 셀형 배열로 지정됩니다. TreeBagger 함수는 배깅된 앙상블에 대한 새 트리를 성장시킬 때 이러한 이름-값 인수를 사용합니다.

이 속성은 읽기 전용입니다.

배깅 앙상블의 결정 트리로, NumTrees×1 셀형 배열로 지정됩니다. 각 트리는 CompactClassificationTree 객체 또는 CompactRegressionTree 객체입니다.

예측 변수 속성

이 속성은 읽기 전용입니다.

각 예측 변수에 대한 결정 분할 개수로, 숫자형 벡터로 지정됩니다. 이 속성은 1×Nvars 벡터입니다. 여기서 Nvars는 예측 변수의 개수입니다. NumPredictorSplit의 각 요소는 모든 트리에 대해 합한 예측 변수에 적용된 분할 수를 나타냅니다.

데이터형: single | double

이 속성은 읽기 전용입니다.

각 결정 분할에 대해 임의로 선택할 예측 변수의 개수로, 양의 정수로 지정됩니다. 기본적으로 이 속성은 분류 트리의 경우 변수의 총 개수의 제곱근이고 회귀 트리의 경우 변수의 총 개수의 삼분의 일입니다.

데이터형: single | double

이 속성은 읽기 전용입니다.

각 관측값에 대한 이상값 측정으로, 숫자형 벡터로 지정됩니다. 이 속성은 Nobs×1 벡터입니다. 여기서 Nobs는 훈련 데이터의 관측값 개수입니다.

데이터형: single | double

이 속성은 읽기 전용입니다.

예측 변수 이름으로, 문자형 벡터로 구성된 셀형 배열로 지정됩니다. PredictorNames에 포함된 요소의 순서는 예측 변수 이름이 훈련 데이터 X에 나타나는 순서와 일치합니다.

이 속성은 읽기 전용입니다.

배깅 앙상블을 훈련시키는 데 사용되는 예측 변수로, 숫자형 배열로 지정됩니다. 이 속성은 Nobs×Nvars 배열입니다. 여기서 Nobs는 훈련 데이터의 관측값(행) 개수이고 Nvars는 훈련 데이터의 변수(열) 개수입니다.

데이터형: single | double

응답 변수 속성

predict 또는 oobPredict에서 반환되는 디폴트 예측 값으로, "", "MostPopular" 또는 숫자형 스칼라로 지정됩니다. 예측이 불가능한 경우(예: oobPredict가 앙상블의 모든 트리에 대해 In-bag인 관측값에 대한 응답 변수를 예측하는 경우) 이 속성은 predict 또는 oobPredict 객체 함수가 반환하는 예측 값을 제어합니다.

  • 분류 트리의 경우 DefaultYfit"" 또는 "MostPopular"로 설정할 수 있습니다. "MostPopular"(분류의 디폴트 값)를 지정하는 경우 속성값은 훈련 데이터에서 가장 가능성이 높은 클래스의 이름입니다. ""을 지정하는 경우 In-bag 관측값은 Out-of-bag 오차 및 마진 계산에서 제외됩니다.

  • 회귀 트리의 경우 DefaultYfit을 모든 숫자형 스칼라로 설정할 수 있습니다. 회귀의 디폴트 값은 훈련 데이터에 대한 응답 변수의 평균입니다. DefaultYfitNaN으로 설정하는 경우 In-bag 관측값은 Out-of-bag 오차 및 마진 계산에서 제외됩니다.

예: Mdl.DefaultYfit="MostPopular"

데이터형: single | double | char | string

이 속성은 읽기 전용입니다.

클래스 레이블 또는 응답 변수 데이터로, 문자형 벡터로 구성된 셀형 배열 또는 숫자형 벡터로 지정됩니다.

  • Method 이름-값 인수를 "classification"으로 설정하는 경우 이 속성은 클래스 레이블을 나타냅니다. Y의 각 행은 이에 대응되는 X 행의 관측된 분류를 나타냅니다.

  • Method 이름-값 인수를 "regression"으로 설정하는 경우 이 속성은 응답 변수 데이터를 나타내며 숫자형 벡터입니다.

데이터형: single | double | cell

훈련 속성

이 속성은 읽기 전용입니다.

앙상블 유형으로, 분류 앙상블의 경우 "classification"으로 지정되고 회귀 앙상블의 경우 "regression"으로 지정됩니다.

이 속성은 읽기 전용입니다.

훈련 데이터 관측값 간 근접도로, 숫자형 배열로 지정됩니다. 이 속성은 Nobs×Nobs 배열입니다. 여기서 Nobs는 훈련 데이터의 관측값 개수입니다. 이 배열은 관측값 간 근접도의 측정값을 포함합니다. 두 관측값에 있어서 근접도는 이들 관측값이 동일한 리프에 도달하는 트리의 비율로 정의됩니다. 이 배열은 대칭이고 대각선상 요소는 1이며 0에서 1 사이의 비대각선 요소를 갖습니다.

데이터형: single | double

이 속성은 읽기 전용입니다.

관측값 가중치로, 음이 아닌 값으로 구성된 벡터로 지정됩니다. 이 속성은 Y와 행 개수가 동일해야 합니다. W의 각 요소는 이에 대응되는 Y의 관측값의 상대적 중요도를 지정합니다. TreeBagger 함수는 관측값 가중치를 사용하여 앙상블의 각 결정 트리를 성장시킵니다.

데이터형: single | double

분류 속성

이 속성은 읽기 전용입니다.

훈련 모델에 사용되는 고유한 클래스 이름으로, 문자형 벡터로 구성된 셀형 배열로 지정됩니다.

회귀 트리의 경우 이 속성은 비어 있습니다([]).

이 속성은 읽기 전용입니다.

오분류 비용으로, 숫자형 정사각 행렬로 지정됩니다. 요소 Cost(i,j)는 실제 클래스가 i인 한 점을 클래스 j로 분류하는 비용입니다. 행은 실제 클래스에 대응되고, 열은 예측 클래스에 대응됩니다. Cost의 행과 열 순서는 ClassNames의 클래스 순서와 일치합니다.

회귀 트리의 경우 이 속성은 비어 있습니다([]).

데이터형: single | double

이 속성은 읽기 전용입니다.

사전 확률로, 숫자형 벡터로 지정됩니다. Prior의 요소 순서는 Mdl.ClassNames의 요소 순서와 일치합니다.

TreeBagger 함수의 Cost 이름-값 인수를 사용하여 비용 행렬을 지정하면 TreeBagger 모델 객체의 Prior 속성이 오분류 비용에 대해 조정된 사전 확률(Prior 이름-값 인수로 지정됨)을 저장합니다. 자세한 내용은 알고리즘 항목을 참조하십시오.

회귀 트리의 경우 이 속성은 비어 있습니다([]).

데이터형: single | double

객체 함수

모두 확장

compactCompact ensemble of decision trees
append앙상블에 새로운 트리 추가
growTreesTrain additional trees and add to ensemble
partialDependenceCompute partial dependence
plotPartialDependenceCreate partial dependence plot (PDP) and individual conditional expectation (ICE) plots
errorError (misclassification probability or MSE)
meanMarginMean classification margin
margin분류 마진
oobErrorOut-of-bag error
oobMeanMarginOut-of-bag mean margins
oobMarginOut-of-bag margins
oobQuantileErrorOut-of-bag quantile loss of bag of regression trees
quantileErrorQuantile loss using bag of regression trees
oobPredictEnsemble predictions for out-of-bag observations
oobQuantilePredictQuantile predictions for out-of-bag observations from bag of regression trees
predictPredict responses using ensemble of bagged decision trees
quantilePredictPredict response quantile using bag of regression trees
fillproxProximity matrix for training data
mdsproxMultidimensional scaling of proximity matrix

예제

모두 축소

피셔(Fisher)의 붓꽃 데이터 세트에 대해 배깅 분류 트리의 앙상블을 만듭니다. 그런 다음, 첫 번째 성장된 트리를 확인하고, Out-of-bag 분류 오차를 플로팅하고, Out-of-bag 관측값에 대한 레이블을 예측합니다.

fisheriris 데이터 세트를 불러옵니다. X를 150개 붓꽃에 대한 4개의 꽃잎 측정값을 포함하는 숫자형 행렬로 생성합니다. Y를 이에 대응되는 붓꽃 종을 포함하는 문자형 벡터로 구성된 셀형 배열로 생성합니다.

load fisheriris
X = meas;
Y = species;

재현이 가능하도록 난수 생성기를 default로 설정합니다.

rng("default")

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

Mdl = TreeBagger(50,X,Y,...
    Method="classification",...
    OOBPrediction="on")
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 속성은 앙상블에 대해 훈련된 분류 트리를 포함하는 50×1 셀형 벡터입니다. 각 트리는 CompactClassificationTree 객체입니다. 첫 번째 훈련된 분류 트리의 그래픽 표시를 확인합니다.

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

{"String":"Figure Classification tree viewer contains an axes object and other objects of type uimenu, uicontrol. The axes object contains 27 objects of type line, text.","Tex":[],"LaTex":[]}

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

plot(oobError(Mdl))
xlabel("Number of Grown Trees")
ylabel("Out-of-Bag Classification Error")

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

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

Out-of-bag 관측값에 대한 레이블을 예측합니다. 임의의 10개 관측값으로 구성된 집합에 대한 결과를 표시합니다.

oobLabels = oobPredict(Mdl);
ind = randsample(length(oobLabels),10);
table(Y(ind),oobLabels(ind),...
    VariableNames=["TrueLabel" "PredictedLabel"])
ans=10×2 table
      TrueLabel       PredictedLabel
    ______________    ______________

    {'setosa'    }    {'setosa'    }
    {'virginica' }    {'virginica' }
    {'setosa'    }    {'setosa'    }
    {'virginica' }    {'virginica' }
    {'setosa'    }    {'setosa'    }
    {'virginica' }    {'virginica' }
    {'setosa'    }    {'setosa'    }
    {'versicolor'}    {'versicolor'}
    {'versicolor'}    {'virginica' }
    {'virginica' }    {'virginica' }

carsmall 데이터 세트에 대해 배깅 회귀 트리의 앙상블을 만듭니다. 그런 다음, 조건부 평균 응답 변수와 조건부 분위수를 예측합니다.

carsmall 데이터 세트를 불러옵니다. X를 자동차 엔진 배기량 값을 포함하는 숫자형 벡터로 만듭니다. Y를 대응되는 갤런당 마일 주행거리를 포함하는 숫자형 벡터로 만듭니다.

load carsmall
X = Displacement;
Y = MPG;

재현이 가능하도록 난수 생성기를 default로 설정합니다.

rng("default")

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

Mdl = TreeBagger(100,X,Y,...
    Method="regression")
Mdl = 
  TreeBagger
Ensemble with 100 bagged decision trees:
                    Training X:               [94x1]
                    Training Y:               [94x1]
                        Method:           regression
                 NumPredictors:                    1
         NumPredictorsToSample:                    1
                   MinLeafSize:                    5
                 InBagFraction:                    1
         SampleWithReplacement:                    1
          ComputeOOBPrediction:                    0
 ComputeOOBPredictorImportance:                    0
                     Proximity:                   []

  Properties, Methods

회귀 트리의 경우 MdlTreeBagger의 앙상블입니다.

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

predX = linspace(min(X),max(X),10)';
YMean = predict(Mdl,predX);
YQuartiles = quantilePredict(Mdl,predX,...
    Quantile=[0.25,0.5,0.75]);

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

hold on
plot(X,Y,"o");
plot(predX,YMean)
plot(predX,YQuartiles)
hold off
ylabel("Fuel Economy")
xlabel("Engine Displacement")
legend("Data","Mean Response",...
    "First Quartile","Median",...,
    "Third Quartile")

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

두 개의 배깅 회귀 트리 앙상블을 생성합니다. 하나는 예측 변수 분할을 위한 표준 CART 알고리즘을 사용하고 다른 하나는 예측 변수 분할을 위한 곡률 검정을 사용합니다. 그런 다음, 두 앙상블의 예측 변수 중요도 추정값을 비교합니다.

carsmall 데이터 세트를 불러오고 변수 Cylinders, Mfg, Model_Year를 범주형 변수로 변환합니다. 그런 다음, 범주형 변수로 표현된 범주의 개수를 표시합니다.

load carsmall
Cylinders = categorical(Cylinders);
Mfg = categorical(cellstr(Mfg));
Model_Year = categorical(Model_Year);

numel(categories(Cylinders))
ans = 3
numel(categories(Mfg))
ans = 28
numel(categories(Model_Year))
ans = 3

8개의 자동차 메트릭을 포함하는 테이블을 생성합니다.

Tbl = table(Acceleration,Cylinders,Displacement,...
    Horsepower,Mfg,Model_Year,Weight,MPG);

재현이 가능하도록 난수 생성기를 default로 설정합니다.

rng("default")

전체 데이터 세트를 사용하여 200개 배깅 회귀 트리의 앙상블을 훈련시킵니다. 데이터에 누락값이 있으므로 대리 분할을 사용하도록 지정합니다. 예측 변수 중요도 추정에 대한 Out-of-bag 정보를 저장합니다.

기본적으로 TreeBagger는 예측 변수 분할을 위한 알고리즘인 표준 CART를 사용합니다. 변수 CylindersModel_Year에는 각각 3개 범주만 있기 때문에 표준 CART가 이 두 변수를 사용하는 대신 연속형 예측 변수를 분할하려 합니다.

MdlCART = TreeBagger(200,Tbl,"MPG",...
    Method="regression",Surrogate="on",...
    OOBPredictorImportance="on");

TreeBagger는 속성 OOBPermutedPredictorDeltaError에 예측 변수 중요도 추정값을 저장합니다.

impCART = MdlCART.OOBPermutedPredictorDeltaError;

전체 데이터 세트를 사용하여 200개 회귀 트리로 구성된 랜덤 포레스트를 훈련시킵니다. 무편향 트리를 성장시키려면 예측 변수 분할에 곡률 검정을 사용하도록 지정하십시오.

MdlUnbiased = TreeBagger(200,Tbl,"MPG",...
    Method="regression",Surrogate="on",...
    PredictorSelection="curvature",...
    OOBPredictorImportance="on");

impUnbiased = MdlUnbiased.OOBPermutedPredictorDeltaError; 

막대 그래프를 만들어 두 앙상블에 대한 예측 변수 중요도 추정값 impCARTimpUnbiased를 비교합니다.

tiledlayout(1,2,Padding="compact");

nexttile
bar(impCART)
title("Standard CART")
ylabel("Predictor Importance Estimates")
xlabel("Predictors")
h = gca;
h.XTickLabel = MdlCART.PredictorNames;
h.XTickLabelRotation = 45;
h.TickLabelInterpreter = "none";

nexttile
bar(impUnbiased);
title("Curvature Test")
ylabel("Predictor Importance Estimates")
xlabel("Predictors")
h = gca;
h.XTickLabel = MdlUnbiased.PredictorNames;
h.XTickLabelRotation = 45;
h.TickLabelInterpreter = "none";

Figure contains 2 axes objects. Axes object 1 with title Standard CART contains an object of type bar. Axes object 2 with title Curvature Test contains an object of type bar.

CART 모델의 경우 연속형 예측 변수 Weight는 두 번째로 중요한 예측 변수입니다. 무편향 모델의 경우 값과 순위에서 Weight의 예측 변수 중요도는 더 낮습니다.

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

tall형 배열에 대한 계산을 수행할 때 MATLAB®은 병렬 풀(Parallel Computing Toolbox™를 사용할 경우 디폴트 값) 또는 로컬 MATLAB 세션을 사용합니다. Parallel Computing Toolbox가 있는 상태에서 로컬 MATLAB 세션을 사용하여 예제를 실행하려면 mapreducer 함수를 사용하여 전역 실행 환경을 변경하십시오.

mapreducer(0)

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

ds = datastore("airlinesmall.csv");
ds.SelectedVariableNames = ["Month" "DayofMonth" "DayOfWeek",...
                            "DepTime" "ArrDelay" "Distance" "DepDelay"];
ds.TreatAsMissing = "NA";
tt  = tall(ds)
tt =

  Mx7 tall table

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

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

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

Y = tt.DepDelay > 10
Y =

  Mx1 tall logical array

   1
   0
   1
   1
   0
   1
   0
   0
   :
   :

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

X = tt{:,1:end-1}
X =

  Mx6 tall double matrix

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

클래스 1에 있는 관측값에 임의로 두 배의 가중치를 할당하여 관측값 가중치에 대한 tall형 배열 W를 생성합니다.

W = Y+1;

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

R = rmmissing([X Y W]);
X = R(:,1:end-2); 
Y = R(:,end-1); 
W = R(:,end);

전체 데이터 세트를 사용하여 20개 배깅 분류 트리의 앙상블을 훈련시킵니다. 가중 벡터와 균등 사전 확률을 지정합니다. 재현이 가능하도록 rngtallrng를 사용하여 난수 생성기의 시드값을 설정합니다. 결과는 워커의 개수 및 tall형 배열의 실행 환경에 따라 다를 수 있습니다. 자세한 내용은 Control Where Your Code Runs 항목을 참조하십시오.

rng("default") 
tallrng("default")
tMdl = TreeBagger(20,X,Y,...
    Weights=W,Prior="uniform")
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 1: Completed in 0.98 sec
Evaluation completed in 1.2 sec
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 1: Completed in 1.5 sec
Evaluation completed in 1.7 sec
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 1: Completed in 6.5 sec
Evaluation completed in 6.5 sec
tMdl = 
  CompactTreeBagger
Ensemble with 20 bagged decision trees:
              Method:       classification
       NumPredictors:                    6
          ClassNames: '0' '1'

  Properties, Methods

tMdl은 20개의 배깅 결정 트리를 갖는 CompactTreeBagger의 앙상블입니다. tall형 데이터의 경우 TreeBagger 함수는 CompactTreeBagger 객체를 반환합니다.

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

terr = error(tMdl,X,Y,Weights=W)
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 1: Completed in 5.1 sec
Evaluation completed in 5.1 sec
terr = 20×1

    0.1420
    0.1214
    0.1115
    0.1078
    0.1037
    0.1027
    0.1005
    0.0997
    0.0981
    0.0983
      ⋮

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

avg_terr = mean(terr)
avg_terr = 0.1022

세부 정보

모두 확장

  • TreeBagger 모델 Mdl의 경우 Trees 속성은 Mdl.NumTrees CompactClassificationTree 또는 CompactRegressionTree 객체로 구성된 셀형 벡터를 포함합니다. 다음을 입력하여 성장된 트리 t의 그래픽 표시를 확인합니다.

    view(Mdl.Trees{t})

  • 회귀 문제의 경우 TreeBagger는 평균 및 분위수 회귀(즉, 분위수 회귀 포레스트 [5])를 지원합니다.

    • 데이터를 지정하여 평균 응답 변수를 예측하거나 평균 제곱 오차를 추정하려면 TreeBagger 모델 객체와 데이터를 각각 predict 또는 error에 전달합니다. Out-of-bag 관측값에 대해 유사한 작업을 수행하려면 oobPredict 또는 oobError를 사용합니다.

    • 데이터를 지정하여 응답 변수 분포의 분위수 또는 분위수 오차를 추정하려면 TreeBagger 모델 객체와 데이터를 각각 quantilePredict 또는 quantileError에 전달합니다. Out-of-bag 관측값에 대해 유사한 작업을 수행하려면 oobQuantilePredict 또는 oobQuantileError를 사용합니다.

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

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

    • 목표는 예측 변수 중요도를 분석하는 것입니다. TreeBaggerOOBPermutedPredictorDeltaError 속성에 예측 변수 중요도 추정값을 저장합니다.

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

알고리즘

  • Cost, PriorWeights 이름-값 인수를 지정할 경우 출력 모델 객체는 지정된 값을 각각 Cost, PriorW 속성에 저장합니다. Cost 속성이 사용자가 지정한 비용 행렬(C)을 수정 없이 저장합니다. Prior 속성과 W 속성은 각각 정규화한 후의 사전 확률 및 관측값 가중치를 저장합니다. 모델 훈련 시, 소프트웨어는 비용 행렬에 있는 벌점을 통합하도록 사전 확률과 관측값 가중치를 업데이트합니다. 자세한 내용은 오분류 비용 행렬, 사전 확률 및 관측값 가중치 항목을 참조하십시오.

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

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

대체 기능

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

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

참고 문헌

[1] Breiman, Leo. "Random Forests." Machine Learning 45 (2001): 5–32. https://doi.org/10.1023/A:1010933404324.

[2] Breiman, Leo, Jerome Friedman, Charles J. Stone, and R. A. Olshen. Classification and Regression Trees. Boca Raton, FL: CRC Press, 1984.

[3] Loh, Wei-Yin. "Regression Trees with Unbiased Variable Selection and Interaction Detection." Statistica Sinica 12, no. 2 (2002): 361–386. https://www.jstor.org/stable/24306967.

[4] Loh, Wei-Yin, and Yu-Shan Shih. "Split Selection for Classification Trees." Statistica Sinica 7, no. 4 (1997): 815–840. https://www.jstor.org/stable/24306157.

[5] Meinshausen, Nicolai. "Quantile Regression Forests." Journal of Machine Learning Research 7, no. 35 (2006): 983–999. https://jmlr.org/papers/v7/meinshausen06a.html.

[6] Genuer, Robin, Jean-Michel Poggi, Christine Tuleau-Malot, and Nathalie Villa-Vialanei. "Random Forests for Big Data." Big Data Research 9 (2017): 28–46. https://doi.org/10.1016/j.bdr.2017.07.003.

확장 기능

버전 내역

R2009a에 개발됨

모두 확장