.. role:: raw-html-m2r(raw) :format: html fit ==================================================================================================== 개요 ---------------------------------------------------------------------------------------------------- 이 명령어는 해당 데이터를 선택한 알고리즘으로 기계학습 모델을 만들어줍니다. 타입 ---------------------------------------------------------------------------------------------------- 설명 ---------------------------------------------------------------------------------------------------- 데이터를 학습하고 싶은 알고리즘(ex:classfication,regeression,clustering,ranking,...)을 선택하여 해당 알고리즘에 맞게 기계학습한 모델을 만들어줍니다. 이 때, 해당 알고리즘 각각의 하이퍼파라미터를 조정하여 사용자가 원하는 모델을 만들어줍니다. Algorithms '''''''''' 각 알고리즘의 사용법은 관련 명령어 문서를 확인해주세요. - **Spark ML Algorithms** 1. `RandomForest Classification `_ 2. `RandomForest Regression `_ 3. `Spark DecisionTree Classification `_ 4. `Spark DecisionTree Regression `_ 5. `Spark FP-Growth `_ 6. `Spark Kmeans `_ 7. `generalizedLinearRegression `_ 8. `linearRegression `_ 9. `logisticRegression `_ - **TensroFlow Deep Learning** 1. `TFDeep `_ Examples ---------------------------------------------------------------------------------------------------- Spark ML '''''''' LogisticRegression을 학습하는 예제 입니다. 예제 데이터는 다음과 같이 존재합니다. .. list-table:: :header-rows: 1 * - 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을 적용해 분류 하는 모델을 생성하는 명령어 예제입니다. | FEATURES : 입력 변수입니다. (단순 선형 회귀의 x 변수) | LABEL : 예측하는 항목입니다. (단순 션형 회귀의 y 변수) | INTO : 학습모델의 이름을 설정합니다. (이후에 모델 이름을 통해서 모델에 접근 가능합니다.) | .. code-block:: none ... | fit LogisticRegression FEATURES minmax_a,minmax_b,minmax_c,minmax_d LABEL label maxIter=100 regParam=0.1 fitIntercept=True INTO modelA 명령어 이후 모델 저장 .. list-table:: :header-rows: 1 * - 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 | 저장된 모델은 아래 dsl을 이용하여 확인하실 수 있습니다. .. code-block:: none * | mlmodel list | where name = 'modelA' TensorFlow '''''''''' fit 명령어를 이용해 Tensorflow Deep learning 네트워크를 사용한 학습 예제입니다. 학습에 사용된 데이터는 아래와 같습니다. .. list-table:: Image-Label 데이터 :header-rows: 1 * - 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 데이터소스 사용) .. code-block:: none fit deep batch_size=128 epochs=5 config=objectstorage.MINIO_AI_SOURCE:/USERS/test/mnist/mnist_config.json into test_model 학습결과로 각 epoch 당 정확도(accuracy), 손실률(loss) 과 같은 정보를 반환합니다. .. list-table:: 학습 결과 :header-rows: 1 * - 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 ---------------------------------------------------------------------------------------------------- .. code-block:: none fitCommand : alg option .. list-table:: :header-rows: 1 * - 이름 - 설명 - 필수/옵션 * - alg - *학습 알고리즘* 입니다.\ :raw-html-m2r:`
`\ 예 : LogisticRegression - 필수 * - option - 해당 알고리즘의 내부 파라미터 및 모델 저장 이름입니다.\ :raw-html-m2r:`
`\ 예 : FEATURES fieldA, fieldB, LABEL target maxIter=100 regParam=0.1 fitIntercept=True INTO modelA - 필수 *학습 알고리즘* .. list-table:: :header-rows: 1 * - 알고리즘 - 지정파라미터 - 필수요소 * - 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 ---------------------------------------------------------------------------------------------------- .. code-block:: none 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 : 두 가지 경우에 어떻게 해줄지 생각을 하고 설계 및 개발을 해줘야한다.