TRAIN MODEL
목적
TRAIN MODEL 문은 정의한 모델 타입을 대상 테이블의 컬럼 집합에 대해 학습시켜 모델을 구축하는 데 사용한다.
구문
다이어그램
trainModel
trainDataClause
columnNameList
trainDataConditionClause
trainSampleClause
trainModelOptionsClause
optionKeyValue
키워드 및 파라미터
modelName
학습 과정을 거쳐 얻을 모델명을 나타내는 식별자다.
modeltypeName
모델을 얻기 위해 학습시킬 모델 타입을 나타내는 식별자다.
UPDATE
이미 학습되어 있는 모델에 추가 데이터를 학습하여 모델을 업데이트 할 때 사용한다.
LIKE
기존 모델과 동일한 테이블의 컬럼들에 대해 새로운 모델을 학습할 때 사용한다.
exModelName
학습되어 있는 모델명을 나타내는 식별자다.
trainDataClause
학습시킬 대상 데이터를 지정하는 절이다. 여러 테이블의 컬럼에 대해 모델을 훈련하려면 JOIN 절을 이용하여 지정한다.
schemaName
학습 대상 테이블이 포함된 스키마명을 나타내는 식별자다. 지정하지 않으면 현재 사용 중인 스키마로 지정된다.
tableName
학습 대상으로 지정할 테이블명을 나타내는 식별자다.
columnNameList
학습 대상 데이터로 지정할 컬럼 리스트를 지정한다. 컴마(,)로 구분하여 여러 컬럼을 지정할 수 있다.
trainDataConditionClause
학습시킬 테이블의 컬럼 중 대상 데이터를 가져오기 위한 조건을 지정하는 절이다. 학습 대상 테이블이 둘 이상일 경우에 학습 대상 테이블들을 조인하기 위한 조건을 지정하거나, 이미 학습되어 있는 모델을 업데이트할 데이터에 대한 조건을 지정하는 데 사용할 수 있다.
trainSampleClause
지정한 테이블로부터 일부만 샘플링해서 학습 데이터로 사용하고자 할 때 지정하는 절이다.
trainModelOptionsClause
모델 학습 시 사용할 옵션(하이퍼파라미터 등)을 지정하는 절이다. 지정 가능한 옵션은 모델 타입에 따라 다를 수 있다.
‘optionKey’
옵션의 키를 나타내는 문자열 리터럴이다.
optionValue
지정할 옵션의 값을 나타내는 문자열 리터럴 또는 수치 값(따옴표 없음)이다.
예시
모델 학습
다음은 tgan 이라는 모델을 기존에 정의되어 있는 tablegan 이라는 모델 타입으로 instacart 스키마에 속한 order_products 테이블의 reordered, add_to_cart_order 컬럼을 대상으로 학습시키는 문장이다.
TRAIN MODEL tgan MODELTYPE tablegan
FROM instacart.order_products(reordered, add_to_cart_order);
뒤에 OPTIONS 절을 추가해 epochs 하이퍼파라미터를 지정할 수도 있다.
TRAIN MODEL tgan MODELTYPE tablegan
FROM instacart.order_products(reordered, add_to_cart_order)
OPTIONS ( 'epochs' = 100 );
둘 이상의 테이블에 있는 데이터에 대해서도 다음과 같이 모델을 훈련시킬 수 있다.
TRAIN MODEL tgan_multi_tables MODELTYPE tablegan
FROM instacart.order_products(reordered, add_to_cart_order, order_id)
JOIN instacart.orders(order_id, order_dow)
ON orders.order_id = order_products.order_id;
모델 업데이트
다음은 rspn_op 라는 모델을 기존에 정의되어 있는 rspn 이라는 결과 추론형 모델 타입으로 instacart 스키마에 속한 order_products 테이블의 reordered, add_to_cart_order 컬럼을 대상으로 학습시킨 후, 추가 데이터를 학습하여 rspn_op_update 라는 업데이트 된 모델을 훈련하는 문장이다.
TRAIN MODEL rspn_op MODELTYPE rspn
FROM instacart.order_products(reordered, add_to_cart_order);
TRAIN MODEL rspn_op_update UPDATE rspn_op
ON order_products.order_id > 3000000;