RandomForest Regression
RandomForest Regression 학습 알고리즘 설명 및 파라미터 설명서 입니다.
개요
RandomForest는 Classification / Regression에 모두 사용 할 수 있으며, 특정 값이 누락되어 있어도 사용 할 수 있습니다.
설명
여러개의 Decision Tree를 만들고 앙상블 기법으로 결과를 결정합니다. 때문에, 오버피팅을 방지할 수 있습니다.
Examples
Fit으로 RandomForestRegression 적용해 분류 하는 모델을 생성하는 명령어 예제입니다.
... | fit RandomForestRegression FEATURES * LABEL medv maxDepth=10 INTO modelD
features |
generalizeGini |
space |
numTrees |
rmse |
r2 |
mae |
---|---|---|---|---|---|---|
crim |
0.1687 |
20 |
2.4099 |
0.8691 |
1.8495 |
|
zn |
0.0004 |
None |
None |
None |
None |
|
indus |
0.0 |
None |
None |
None |
None |
|
chas |
0.0 |
None |
None |
None |
None |
|
nox |
0.0432 |
None |
None |
None |
None |
|
rm |
0.1709 |
None |
None |
None |
None |
|
age |
0.2407 |
None |
None |
None |
None |
|
dis |
0.06 |
None |
None |
None |
None |
|
rad |
0.0139 |
None |
None |
None |
None |
|
tax |
0.0323 |
None |
None |
None |
None |
|
ptratio |
0.001 |
None |
None |
None |
None |
|
b |
0.1345 |
None |
None |
None |
None |
|
lstat |
0.1345 |
None |
None |
None |
None |
Parameters
... | fit RandomForestRegression FEATURES fields LABEL l_fields maxdepth=3 minInfoGain=0.0 seed=None INTO_model
이름 |
설명 |
필수/옵션 |
---|---|---|
FEATURES |
학습에 사용될 특징 column을 입력 받습니다. |
필수 |
LABEL |
학습에 사용될 라벨 column을 입력 받습니다. |
필수 |
fields |
특징 column들의 이름입니다. |
필수 |
l_fields |
라벨 column들의 이름입니다. |
필수 |
params |
알고리즘 setting 파라미터들입니다. |
옵션 |
INTO_model |
|
필수 |
maxDepth |
tree의 깊이를 설정합니다. |
옵션 |
maxBins |
bin의 최댓값을 설정합니다. |
옵션 |
minInstancesPerNode |
split 이후에 반드시 가져야하는 child의 instance 수를 설정합니다. |
옵션 |
numTrees |
만들 tree의 수를 설정합니다. |
옵션 |
minInfoGain |
tree의 split을 위한 얻을 수 있는 최소 정보입니다. (정확히는 모르겠습니다.) |
옵션 |
maxMemoryInMB |
최대 메모리를 설정합니다. |
옵션 |
cacheNodeIds |
각 트리의 instance 마다 cache node id를 사용할지 안할지 여부 결정합니다. |
옵션 |
subsamplingRate |
각각의 decisiontree에서 learning에 사용할 training data의 비율을 설정합니다. |
옵션 |
impurity |
계산 결과에서 얻을 수 잇는 정보의 표준을 결정합니다. (Gini, Entorpy) |
옵션 |
checkpointInterval |
cache 하는 checkpoint의 반복 주기를 설정합니다. |
옵션 |
featureSubsetStrategy |
특징의 수를 고려하여 각각의 tree를 얼마나 펼칠지 결정합니다. (auto, all, onethird, sqrt, log2, (0.0-1.0], [1-n]) |
옵션 |
seed |
학습에 필요한 seed값 입니다. |
옵션 |
Parameters BNF
SparkRandomForestRegression_command : FEATURES fields LABEL l_field params INTO_model
fields : field
| fields COMMA field
field : WORD
| TIMES
| MINUS WORD
l_field : WORD
params : param
| params param
param : WORD EQUALS WORD
| WORD EQUALS DOUBLE
| WORD EQUALS LBRACKET words RBRACKET
| WORD EQUALS LBRACKET doubles RBRACKET
words : WORD
| words COMMA WORD
doubles : DOUBLE
| doubles COMMA DOUBLE
INTO_model : INTO WORD
WORD : \w+
COMMA : \,
FEATURES : FEATURES | features
LABEL : LABEL | label
INTO : INTO
EQUALS : \=
TIMES : \*
MINUS : \-
LBRACKET : \[
RBRACKET : \]
DOUBLE : [-+]?[0-9]+(\.([0-9]+)?([eE][-+]?[0-9]+)?|[eE][-+]?[0-9]+)
params : maxDepth=5, maxBins=32, minInstancesPerNode=1, numTrees=20, minInfoGain=0.0, maxMemoryInMB=256, cacheNodeIds=False, seed=None, subsamplingRate=1.0, impurity='Gini', checkpointInterval=10, featureSubsetStrategy='auto'