이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
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
을 반환합니다. 입력 formula
는 Mdl
을 피팅하는 데 사용된 Tbl
에 포함된 응답 변수와 예측 변수의 부분 집합에 대한 설명 모델입니다. Wilkinson Notation을 사용하여 formula
를 지정합니다.
는 위에 열거된 입력 인수 조합을 사용하여 하나 이상의 이름-값 인수로 지정된 추가 옵션으로 Mdl
= TreeBagger(___,Name=Value
)Mdl
을 반환합니다. 예를 들어, 이름-값 인수 PredictorSelection
을 사용하여 범주형 예측 변수에 대한 최상의 분할을 찾는 데 사용되는 알고리즘을 지정할 수 있습니다.
입력 인수
NumTrees
— 결정 트리의 개수
양의 정수
배깅 앙상블의 결정 트리의 개수로, 양의 정수로 지정됩니다.
데이터형: single
| double
Tbl
— 표본 데이터
table형
모델을 훈련시키는 데 사용되는 표본 데이터로, 테이블로 지정됩니다. Tbl
의 각 행은 하나의 관측값에 대응되고, 각 열은 하나의 예측 변수에 대응됩니다. 선택적으로, Tbl
은 응답 변수에 대해 하나의 추가 열을 포함할 수 있습니다. 문자형 벡터로 구성된 셀형 배열 이외의 셀형 배열과 다중 열 변수는 허용되지 않습니다.
Tbl
이 응답 변수를 포함하며Tbl
의 나머지 모든 변수를 예측 변수로 사용하려는 경우ResponseVarName
을 사용하여 응답 변수를 지정하십시오.Tbl
이 응답 변수를 포함하며Tbl
의 나머지 변수 중 일부만 예측 변수로 사용하려는 경우formula
를 사용하여 공식을 지정하십시오.Tbl
이 응답 변수를 포함하지 않는 경우Y
를 사용하여 응답 변수를 지정하십시오. 응답 변수의 길이와Tbl
의 행 개수는 동일해야 합니다.
ResponseVarName
— 응답 변수 이름
Tbl
에 포함된 변수 이름
응답 변수 이름으로, Tbl
의 변수 이름으로 지정됩니다.
ResponseVarName
은 문자형 벡터나 string형 스칼라로 지정해야 합니다. 예를 들어, 응답 변수 Y
가 Tbl.Y
로 저장된 경우 이를 "Y"
로 지정하십시오. 이렇게 하지 않으면 모델을 훈련시킬 때 Y
를 포함한 Tbl
의 모든 열이 예측 변수로 처리됩니다.
응답 변수는 categorical형 배열, 문자형 배열, string형 배열, 논리형 벡터 또는 숫자형 벡터, 문자형 벡터로 구성된 셀형 배열이어야 합니다. Y
가 문자형 배열인 경우, 응답 변수의 각 요소는 배열의 각 행에 대응되어야 합니다.
ClassNames
이름-값 인수를 사용하여 클래스의 순서를 지정하는 것이 좋습니다.
데이터형: char
| string
formula
— 응답 변수와 예측 변수의 부분 집합에 대한 설명 모델
문자형 벡터 | 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
Y
— 클래스 레이블 또는 응답 변수
categorical형 배열 | 문자형 배열 | 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
— 예측 변수 데이터
숫자형 행렬
예측 변수 데이터로, 숫자형 행렬로 지정됩니다.
X
의 각 행은 하나의 관측값(발생 건 또는 예라고도 함)에 대응되고, 각 열은 하나의 변수(특징이라고도 함)에 대응됩니다.
Y
의 길이와 X
의 행 개수는 동일해야 합니다.
데이터형: double
선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN
으로 지정합니다. 여기서 Name
은 인수 이름이고 Value
는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.
예: TreeBagger(100,X,Y,Method="regression",Surrogate="on",OOBPredictorImportance="on")
은 100개 회귀 트리의 배깅 앙상블을 생성하고, 대리 분할을 사용하고 예측 변수 중요도 추정에 대한 Out-of-bag 정보를 저장하도록 지정합니다.
ChunkSize
— 각 데이터 청크의 관측값 개수
50000 (디폴트 값) | 양의 정수
각 데이터 청크의 관측값 개수로, 양의 정수로 지정됩니다. 이 옵션은 tall형 배열에 TreeBagger
를 사용하는 경우에만 적용됩니다. 자세한 내용은 확장 기능 항목을 참조하십시오.
예: ChunkSize=10000
데이터형: single
| double
Cost
— 오분류 비용
정사각 행렬 | 구조체
오분류 비용으로, 정사각 행렬 또는 구조체로 지정됩니다.
정사각 행렬
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
CategoricalPredictors
— 범주형 예측 변수 목록
양의 정수로 구성된 벡터 | 논리형 벡터 | 문자형 행렬 | string형 배열 | 문자형 벡터로 구성된 셀형 배열 | "all"
범주형 예측 변수 목록으로, 다음 표에 있는 값 중 하나로 지정됩니다.
값 | 설명 |
---|---|
양의 정수로 구성된 벡터 | 벡터의 각 요소는 대응되는 예측 변수가 범주형임을 나타내는 인덱스 값입니다. 인덱스 값은 1과
|
논리형 벡터 | 요소의 값이 |
문자형 행렬 | 행렬의 각 행은 예측 변수의 이름입니다. 이름은 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
Method
— 결정 트리 유형
"classification"
(디폴트 값) | "regression"
결정 트리 유형으로, "classification"
또는 "regression"
으로 지정됩니다. 회귀 트리의 경우 Y
는 숫자형이어야 합니다.
예: Method="regression"
MinLeafSize
— 리프 노드 관측값의 최소 개수
양의 정수
리프 노드 관측값의 최소 개수로, 양의 정수로 지정됩니다. 각 리프는 트리 리프당 최소 MinLeafSize
개의 관측값을 가집니다. 기본적으로 MinLeafSize
는 분류 트리의 경우 1
이고 회귀 트리의 경우 5
입니다.
예: MinLeafSize=4
데이터형: single
| double
NumPredictorsToSample
— 각 결정 분할에 대한 예측 변수의 개수
양의 정수 | "all"
각 결정 분할에 대한 예측 변수(무작위로 선택됨)의 개수로, 양의 정수 또는 "all"
로 지정됩니다. 기본적으로 NumPredictorsToSample
은 분류 트리의 경우 변수 개수의 제곱근이고 회귀 트리의 경우 변수 개수의 삼분의 일입니다. 디폴트 개수가 정수가 아닌 경우 양의 무한대 방향의 가장 가까운 정수로 반올림됩니다. NumPredictorsToSample
을 "all"
이외의 값으로 설정하면 브라이만(Breiman)의 랜덤 포레스트 알고리즘 [1]이 사용됩니다.
예: NumPredictorsToSample=5
데이터형: single
| double
| char
| string
NumPrint
— 트리가 지정된 개수만큼 성장하면 메시지 표시
0 (디폴트 값) | 양의 정수
트리가 지정된 개수(훈련 주기 횟수)만큼 성장하면 명령 창에 훈련 진행 상황에 대한 메시지를 표시하는 인수이며, 음이 아닌 정수로 지정됩니다. 기본적으로 소프트웨어는 진단 메시지를 표시하지 않습니다.
예: NumPrint=10
데이터형: single
| double
InBagFraction
— 표본을 추출할 입력 데이터의 비율
1 (디폴트 값) | 양의 스칼라
각각의 새로운 트리를 성장시키기 위해 입력 데이터에서 복원추출할 입력 데이터의 비율로, (0,1] 범위의 양의 스칼라로 지정됩니다.
예: InBagFraction=0.5
데이터형: single
| double
OOBPrediction
— Out-of-bag 정보를 저장할지 여부를 나타내는 표시자
"off"
(디폴트 값) | "on"
앙상블에 Out-of-bag 정보를 저장할지 여부를 나타내는 표시자로, "on"
또는 "off"
로 지정됩니다. 어떤 관측값이 각 트리에 대해 Out-of-bag인지에 대한 정보를 저장하려면 OOBPrediction
을 "on"
으로 지정하십시오. TreeBagger
는 이 정보를 사용하여 앙상블의 각 트리에 대한 예측된 클래스 확률을 계산할 수 있습니다.
예: OOBPrediction="off"
OOBPredictorImportance
— 특징 중요도에 대한 Out-of-bag 추정값을 저장할지 여부를 나타내는 표시자
"off"
(디폴트 값) | "on"
앙상블의 특징 중요도에 대한 Out-of-bag 추정값을 저장할지 여부를 나타내는 표시자로, "on"
또는 "off"
로 지정됩니다. OOBPredictorImportance
를 "on"
으로 지정한 경우 TreeBagger
함수는 OOBPrediction
을 "on"
으로 설정합니다. 예측 변수 중요도를 분석하려면 PredictorSelection
을 "curvature"
또는 "interaction-curvature"
로 지정하십시오.
예: OOBPredictorImportance="on"
Options
— 병렬 계산 실행 및 난수 스트림 설정을 위한 옵션
구조체
병렬 계산 실행 및 난수 스트림 설정을 위한 옵션으로, 구조체로 지정됩니다. statset
을 사용하여 Options
구조체를 생성합니다. 아래 표에는 Options
필드와 그 값이 나와 있습니다.
필드 이름 | 값 | 디폴트 값 |
---|---|---|
UseParallel | 병렬 계산을 실행하려면 이 값을 true 로 설정합니다. | false |
UseSubstreams | 재현 가능한 방식으로 병렬 계산을 실행하려면 이 값을 재현 가능한 방식으로 계산하려면 | false |
Streams | 이 값을 RandStream 객체 또는 이러한 객체 하나로 구성된 셀형 배열로 지정합니다. | Streams 를 지정하지 않을 경우 TreeBagger 함수가 디폴트 스트림을 사용합니다. |
참고
병렬 계산을 실행하려면 Parallel Computing Toolbox™가 필요합니다.
예: Options=statset(UseParallel=true)
데이터형: struct
PredictorNames
— 예측 변수 이름
고유한 이름으로 구성된 string형 배열 | 고유한 문자형 벡터로 구성된 셀형 배열
예측 변수 이름으로, 고유한 이름으로 구성된 string형 배열 또는 고유한 문자형 벡터로 구성된 셀형 배열로 지정됩니다. PredictorNames
의 기능은 훈련 데이터를 어떻게 제공하느냐에 따라 달라집니다.
X
와Y
를 제공하는 경우,PredictorNames
를 사용하여X
의 예측 변수에 이름을 할당할 수 있습니다.PredictorNames
의 이름의 순서는X
의 열 순서와 일치해야 합니다. 즉,PredictorNames{1}
은X(:,1)
의 이름이고,PredictorNames{2}
는X(:,2)
의 이름이 되는 식입니다. 또한,size(X,2)
와numel(PredictorNames)
는 같아야 합니다.기본적으로
PredictorNames
는{'x1','x2',...}
입니다.
Tbl
을 제공하는 경우,PredictorNames
를 사용하여 훈련에 사용할 예측 변수를 선택할 수 있습니다. 즉,TreeBagger
함수는PredictorNames
의 예측 변수와 이에 대한 응답 변수만을 훈련 중에 사용합니다.PredictorNames
는Tbl.Properties.VariableNames
의 부분 집합이어야 하므로 응답 변수의 이름은 포함할 수 없습니다.기본적으로,
PredictorNames
는 모든 예측 변수의 이름을 포함합니다.PredictorNames
와formula
중 하나만 사용하여 훈련에 사용할 예측 변수를 지정하는 것이 좋습니다.
예: PredictorNames=["SepalLength","SepalWidth","PetalLength","PetalWidth"]
데이터형: string
| cell
SampleWithReplacement
— 복원추출을 나타내는 표시자
"on"
(디폴트 값) | "off"
복원추출을 나타내는 표시자로, "on"
또는 "off"
로 지정됩니다. SampleWithReplacement
를 "on"
으로 지정하여 복원추출하거나 "off"
로 지정하여 비복원추출합니다. SampleWithReplacement
를 "off"
로 설정하면 이름-값 인수 InBagFraction
을 1보다 작은 값으로 설정해야 합니다.
예: SampleWithReplacement="on"
Prior
— 2-클래스 학습에 대한 각 클래스의 사전 확률
"empirical"
(디폴트 값) | "uniform"
| 숫자형 벡터 | 구조체형 배열
2-클래스 학습에 대한 각 클래스의 사전 확률로, 다음 표에 나와 있는 값으로 지정됩니다.
값 | 설명 |
---|---|
"empirical" | 클래스 사전 확률은 Y 의 클래스 상대 도수입니다. |
"uniform" | 모든 클래스 사전 확률은 1/K와 같습니다. 여기서 K는 클래스 개수입니다. |
숫자형 벡터 | 벡터의 각 요소는 클래스 사전 확률입니다. Mdl.ClassNames 에 따라 요소의 순서를 지정하거나 ClassNames 이름-값 인수를 사용하여 순서를 지정합니다. 소프트웨어는 합이 1 이 되도록 요소를 정규화합니다. |
구조체 | 다음과 같은 두 개의 필드를 갖는 구조체
|
비용 행렬을 지정하면 TreeBagger
모델의 Prior
속성이 오분류 비용에 대해 조정된 사전 확률을 저장합니다. 자세한 내용은 알고리즘 항목을 참조하십시오.
이 인수는 2-클래스 학습의 경우에만 유효합니다.
예: Prior=struct(ClassNames=["setosa" "versicolor" "virginica"],ClassProbs=1:3)
데이터형: char
| string
| single
| double
| struct
참고
이 이름-값 인수 외에도 TreeBagger
함수는 TreeBagger 함수의 추가 이름-값 인수에 나열된 fitctree
및 fitrtree
의 이름-값 인수를 받습니다.
출력 인수
Mdl
— 배깅 결정 트리의 앙상블
TreeBagger
객체
배깅 결정 트리의 앙상블로, TreeBagger
객체로 반환됩니다.
속성
배깅 속성
ComputeOOBPrediction
— 훈련 관측값에 대한 Out-of-bag 예측값을 계산할지 여부를 나타내는 표시자
false
또는 0 (디폴트 값) | true
또는 1
읽기 전용 속성입니다.
훈련 관측값에 대한 Out-of-bag 예측값을 계산할지 여부를 나타내는 표시자로, 숫자형 또는 논리값 1(true
)이나 0(false
)으로 지정됩니다. 이 속성이 true
인 경우 다음이 적용됩니다.
TreeBagger
객체가 속성OOBIndices
및OOBInstanceWeight
를 가집니다.객체 함수
oobError
,oobMargin
,oobMeanMargin
을 사용할 수 있습니다.
ComputeOOBPredictorImportance
— Out-of-bag 변수 중요도를 계산할지 여부를 나타내는 표시자
false
또는 0 (디폴트 값) | true
또는 1
읽기 전용 속성입니다.
Out-of-bag 변수 중요도를 계산할지 여부를 나타내는 표시자로, 숫자형 또는 논리값 1(true
)이나 0(false
)으로 지정됩니다. 이 속성이 true
인 경우 다음이 적용됩니다.
TreeBagger
객체가 속성OOBPermutedPredictorDeltaError
,OOBPermutedPredictorDeltaMeanMargin
,OOBPermutedPredictorCountRaiseMargin
을 가집니다.속성
ComputeOOBPrediction
도true
입니다.
InBagFraction
— 무작위로 선택된 관측값의 비율
1 (디폴트 값) | 숫자형 스칼라
읽기 전용 속성입니다.
각 부트스트랩 복제에 대해 복원추출 방식으로 무작위로 선택된 관측값(In-bag 관측값)의 비율로, 숫자형 스칼라로 지정됩니다. 각 복제의 크기는 Nobs×InBagFraction
이며, 여기서 Nobs는 훈련 데이터의 관측값 개수입니다.
데이터형: single
| double
OOBIndices
— Out-of-bag 인덱스
논리형 배열
읽기 전용 속성입니다.
Out-of-bag 인덱스로, 논리형 배열로 지정됩니다. 이 속성은 Nobs×NumTrees
배열입니다. 여기서 Nobs는 훈련 데이터의 관측값 개수이고 NumTrees
는 앙상블의 트리 개수입니다.
요소가 OOBIndices
(i,j)true
이면 관측값 i는 트리 j에 대해 Out-of-bag입니다(즉, TreeBagger
함수가 트리 j를 성장시키는 데 사용한 훈련 데이터에 관측값 i를 선택하지 않음).
OOBInstanceWeight
— 각 관측값에 대한 Out-of-bag 트리의 개수
숫자형 벡터
읽기 전용 속성입니다.
각 관측값에 대한 Out-of-bag 트리의 개수로, 숫자형 벡터로 지정됩니다. 이 속성은 Nobs×1 벡터입니다. 여기서 Nobs는 훈련 데이터의 관측값 개수입니다.
요소는 관측값 i에 대한 Out-of-bag 응답 변수를 계산하는 데 사용되는 트리의 개수를 포함합니다.OOBInstanceWeight
(i)
데이터형: single
| double
OOBPermutedPredictorCountRaiseMargin
— 마진을 높이기 위한 예측 변수 중요도
숫자형 벡터
읽기 전용 속성입니다.
마진을 높이기 위한 예측 변수(특징) 중요도로, 숫자형 벡터로 지정됩니다. 이 속성은 1×Nvars 벡터입니다. 여기서 Nvars는 훈련 데이터의 변수 개수입니다. 각 변수에 대해 측정값은 해당 변수의 값이 Out-of-bag 관측값에서 치환되는 경우 높아진 마진의 개수와 낮아진 마진의 개수 간의 차이입니다. 이 측정값은 모든 트리에 대해 계산된 다음 전체 앙상블에 대해 평균을 내고 전체 앙상블에 대한 표준편차로 나뉩니다.
회귀 트리의 경우 이 속성은 비어 있습니다([]
).
데이터형: single
| double
OOBPermutedPredictorDeltaError
— 예측 오차에 대한 예측 변수 중요도
숫자형 벡터
읽기 전용 속성입니다.
예측 오차에 대한 예측 변수(특징) 중요도로, 숫자형 벡터로 지정됩니다. 이 속성은 1×Nvars 벡터입니다. 여기서 Nvars는 훈련 데이터의 변수(열) 개수입니다. 각 변수에 대해 측정값은 해당 변수의 값이 Out-of-bag 관측값에서 치환되는 경우 예측 오차의 증가분입니다. 이 측정값은 모든 트리에 대해 계산된 다음 전체 앙상블에 대해 평균을 내고 전체 앙상블에 대한 표준편차로 나뉩니다.
데이터형: single
| double
OOBPermutedPredictorDeltaMeanMargin
— 분류 마진에 대한 예측 변수 중요도
숫자형 벡터
읽기 전용 속성입니다.
분류 마진에 대한 예측 변수(특징) 중요도로, 숫자형 벡터로 지정됩니다. 이 속성은 1×Nvars 벡터입니다. 여기서 Nvars는 훈련 데이터의 변수(열) 개수입니다. 각 변수에 대해 측정값은 해당 변수의 값이 Out-of-bag 관측값에서 치환되는 경우 분류 마진의 감소분입니다. 이 측정값은 모든 트리에 대해 계산된 다음 전체 앙상블에 대해 평균을 내고 전체 앙상블에 대한 표준편차로 나뉩니다.
회귀 트리의 경우 이 속성은 비어 있습니다([]
).
데이터형: single
| double
트리 속성
DeltaCriterionDecisionSplit
— 각 예측 변수에 대한 분할 기준 기여
숫자형 벡터
읽기 전용 속성입니다.
각 예측 변수에 대한 분할 기준 기여로, 숫자형 벡터로 지정됩니다. 이 속성은 1×Nvars 벡터입니다. 여기서 Nvars는 분할 기준의 변경 횟수입니다. 각 변수의 분할에 대한 분할 기준의 변화가 합산된 다음 성장된 트리의 전체 앙상블에 대한 합이 평균화됩니다.
데이터형: single
| double
MergeLeaves
— 리프를 병합할지 여부를 나타내는 표시자
false
또는 0 (디폴트 값) | true
또는 1
읽기 전용 속성입니다.
리프를 병합할지 여부를 나타내는 표시자로, 숫자형 또는 논리값 1(true
)이나 0(false
)으로 지정됩니다. 이 속성은 소프트웨어가 전체 위험을 줄이지 않는 분할에 대해 결정 트리 리프를 동일한 부모와 병합하는 경우 true
입니다. 그렇지 않은 경우, 이 속성은 false
입니다.
MinLeafSize
— 리프 노드 관측값의 최소 개수
양의 정수
읽기 전용 속성입니다.
리프 노드 관측값의 최소 개수로, 양의 정수로 지정됩니다. 각 리프는 최소 MinLeafSize
개의 관측값을 가집니다. 기본적으로 MinLeafSize
는 분류 트리의 경우 1이고 회귀 트리의 경우 5입니다. 결정 트리 훈련의 경우 fitctree
및 fitrtree
는 이름-값 인수 MinParentSize
를 2*MinLeafSize
로 설정합니다.
데이터형: single
| double
NumTrees
— 결정 트리의 개수
양의 정수
읽기 전용 속성입니다.
배깅 앙상블의 결정 트리의 개수로, 양의 정수로 지정됩니다.
데이터형: single
| double
Prune
— 가지치기된 하위 트리에 대한 최적의 시퀀스를 추정할지 여부를 나타내는 표시자
false
또는 0 (디폴트 값) | true
또는 1
읽기 전용 속성입니다.
가지치기된 하위 트리에 대한 최적의 시퀀스를 추정할지 여부를 나타내는 표시자로, 숫자형 또는 논리값 1(true
)이나 0(false
)으로 지정됩니다. Prune
속성은 결정 트리가 가지치기되면 true
이고 가지치기되지 않으면 false
입니다. 결정 트리의 가지치기는 앙상블에 권장되지 않습니다.
SampleWithReplacement
— 결정 트리를 복원추출할지 여부를 나타내는 표시자
true
또는 1 (디폴트 값) | false
또는 0
읽기 전용 속성입니다.
각 결정 트리를 복원추출할지 여부를 나타내는 표시자로, 숫자형 또는 논리값 1(true
)이나 0(false
)으로 지정됩니다. 이 속성은 TreeBagger
함수가 각 결정 트리를 복원추출하는 경우 true
이고 그렇지 않은 경우 false
입니다.
SurrogateAssociation
— 변수 연관성의 예측 측도
숫자형 행렬
읽기 전용 속성입니다.
변수 연관성의 예측 측도로, 숫자형 행렬로 지정됩니다. 이 속성은 Nvars×Nvars 행렬입니다. 여기서 Nvars는 예측 변수 개수입니다. 이 속성은 성장된 트리의 전체 앙상블에 대해 평균을 낸 변수 연관성의 예측 측도를 포함합니다.
Surrogate
이름-값 인수가"on"
으로 설정된 앙상블을 성장시키면 각 트리에 대해 이 행렬은 대리 분할에 대해 평균을 낸 예측 연관성 측도로 채워집니다.Surrogate
이름-값 인수가"off"
로 설정된 앙상블을 성장시키면SurrogateAssociation
속성은 단위 행렬입니다. 기본적으로Surrogate
는"off"
로 설정됩니다.
데이터형: single
| double
TreeArguments
— TreeBagger
함수에 지정되는 이름-값 인수
셀형 배열
읽기 전용 속성입니다.
TreeBagger
함수에 지정되는 이름-값 인수로, 셀형 배열로 지정됩니다. TreeBagger
함수는 배깅된 앙상블에 대한 새 트리를 성장시킬 때 이러한 이름-값 인수를 사용합니다.
Trees
— 앙상블의 결정 트리
셀형 배열
읽기 전용 속성입니다.
배깅 앙상블의 결정 트리로, NumTrees
×1 셀형 배열로 지정됩니다. 각 트리는 CompactClassificationTree
객체 또는 CompactRegressionTree
객체입니다.
예측 변수 속성
NumPredictorSplit
— 각 예측 변수에 대한 결정 분할 개수
숫자형 벡터
읽기 전용 속성입니다.
각 예측 변수에 대한 결정 분할 개수로, 숫자형 벡터로 지정됩니다. 이 속성은 1×Nvars 벡터입니다. 여기서 Nvars는 예측 변수의 개수입니다. NumPredictorSplit
의 각 요소는 모든 트리에 대해 합한 예측 변수에 적용된 분할 수를 나타냅니다.
데이터형: single
| double
NumPredictorsToSample
— 선택할 예측 변수의 개수
양의 정수
읽기 전용 속성입니다.
각 결정 분할에 대해 임의로 선택할 예측 변수의 개수로, 양의 정수로 지정됩니다. 기본적으로 이 속성은 분류 트리의 경우 변수의 총 개수의 제곱근이고 회귀 트리의 경우 변수의 총 개수의 삼분의 일입니다.
데이터형: single
| double
OutlierMeasure
— 각 관측값에 대한 이상값 측정
숫자형 벡터
읽기 전용 속성입니다.
각 관측값에 대한 이상값 측정으로, 숫자형 벡터로 지정됩니다. 이 속성은 Nobs×1 벡터입니다. 여기서 Nobs는 훈련 데이터의 관측값 개수입니다.
데이터형: single
| double
PredictorNames
— 예측 변수 이름
문자형 벡터로 구성된 셀형 배열
읽기 전용 속성입니다.
예측 변수 이름으로, 문자형 벡터로 구성된 셀형 배열로 지정됩니다. PredictorNames
에 포함된 요소의 순서는 예측 변수 이름이 훈련 데이터 X
에 나타나는 순서와 일치합니다.
X
— 예측 변수
숫자형 배열
읽기 전용 속성입니다.
배깅 앙상블을 훈련시키는 데 사용되는 예측 변수로, 숫자형 배열로 지정됩니다. 이 속성은 Nobs×Nvars 배열입니다. 여기서 Nobs는 훈련 데이터의 관측값(행) 개수이고 Nvars는 훈련 데이터의 변수(열) 개수입니다.
데이터형: single
| double
응답 변수 속성
DefaultYfit
— 디폴트 예측 값
""
| "MostPopular"
| 숫자형 스칼라
predict
또는 oobPredict
에서 반환되는 디폴트 예측 값으로, ""
, "MostPopular"
또는 숫자형 스칼라로 지정됩니다. 예측이 불가능한 경우(예: oobPredict
가 앙상블의 모든 트리에 대해 In-bag인 관측값에 대한 응답 변수를 예측하는 경우) 이 속성은 predict
또는 oobPredict
객체 함수가 반환하는 예측 값을 제어합니다.
분류 트리의 경우
DefaultYfit
을""
또는"MostPopular"
로 설정할 수 있습니다."MostPopular"
(분류의 디폴트 값)를 지정하는 경우 속성값은 훈련 데이터에서 가장 가능성이 높은 클래스의 이름입니다.""
을 지정하는 경우 In-bag 관측값은 Out-of-bag 오차 및 마진 계산에서 제외됩니다.회귀 트리의 경우
DefaultYfit
을 모든 숫자형 스칼라로 설정할 수 있습니다. 회귀의 디폴트 값은 훈련 데이터에 대한 응답 변수의 평균입니다.DefaultYfit
을NaN
으로 설정하는 경우 In-bag 관측값은 Out-of-bag 오차 및 마진 계산에서 제외됩니다.
예: Mdl.DefaultYfit="MostPopular"
데이터형: single
| double
| char
| string
Y
— 클래스 레이블 또는 응답 변수 데이터
문자형 벡터로 구성된 셀형 배열 | 숫자형 벡터
읽기 전용 속성입니다.
클래스 레이블 또는 응답 변수 데이터로, 문자형 벡터로 구성된 셀형 배열 또는 숫자형 벡터로 지정됩니다.
Method
이름-값 인수를"classification"
으로 설정하는 경우 이 속성은 클래스 레이블을 나타냅니다.Y
의 각 행은 이에 대응되는X
행의 관측된 분류를 나타냅니다.Method
이름-값 인수를"regression"
으로 설정하는 경우 이 속성은 응답 변수 데이터를 나타내며 숫자형 벡터입니다.
데이터형: single
| double
| cell
훈련 속성
Method
— 앙상블 유형
"classification"
| "regression"
읽기 전용 속성입니다.
앙상블 유형으로, 분류 앙상블의 경우 "classification"
으로 지정되고 회귀 앙상블의 경우 "regression"
으로 지정됩니다.
Proximity
— 훈련 데이터 관측값 간 근접도
숫자형 배열
읽기 전용 속성입니다.
훈련 데이터 관측값 간 근접도로, 숫자형 배열로 지정됩니다. 이 속성은 Nobs×Nobs 배열입니다. 여기서 Nobs는 훈련 데이터의 관측값 개수입니다. 이 배열은 관측값 간 근접도의 측정값을 포함합니다. 두 관측값에 있어서 근접도는 이들 관측값이 동일한 리프에 도달하는 트리의 비율로 정의됩니다. 이 배열은 대칭이고 대각선상 요소는 1이며 0에서 1 사이의 비대각선 요소를 갖습니다.
데이터형: single
| double
W
— 관측값 가중치
음이 아닌 값으로 구성된 벡터
읽기 전용 속성입니다.
관측값 가중치로, 음이 아닌 값으로 구성된 벡터로 지정됩니다. 이 속성은 Y
와 행 개수가 동일해야 합니다. W
의 각 요소는 이에 대응되는 Y
의 관측값의 상대적 중요도를 지정합니다. TreeBagger
함수는 관측값 가중치를 사용하여 앙상블의 각 결정 트리를 성장시킵니다.
데이터형: single
| double
분류 속성
ClassNames
— 고유한 클래스 이름
문자형 벡터로 구성된 셀형 배열
읽기 전용 속성입니다.
훈련 모델에 사용되는 고유한 클래스 이름으로, 문자형 벡터로 구성된 셀형 배열로 지정됩니다.
회귀 트리의 경우 이 속성은 비어 있습니다([]
).
Cost
— 오분류 비용
숫자형 정사각 행렬
읽기 전용 속성입니다.
오분류 비용으로, 숫자형 정사각 행렬로 지정됩니다. 요소 Cost(i,j)
는 실제 클래스가 i
인 한 점을 클래스 j
로 분류하는 비용입니다. 행은 실제 클래스에 대응되고, 열은 예측 클래스에 대응됩니다. Cost
의 행과 열 순서는 ClassNames
의 클래스 순서와 일치합니다.
회귀 트리의 경우 이 속성은 비어 있습니다([]
).
데이터형: single
| double
Prior
— 사전 확률
숫자형 벡터
읽기 전용 속성입니다.
사전 확률로, 숫자형 벡터로 지정됩니다. Prior
의 요소 순서는 Mdl.ClassNames
의 요소 순서와 일치합니다.
TreeBagger
함수의 Cost
이름-값 인수를 사용하여 비용 행렬을 지정하면 TreeBagger
모델 객체의 Prior
속성이 오분류 비용에 대해 조정된 사전 확률(Prior
이름-값 인수로 지정됨)을 저장합니다. 자세한 내용은 알고리즘 항목을 참조하십시오.
회귀 트리의 경우 이 속성은 비어 있습니다([]
).
데이터형: single
| double
객체 함수
CompactTreeBagger
만들기
compact | Compact ensemble of decision trees |
앙상블 해석하기
partialDependence | Compute partial dependence |
plotPartialDependence | Create partial dependence plot (PDP) and individual conditional expectation (ICE) plots |
성능 측정하기
error | Error (misclassification probability or MSE) |
meanMargin | Mean classification margin |
margin | 분류 마진 |
oobError | Out-of-bag error |
oobMeanMargin | Out-of-bag mean margins |
oobMargin | Out-of-bag margins |
oobQuantileError | Out-of-bag quantile loss of bag of regression trees |
quantileError | Quantile loss using bag of regression trees |
응답 변수 예측하기
oobPredict | Ensemble predictions for out-of-bag observations |
oobQuantilePredict | Quantile predictions for out-of-bag observations from bag of regression trees |
predict | Predict responses using ensemble of bagged decision trees |
quantilePredict | Predict response quantile using bag of regression trees |
예제
배깅 분류 트리의 앙상블 훈련시키기
피셔(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
분류 트리의 경우 Mdl
은 TreeBagger
의 앙상블입니다.
Mdl.Trees
속성은 앙상블에 대해 훈련된 분류 트리를 포함하는 50×1 셀형 벡터입니다. 각 트리는 CompactClassificationTree
객체입니다. 첫 번째 훈련된 분류 트리의 그래픽 표시를 확인합니다.
view(Mdl.Trees{1},Mode="graph")
성장된 분류 트리의 개수에 대한 Out-of-bag 분류 오차를 플로팅합니다.
plot(oobError(Mdl)) xlabel("Number of Grown Trees") ylabel("Out-of-Bag Classification Error")
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
회귀 트리의 경우 Mdl
은 TreeBagger
의 앙상블입니다.
최소 표본내 변위와 최대 표본내 변위 사이에 있는 균일한 간격의 엔진 배기량 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")
배깅 회귀 트리에 대한 무편향 예측 변수 중요도 추정값
두 개의 배깅 회귀 트리 앙상블을 생성합니다. 하나는 예측 변수 분할을 위한 표준 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를 사용합니다. 변수 Cylinders
및 Model_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;
막대 그래프를 만들어 두 앙상블에 대한 예측 변수 중요도 추정값 impCART
및 impUnbiased
를 비교합니다.
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";
CART 모델의 경우 연속형 예측 변수 Weight
는 두 번째로 중요한 예측 변수입니다. 무편향 모델의 경우 값과 순위에서 Weight
의 예측 변수 중요도는 더 낮습니다.
tall형 배열에 대해 배깅 분류 트리의 앙상블 훈련시키기
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개 배깅 분류 트리의 앙상블을 훈련시킵니다. 가중 벡터와 균등 사전 확률을 지정합니다. 재현이 가능하도록 rng
및 tallrng
를 사용하여 난수 생성기의 시드값을 설정합니다. 결과는 워커의 개수 및 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 1.3 sec Evaluation completed in 1.6 sec Evaluating tall expression using the Local MATLAB Session: - Pass 1 of 1: Completed in 1.9 sec Evaluation completed in 2.3 sec Evaluating tall expression using the Local MATLAB Session: - Pass 1 of 1: Completed in 6.8 sec Evaluation completed in 6.8 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 7.1 sec Evaluation completed in 7.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
함수의 추가 이름-값 인수
이름-값 인수 외에도 TreeBagger
함수는 fitctree
및 fitrtree
의 다음 이름-값 인수를 받습니다.
*ClassNames
이름-값 인수를 논리형 벡터로 지정하는 경우 값으로 0과 1을 사용합니다. false
및 true
값은 사용하지 않습니다. 예를 들어, ClassNames
를 [1 0 1]
로 지정할 수 있습니다.
팁
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]. 다음 중 하나에 해당하는 경우 곡률 검정이나 상호 작용 검정을 지정해 보십시오.
데이터에는 다른 예측 변수보다 상대적으로 더 적은 수의 고유 값을 갖는 예측 변수가 있습니다(예를 들어, 예측 변수 데이터 세트가 이종임).
목표는 예측 변수 중요도를 분석하는 것입니다.
TreeBagger
는OOBPermutedPredictorDeltaError
속성에 예측 변수 중요도 추정값을 저장합니다.
예측 변수 선택에 대한 자세한 내용은 분류 트리의 경우 이름-값 인수
PredictorSelection
을, 회귀 트리의 경우 이름-값 인수PredictorSelection
을 참조하십시오.
알고리즘
Cost
,Prior
및Weights
이름-값 인수를 지정할 경우 출력 모델 객체는 지정된 값을 각각Cost
,Prior
및W
속성에 저장합니다.Cost
속성이 사용자가 지정한 비용 행렬(C)을 수정 없이 저장합니다.Prior
속성과W
속성은 각각 정규화한 후의 사전 확률 및 관측값 가중치를 저장합니다. 모델 훈련 시, 소프트웨어는 비용 행렬에 있는 벌점을 통합하도록 사전 확률과 관측값 가중치를 업데이트합니다. 자세한 내용은 오분류 비용 행렬, 사전 확률 및 관측값 가중치 항목을 참조하십시오.TreeBagger
함수는 오분류 비용이 큰 클래스를 과다추출하고 오분류 비용이 작은 클래스를 과소추출하여 In-bag 표본을 생성합니다. 따라서, Out-of-bag 표본은 오분류 비용이 큰 클래스의 관측값을 더 적게 가지고 오분류 비용이 작은 클래스의 관측값을 더 많이 가집니다. 작은 데이터 세트와 많이 편중된 비용 행렬을 사용하여 분류 앙상블을 훈련하는 경우 클래스당 Out-of-bag 관측값 개수가 매우 낮을 수 있습니다. 그러므로 추정된 Out-of-bag 오차가 큰 분산을 가질 수 있으며 해석이 어렵습니다. 큰 사전 확률을 갖는 클래스의 경우 동일한 현상이 발생할 수 있습니다.TreeBagger
함수가 분할 예측 변수를 선택하는 방법과 이 함수가 결정 트리를 성장시킬 때의 노드 분할 알고리즘에 대한 자세한 내용은 분류 트리의 경우 알고리즘 항목을, 회귀 트리의 경우 Algorithms 항목을 참조하십시오.
대체 기능
Statistics and Machine Learning Toolbox™는 배깅 및 랜덤 포레스트를 위한 세 가지 객체를 제공합니다.
분류를 위해
fitcensemble
함수로 생성된ClassificationBaggedEnsemble
객체회귀를 위해
fitrensemble
함수로 생성된RegressionBaggedEnsemble
객체분류와 회귀를 위해
TreeBagger
함수로 생성된TreeBagger
객체
TreeBagger
와 배깅 앙상블(ClassificationBaggedEnsemble
및 RegressionBaggedEnsemble
) 사이의 차이에 대한 자세한 내용은 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.
확장 기능
tall형 배열
메모리에 담을 수 없을 정도로 많은 행을 가진 배열을 계산할 수 있습니다.
이 함수는 tall형 배열을 지원하지만 다음과 같은 제한 사항이 있습니다.
TreeBagger
함수는 tall형X
,Y
,Tbl
에 대해 다음 구문을 지원합니다.B = TreeBagger(NumTrees,Tbl,Y)
B = TreeBagger(NumTrees,X,Y)
B = TreeBagger(___,Name=Value)
tall형 배열에 대해
TreeBagger
함수는 분류를 지원하지만 회귀는 지원하지 않습니다.TreeBagger
함수는 다음과 같은 이름-값 인수를 지원합니다.NumPredictorsToSample
— 디폴트 값은 분류 변수 개수의 제곱근입니다.MinLeafSize
— 관측값 개수가 50,000보다 작은 경우 디폴트 값은1
입니다. 관측값 개수가 50,000 이상인 경우 디폴트 값은max(1,min(5,floor(0.01*NobsChunk)))
입니다. 여기서NobsChunk
는 청크에 포함된 관측값의 개수입니다.ChunkSize
(tall형 배열에만 해당) — 디폴트 값은50000
입니다.
뿐만 아니라
TreeBagger
함수는 다음과 같은fitctree
의 이름-값 인수를 지원합니다.AlgorithmForCategorical
CategoricalPredictors
Cost
— 비용 행렬C
의 열은Inf
또는NaN
값을 포함할 수 없습니다.MaxNumCategories
MaxNumSplits
MergeLeaves
PredictorNames
PredictorSelection
Prior
Prune
PruneCriterion
SplitCriterion
Surrogate
Weights
tall형 데이터에 대해
TreeBagger
함수는CompactTreeBagger
객체를 반환합니다. 이 객체는 완전한TreeBagger
객체의 속성 대부분을 동일하게 포함합니다. 주요 차이점은 간소 객체가 메모리 효율이 더 높다는 것입니다. 간소 객체는 데이터를 포함하거나 데이터와 같은 크기의 배열을 포함하는 속성을 포함하지 않습니다.반환되는
CompactTreeBagger
객체에 포함된 트리의 개수는TreeBagger
함수의 입력값으로 지정된 트리의 개수와 다를 수 있습니다.TreeBagger
는 입력 데이터 세트의 크기, 트리를 성장시키는 데 사용할 수 있는 데이터 청크의 개수와 같은 인자를 바탕으로 반환할 트리의 개수를 결정합니다.지원되는
CompactTreeBagger
객체 함수는 다음과 같습니다.combine
error
margin
meanMargin
predict
setDefaultYfit
error
,margin
,meanMargin
,predict
객체 함수는 이름-값 인수Trees
,TreeWeights
또는UseInstanceForTree
를 지원하지 않습니다.meanMargin
함수는Weights
이름-값 인수도 지원하지 않습니다.TreeBagger
함수는 데이터의 서로소 청크에 대한 트리를 생성하여 랜덤 포레스트를 생성합니다. 랜덤 포레스트를 생성하는 데 필요한 것보다 더 많은 데이터를 사용할 수 있는 경우 함수는 데이터의 부표본을 추출합니다. 유사한 예제는 Random Forests for Big Data [6]를 참조하십시오.데이터가 저장되는 방식에 따라 일부 데이터 청크가 모든 클래스 중 일부 클래스의 관측값만 포함할 수 있습니다. 이 경우,
TreeBagger
함수는 각 데이터 청크가 대부분 클래스의 관측값을 포함하는 경우보다 더 안 좋은 결과를 생성할 수 있습니다.TreeBagger
알고리즘을 훈련시킬 때, 속도, 정확도 및 메모리 사용량은 몇 가지 인자에 따라 달라집니다. 이러한 인자에는NumTrees
의 값과 이름-값 인수ChunkSize
,MinLeafSize
,MaxNumSplits
가 포함됩니다.n×p tall형 배열
X
에 대해,TreeBagger
는 훈련 중에 추출을 구현합니다. 이 추출은 다음과 같은 변수에 종속됩니다.트리의 개수
NumTrees
청크 크기
ChunkSize
관측값 개수 n
청크의 개수 r(
n/ChunkSize
와 대략 같음)
주어진
X
에 대해 n의 값이 고정되어 있으므로TreeBagger
가X
를 추출하는 방식은NumTrees
및ChunkSize
에 대한 설정에 따라 결정됩니다.r >
NumTrees
이면TreeBagger
는X
에서ChunkSize * NumTrees
개의 관측값을 추출하고 청크당 하나의 트리를 훈련시킵니다(각 청크는ChunkSize
개의 관측값을 포함함). 이 시나리오는 tall형 배열을 사용할 때 가장 일반적으로 적용됩니다.r ≤
NumTrees
이면TreeBagger
는 청크 내에서 부트스트랩을 사용하여 각 청크에 있는 약NumTrees/r
개의 트리를 훈련시킵니다.n ≤
ChunkSize
이면TreeBagger
는 부트스트랩을 사용하여 개별 트리를 훈련시킬 표본(각각 크기가 n개)을 생성합니다.
NumTrees
에 대한 값을 지정할 때는 다음을 고려하십시오.코드를 Apache® Spark™에서 실행하고 데이터 세트가 HDFS™(Hadoop® Distributed File System)로 분산되어 있는 경우, 데이터 세트에 대한 HDFS의 파티션 개수보다 최소 두 배 이상 큰
NumTrees
값을 지정하여 시작하십시오. 이 설정은 Apache Spark 실행기 간의 과도한 데이터 통신을 방지하며,TreeBagger
알고리즘의 성능을 개선할 수 있습니다.TreeBagger
는 결과CompactTreeBagger
모델에서 피팅된 트리를 클라이언트 메모리에 복사합니다. 따라서 클라이언트가 사용 가능한 메모리의 양이NumTrees
에 설정할 수 있는 값의 상한이 됩니다.MinLeafSize
및MaxNumSplits
의 값을 조정하면 예측 정확도를 일부 희생하는 대신 속도를 높이고 메모리 사용량을 줄일 수 있습니다. 조정 후에NumTrees
의 값이 데이터 세트에 대한 HDFS의 파티션 개수의 두 배보다 적을 경우, HDFS에 있는 데이터가 더 큰 파티션을 갖도록 다시 분할하는 방안을 고려하십시오.
NumTrees
의 값을 지정한 후에는TreeBagger
가 대부분의 데이터를 트리를 성장시키는 데 사용할 수 있도록ChunkSize
를 설정하십시오. 이상적으로는ChunkSize * NumTrees
는 데이터에 있는 행 개수 n과 대략적으로 비슷해야 합니다. 워커에서 개별 트리를 훈련시키는 데 사용 가능한 메모리가ChunkSize
의 상한을 결정할 수 있다는 사실에 유의하십시오.메모리 부족 오류를 방지하고 워크플로를 지원하도록 Apache Spark 메모리 속성을 조정할 수 있습니다. 자세한 내용은
parallel.cluster.Hadoop
(Parallel Computing Toolbox) 항목을 참조하십시오.
자세한 내용은 메모리에 담을 수 없는 큰 데이터를 위한 tall형 배열 항목을 참조하십시오.
자동 병렬 지원
Parallel Computing Toolbox™를 사용해 자동 병렬 계산을 실행하여 코드 실행 속도를 높일 수 있습니다.
병렬로 실행하려면 이 함수에 대한 호출에 Options
이름-값 인수를 지정하고 statset
을 사용하여 options 구조체의 UseParallel
필드를 true
로 설정하십시오.
"Options",statset("UseParallel",true)
병렬 연산에 대한 자세한 내용은 자동 병렬 연산을 지원하는 MATLAB 함수 실행하기 (Parallel Computing Toolbox) 항목을 참조하십시오.
버전 내역
R2009a에 개발됨R2022a: Cost
속성이 사용자가 지정한 비용 행렬을 저장함
R2022a부터는 Cost
속성이 사용자가 지정한 비용 행렬을 저장합니다. 소프트웨어는 비용 벌점을 반영하지 않도록 하면서 정규화한 사전 확률(Prior
)과 관측값 가중치(W
)를 저장합니다.
모델 훈련이 변경되지 않았으므로 클래스 간 결정 경계도 변경되지 않았습니다.
훈련 시, 피팅 함수는 주어진 비용 행렬에 있는 벌점을 통합하여 주어진 사전 확률을 업데이트한 다음, 사전 확률과 관측값 가중치를 정규화합니다. 이 동작은 변경되지 않았습니다. 이전 릴리스에서는 소프트웨어가 디폴트 비용 행렬을 Cost
속성에 저장하고 훈련에 사용한 사전 확률과 관측값 가중치를 각각 Prior
와 W
속성에 저장했습니다. R2022a부터는 사용자가 지정한 비용 행렬이 수정 없이 저장되고, 비용 벌점을 반영하지 않도록 하면서 정규화된 사전 확률과 관측값 가중치가 저장됩니다. 자세한 내용은 오분류 비용 행렬, 사전 확률 및 관측값 가중치 항목을 참조하십시오.
oobError
및 oobMeanMargin
함수는 W
속성에 저장된 관측값 가중치를 사용합니다. 따라서, 분류 모델을 훈련시킬 때 디폴트가 아닌 비용 행렬을 지정하면 객체 함수는 이전 릴리스와 다른 값을 반환합니다.
소프트웨어가 비용 행렬, 사전 확률 및 관측값 가중치를 이전 릴리스에서와 같이 처리하게 하려면, 오분류 비용 행렬에 대한 사전 확률 및 관측값 가중치 조정하기의 설명에 따라 사전 확률 및 관측값 가중치를 디폴트가 아닌 비용 행렬에 적합하게 조정하십시오. 분류 모델을 훈련할 때, 조정된 사전 확률과 관측값 가중치를 Prior
와 Weights
이름-값 인수를 사용하여 지정하고 디폴트 비용 행렬을 사용하십시오.
참고 항목
객체
함수
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)