fit

개요

이 명령어는 해당 데이터를 선택한 알고리즘으로 기계학습 모델을 만들어줍니다.

설명

데이터를 학습하고 싶은 알고리즘(ex:classfication,regeression,clustering,ranking,…)을 선택하여 해당 알고리즘에 맞게 기계학습한 모델을 만들어줍니다. 이 때, 해당 알고리즘 각각의 하이퍼파라미터를 조정하여 사용자가 원하는 모델을 만들어줍니다.

Algorithms

각 알고리즘의 사용법은 관련 명령어 문서를 확인해주세요.

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 데이터
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 : 두 가지 경우에 어떻게 해줄지 생각을 하고 설계 및 개발을 해줘야한다.