fit¶
개요¶
이 명령어는 해당 데이터를 선택한 알고리즘으로 기계학습 모델을 만들어줍니다.
설명¶
데이터를 학습하고 싶은 알고리즘(ex:classfication,regeression,clustering,ranking,…)을 선택하여 해당 알고리즘에 맞게 기계학습한 모델을 만들어줍니다. 이 때, 해당 알고리즘 각각의 하이퍼파라미터를 조정하여 사용자가 원하는 모델을 만들어줍니다.
Examples¶
Spark ML¶
LogisticRegression을 학습하는 예제 입니다.
예제 데이터는 다음과 같이 존재합니다.
a | b | s | d | Species | minmax_a | minmax_b | minmax_c | minmax_d | Label |
---|---|---|---|---|---|---|---|---|---|
5.1 | 3.5 | 4 | 0.2 | Iris-setosa | 0.222222 | 0.625 | 0.508475 | 0.041667 | 0 |
4.9 | 3 | 1.4 | 0.2 | Iris-setosa | 0.166667 | 0.416667 | 0.067797 | 0.041667 | 0 |
4.7 | 3.2 | 1.3 | 0.2 | Iris-setosa | 0.111111 | 0.5 | 0.050847 | 0.041667 | 0 |
4.6 | 3.1 | 1.5 | 0.2 | Iris-setosa | 0.083333 | 0.458333 | 0.084746 | 0.041667 | 0 |
5 | 3.6 | 1.4 | 0.2 | Iris-setosa | 0.194444 | 0.666667 | 0.067797 | 0.041667 | 0 |
7 | 3.2 | 4.7 | 1.4 | Iris-versicolor | 0.75 | 0.5 | 0.627119 | 0.541667 | 2 |
6.4 | 3.2 | 4.5 | 1.5 | Iris-versicolor | 0.583333 | 0.5 | 0.59322 | 0.583333 | 2 |
6.8 | 3.2 | 5.9 | 2.3 | Iris-virginica | 0.694444 | 0.5 | 0.830508 | 0.916667 | 1 |
6.7 | 3.3 | 5.7 | 2.5 | Iris-virginica | 0.666667 | 0.541667 | 0.79661 | 1 | 1 |
Fit으로 logicsticregression을 적용해 분류 하는 모델을 생성하는 명령어 예제입니다.
... | fit LogisticRegression FEATURES minmax_a,minmax_b,minmax_c,minmax_d LABEL label maxIter=100 regParam=0.1 fitIntercept=True INTO modelA
명령어 이후 모델 저장
index | category | algorithm | Model_name | saved_date | features | label | parameters | Evaluation | crossvalidation | grid_info | used_data_count | spent_seconds | user |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | Classfication | LogisticRegresssion | ModelA | 20190909102754 | LAT, LON | SYS_OUT | (maxIter:100,regParam:0.01,…) | (Accuracy:99,pricison:99,recall:10,…) | {} | {} | 100 | 5 sec | None |
TensorFlow¶
fit 명령어를 이용해 Tensorflow Deep learning 네트워크를 사용한 학습 예제입니다. 학습에 사용된 데이터는 아래와 같습니다.
image | label | tag |
---|---|---|
0,0,0,…,0.12,0.92,0.23,…,0,0 | 1,0,0,0,0,0,0,0,0,0 | zero |
0,0,0,…,0.12,0.92,0.23,…,0,0 | 0,0,0,0,0,1,0,0,0,0 | five |
… | … | … |
fit 명령어에 아래와 같이 옵션을 지정하고, 모델명을 지정해 줍니다.
batch_size : train 데이터의 배치 사이즈 입니다.
epochs : train 을 반복할 횟수 입니다.
config : 모델 구성 정보, 데이터 정보, 사용 알고리즘, 등 학습을 하기 위한 설정파일 위치 입니다. (minio 데이터소스 사용)
fit deep batch_size=128 epochs=5 config=objectstorage.MINIO_AI_SOURCE:/USERS/test/mnist/mnist_config.json into test_model
학습결과로 각 epoch 당 정확도(accuracy), 손실률(loss) 과 같은 정보를 반환합니다.
epoch | losses | metrics |
---|---|---|
1 | {‘loss’: 0.2142421} | {‘accuracy’: 0.15123124} |
2 | {‘loss’: 0.1442421} | {‘accuracy’: 0.32123124} |
3 | {‘loss’: 0.1042421} | {‘accuracy’: 0.55123124} |
4 | {‘loss’: 0.0942421} | {‘accuracy’: 0.71123124} |
5 | {‘loss’: 0.0542421} | {‘accuracy’: 0.85123124} |
Parameters¶
fitCommand : alg option
이름 | 설명 | 필수/옵션 |
---|---|---|
alg | 학습 알고리즘 입니다. 예 : LogisticRegression |
필수 |
option | 해당 알고리즘의 내부 파라미터 및 모델 저장 이름입니다. 예 : FEATURES fieldA, fieldB, LABEL target maxIter=100 regParam=0.1 fitIntercept=True INTO modelA |
필수 |
학습 알고리즘
알고리즘 | 지정파라미터 | 필수요소 |
---|---|---|
LogisticRegression | Label, Features, regParam, maxIter, name | Label, Features, name |
SVM | Label, Features, regType, maxIter, name | Label, Features, name |
Decisontree | (Label), Features, maxDepth, name | (Label), Features, name |
RandomForest | (Label), Features, numTree, name | (Label), Features, name |
LinearRegression | Label, Features, regParam, name | Label, Features, name |
Kmeans | Features, numk,name | Features,numk,name |
FPGrowh | Features, minSupport, minConfidance, name | Features, name |
Deep | epochs, batch_size, train_validation_ratio, continuous, retrain, config, name | config, name |
Parameters BNF¶
fit_command : alg options
alg : WORD
options : any
| options any
any : WORD
| NUMBER
| DOUBLE
| EQUALS
| COMMA
| SPACE
| DOT
| TIMES
| MINUS
| LBRACKET
| RBRACKET
| ATSIGN
| SLASH
| COLON
WORD = r'\w+'
COMMA = r','
TIMES = r'\*'
MINUS = r'-'
EQUALS = r'\='
SPACE = r'\ '
DOT = r'\.'
LBRACKET = r'\['
RBRACKET = r'\]'
NUMBER = \d+
DOUBLE = [-+]?[0-9]+(\.([0-9]+)?([eE][-+]?[0-9]+)?|[eE][-+]?[0-9]+)
ATSIGN = r'@'
SLASH = r'/'
COLON = r':'
추가 개발 사항(Issue)¶
- Merge_dataframe 실행 시 df가 섞이는 현상이 발생함 sort 후 섞는 기능 추가.
- model metadata Evaluation에 summary 사용 불가, 여러 성능 지표 계산 기능 추가.
- 겹치는 함수 및 Tensorflow 확장성을 위해 내부 함수들을 fit단계로 올려할 것.
추가 개발 방향¶
- Running_curve : 데이터량에 따라 학습이 얼마나 잘 진행되고 있는지 알려줄 수 있는 데이터를 return값에 포함 시켜줍니다. Data-Discovery-Service내에서 따로 시각화해서 확인 할수 있게 설계합니다. 기본적인 기능 구현을 우선시하여 뒤로 밀린 개발사항입니다.
- Sampling : 학습 알고리즘 내부에서 알아서 training/test 데이터를 나눠주는지 확인하지 못 하였습니다. 만약 스스로 나누지 않는다면 구현해야할 사항입니다. 역시 우선순위는 뒤로 밀렸습니다.
- CrossValidation : 교차검증기능 역시 알고리즘 내부에서 자동으로 이루어지는지 확인해 봐야 합니다. 스스로 이루어지지 않을 시에는 옵션으로 구현해야합니다. 역시 우선순위는 뒤로 밀렸습니다.
- Overfit,Underfit : 두 가지 경우에 어떻게 해줄지 생각을 하고 설계 및 개발을 해줘야한다.