Spark DecisionTree Regression

개요

DecisionTree는 Classification / Regression에 모두 사용 할 수 있으며, 특정 값이 누락되어 있어도 사용 할 수 있습니다.

설명

Decision Tree 모델을 만들고 input data frame을 모델에 적용시킵니다. Decision Tree 모델 학습에 필요한 파라미터들을 지정할 수 있으며 지정하지 않을 시 Default 값으로 설정됩니다.

Examples

집값에 대한 샘플데이터 입니다.

crim(범죄율) age(연식) tax(세금) medv(집값)
0.671909988 90.30000305 307 16.60000038
1.002449989 87.30000305 307 21
8.055789948 95.40000153 666 13.80000019

fit으로 DecisionTreeRegression 적용해 분류 하는 모델을 생성하는 명령어 예제입니다.

* | fit DecisionTreeRegression FEATURES crim, age, tax LABEL medv maxdepth=3 minInfoGain=0.0 seed=None INTO modelC

feature별 gini계수(feature importance) , 평가지표(rmse, r2,mae) 출력

features generalizeGini space rmse r2 mae
crim 0.2784

6.7384 0.4621 4.5765
age 0.0688

None None None
tax 0.6528

None None None

predict로 modelC에 샘플 데이터를 다시 넣어 예측하는 명령어 예제입니다.

* | predict modelC crim, age, tax
crim(범죄율) age(연식) tax(세금) medv(집값) prediction
0.671909988 90.30000305 307 16.60000038 22.336029403
1.002449989 87.30000305 307 21 22.336029403
8.055789948 95.40000153 666 13.80000019 14.740000152

fit_predict로 DecisionTreeRegression을 적용해 분류모델을 생성하고 후 예측하는 명령어 예제입니다.

* | fit_predict DecisionTreeRegression FEATURES crim, age, tax LABEL medv maxdepth=3 minInfoGain=0.0 seed=None INTO modelC

Parameters

SparkDecisionTreeRegression_command : FEATURES fields LABEL l_field params INTO_model
이름 설명 필수/옵션
FEATURES fields 학습에 사용될 특징 column을 입력 받습니다. 필수
LABEL l_fiedls 학습에 사용될 라벨 column을 입력 받습니다. 필수
params *알고리즘 옵션을 지정해줍니다. 필수
INTO_model 모델을 저장해주는 예약어 입니다.
경로 (/B-IRIS/USERS/dani/ML/)에 모델, 모델 메타 데이터가 저장됩니다.
예 : into modelA
옵션

*알고리즘 옵션

이름 설명 기본값
maxDepth tree의 깊이를 설정합니다.
예 : maxDepth=10
5
maxBins bin의 최댓값을 설정합니다. 31
minInstancesPerNode split 이후에 반드시 가져야하는 child의 instance 수를 설정합니다. 1
minInfoGain tree의 split을 위한 얻을 수 있는 최소 정보입니다. (정확히는 모르겠습니다.) 0.0
maxMemoryInMB 최대 메모리를 설정합니다. 256
cacheNodeIds 각 트리의 instance 마다 cache node id를 사용할지 안할지 여부 결정합니다. False
impurity 계산 결과에서 얻을 수 잇는 정보의 표준을 결정합니다. (gini, entorpy, variance) variance
checkpointInterval cache 하는 checkpoint의 반복 주기를 설정합니다. 10
seed 학습에 필요한 seed값 입니다. None

Parameters BNF

SparkDecisionTreeRegression_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 = r'\w+'
COMMA = r'\,'
FEATURES = r'FEATURES | features'
LABEL = r'LABEL | label'
INTO = r'INTO'
EQUALS = r'\='
TIMES = r'\*'
MINUS = r'-'
LBRACKET = r'\['
RBRACKET = r'\]'
DOUBLE = [-+]?[0-9]+(\.([0-9]+)?([eE][-+]?[0-9]+)?|[eE][-+]?[0-9]+)