.. role:: raw-html-m2r(raw)
:format: html
Spark DecisionTree Regression
====================================================================================================
개요
----------------------------------------------------------------------------------------------------
DecisionTree는 Classification / Regression에 모두 사용 할 수 있으며, 특정 값이 누락되어 있어도 사용 할 수 있습니다.
설명
----------------------------------------------------------------------------------------------------
Decision Tree 모델을 만들고 input data frame을 모델에 적용시킵니다. Decision Tree 모델 학습에 필요한 파라미터들을 지정할 수 있으며 지정하지 않을 시 Default 값으로 설정됩니다.
Examples
----------------------------------------------------------------------------------------------------
집값에 대한 샘플데이터 입니다.
.. list-table::
:header-rows: 1
* - 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 적용해 분류 하는 모델을 생성하는 명령어 예제입니다.
.. code-block:: none
* | fit DecisionTreeRegression FEATURES crim, age, tax LABEL medv maxdepth=3 minInfoGain=0.0 seed=None INTO modelC
feature별 gini계수(feature importance) , 평가지표(rmse, r2,mae) 출력
.. list-table::
:header-rows: 1
* - 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에 샘플 데이터를 다시 넣어 예측하는 명령어 예제입니다.
.. code-block:: none
* | predict modelC crim, age, tax
.. list-table::
:header-rows: 1
* - 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을 적용해 분류모델을 생성하고 후 예측하는 명령어 예제입니다.
.. code-block:: none
* | fit_predict DecisionTreeRegression FEATURES crim, age, tax LABEL medv maxdepth=3 minInfoGain=0.0 seed=None INTO modelC
Parameters
----------------------------------------------------------------------------------------------------
.. code-block:: none
SparkDecisionTreeRegression_command : FEATURES fields LABEL l_field params INTO_model
.. list-table::
:header-rows: 1
* - 이름
- 설명
- 필수/옵션
* - FEATURES fields
- 학습에 사용될 특징 column을 입력 받습니다.
- 필수
* - LABEL l_fiedls
- 학습에 사용될 라벨 column을 입력 받습니다.
- 필수
* - params
- *알고리즘 옵션을 지정해줍니다.
- 필수
* - INTO_model
- 모델을 저장해주는 예약어 입니다. :raw-html-m2r:`
`\ 경로 (\ **/B-IRIS/USERS/dani/ML/**\ )에 모델, 모델 메타 데이터가 저장됩니다.\ :raw-html-m2r:`
`\ 예 : into modelA
- 옵션
*알고리즘 옵션
.. list-table::
:header-rows: 1
* - 이름
- 설명
- 기본값
* - maxDepth
- tree의 깊이를 설정합니다.\ :raw-html-m2r:`
`\ 예 : 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
----------------------------------------------------------------------------------------------------
.. code-block:: none
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]+)