모델
이제 쿼리 서비스가 모델을 구축하고 배포하는 핵심 프로세스를 지원합니다. SQL을 사용하여 데이터를 사용하여 모델을 교육하고 정확도를 평가한 다음, 교육된 모델을 사용하여 새 데이터에 대한 예측을 수행할 수 있습니다. 그런 다음 모델을 사용하여 과거 데이터에서 일반화하여 실제 시나리오에 대한 정보에 입각한 결정을 내릴 수 있습니다.
실행 가능한 통찰력을 생성하기 위한 모델 라이프사이클의 세 단계는 다음과 같습니다.
- 교육: 모델이 제공된 데이터 집합에서 패턴을 학습합니다. (모델 만들기 또는 바꾸기)
- 테스트/평가: 모델의 성능은 별도의 데이터 세트를 사용하여 평가됩니다. (
model_evaluate) - 예측: 훈련된 모델은 새로운 확인되지 않은 데이터에 대한 예측을 수행하는 데 사용됩니다.
기존 SQL 문법에 추가된 모델 SQL 확장을 사용하여 비즈니스 요구에 따라 모델 라이프사이클을 관리합니다. 이 문서에서는 모델 만들기 또는 바꾸기, 교육, 평가, 필요한 경우 재교육 및 통찰력 예측에 필요한 SQL을 다룹니다.
모델 생성 및 교육 create-and-train
SQL 명령을 사용하여 머신 러닝 모델을 정의, 구성 및 교육하는 방법에 대해 알아봅니다. 아래 SQL에서는 모델을 만들고, 기능 엔지니어링 변환을 적용하고, 교육 프로세스를 시작하여 나중에 사용할 수 있도록 모델이 올바르게 구성되도록 하는 방법을 보여 줍니다. 다음 SQL 명령은 모델 생성 및 관리를 위한 다양한 옵션을 자세히 설명합니다.
- 모델 만들기: 지정한 데이터 집합에 새 모델을 만들고 교육합니다. 같은 이름의 모델이 이미 있으면 이 명령은 오류를 반환합니다.
- 없는 경우 모델 만들기: 지정한 데이터 집합에 이름이 같은 모델이 없는 경우에만 새 모델을 만들고 교육합니다.
- CREATE OR REPLACE MODEL: 모델을 만들고 교육합니다. 지정된 데이터 세트에 있는 동일한 이름으로 기존 모델의 최신 버전을 바꿉니다.
CREATE MODEL | CREATE MODEL IF NOT EXISTS | CREATE OR REPLACE MODEL}
model_alias
[TRANSFORM (select_list)]
[OPTIONS(model_option_list)]
[AS {select_query}]
model_option_list:
MODEL_TYPE = { 'LINEAR_REG' |
'LOGISTIC_REG' |
'KMEANS' }
[, MAX_ITER = int64_value ]
[, LABEL = string_array ]
[, REG_PARAM = float64_value ]
예
CREATE MODEL churn_model
TRANSFORM (vector_assembler(array(current_customers, previous_customers)) features)
OPTIONS(MODEL_TYPE='linear_reg', LABEL='churn_rate')
AS
SELECT *
FROM churn_with_rate
ORDER BY period;
모델 생성 및 교육 프로세스의 주요 구성 요소와 구성을 이해하는 데 도움이 되도록 위의 SQL 예에서 각 요소의 목적과 기능을 설명하는 참고 사항이 있습니다.
-
<model_alias>: 모델 별칭은 모델에 할당된 재사용 가능한 이름이며 나중에 참조할 수 있습니다. 모델의 이름을 지정해야 합니다. -
transform: 모델 교육 전에 기능 엔지니어링 변환(예: 핫형 인코딩 및 문자열 인덱싱)을 데이터 집합에 적용하는 데 transform 절을 사용합니다.TRANSFORM문의 마지막 절은 모델 교육에 대한 기능을 구성하는 열 목록이 있는vector_assembler또는vector_assembler의 파생 형식(max_abs_scaler(feature),standard_scaler(feature)등)이어야 합니다. 마지막 절에 언급된 열만 교육에 사용됩니다.SELECT쿼리에 포함되더라도 다른 모든 열은 제외됩니다. -
label = <label-COLUMN>: 모델이 예측하려는 대상 또는 결과를 지정하는 교육 데이터 집합의 레이블 열입니다. -
training-dataset: 이 구문은 모델 교육에 사용되는 데이터를 선택합니다. -
type = 'LogisticRegression': 이 구문은 사용할 기계 학습 알고리즘의 유형을 지정합니다. 옵션에는LinearRegression,LogisticRegression및KMeans이(가) 있습니다. -
options: 이 키워드는 모델을 구성하는 유연한 키-값 쌍 집합을 제공합니다.Key model_type:model_type = '<supported algorithm>': 사용할 기계 학습 알고리즘의 유형을 지정합니다. 지원되는 옵션은LinearRegression,LogisticRegression및KMeans입니다.Key label:label = <label_COLUMN>: 모델이 예측하려는 대상 또는 결과를 나타내는 레이블 열을 교육 데이터 집합에 정의합니다.
SQL을 사용하여 교육에 사용되는 데이터 세트를 참조합니다.
CREATE MODEL과(와) CREATE TABLE 모두에서 지원되는 함수 및 사용을 포함하여 TRANSFORM 절에 대한 전체 참조는 SQL 구문 설명서🔗에서 TRANSFORM 절을 참조하십시오.모델 업데이트 update
새로운 기능 엔지니어링 변환을 적용하고 알고리즘 유형 및 레이블 열과 같은 옵션을 구성하여 기존 머신 러닝 모델을 업데이트하는 방법에 대해 알아봅니다. 각 업데이트에서는 마지막 버전에서 증분된 새로운 버전의 모델을 만듭니다. 이렇게 하면 변경 사항이 추적되고 모델이 향후 평가 또는 예측 단계에서 재사용될 수 있습니다.
다음 예제에서는 새 변형 및 옵션을 사용하여 모델을 업데이트하는 방법을 보여 줍니다.
UPDATE MODEL <model_alias> TRANSFORM (vector_assembler(array(current_customers, previous_customers)) features) OPTIONS(MODEL_TYPE='logistic_reg', LABEL='churn_rate') AS SELECT * FROM churn_with_rate ORDER BY period;
예
버전 관리 프로세스를 이해하는 데 도움이 되도록 다음 명령을 고려하십시오.
UPDATE MODEL model_vdqbrja OPTIONS(MODEL_TYPE='logistic_reg', LABEL='Survived') AS SELECT * FROM titanic_e2e_dnd;
이 명령이 실행되면 아래 표와 같이 모델에 새 버전이 생깁니다.
다음 주석은 모델 업데이트 워크플로우의 주요 구성 요소 및 옵션에 대해 설명합니다.
UPDATE model <model_alias>: update 명령은 버전 관리를 처리하고 마지막 버전에서 증가한 새 모델 버전을 만듭니다.version: 새 버전을 만들도록 명시적으로 지정하는 업데이트 중에만 사용되는 선택적 키워드입니다. 생략하면 버전이 자동으로 증가합니다.
변환된 기능 미리 보기 및 유지 preview-transform-output
모델 교육 전에 기능 변환의 출력을 미리 보고 유지하려면 CREATE TABLE 및 CREATE TEMP TABLE 문 내의 TRANSFORM 절을 사용하십시오. 이러한 향상된 기능을 통해 인코딩, 토큰화 및 벡터 어셈블러와 같은 변환 함수가 데이터 세트에 적용되는 방식에 대한 가시성을 확보할 수 있습니다.
변환된 데이터를 독립 실행형 테이블로 구체화함으로써 모델을 생성하기 전에 중간 피쳐를 검사하고, 처리 논리를 검증하고, 피쳐 품질을 확인할 수 있습니다. 이렇게 하면 머신 러닝 파이프라인 전반의 투명도가 향상되고 모델 개발 중에 보다 정보에 입각한 의사 결정이 지원됩니다.
구문 syntax
아래와 같이 CREATE TABLE 또는 CREATE TEMP TABLE 문 내에서 TRANSFORM 절을 사용합니다.
CREATE TABLE [IF NOT EXISTS] table_name
[WITH (tableProperties)]
TRANSFORM (transformFunctionExpression1, transformFunctionExpression2, ...)
AS SELECT * FROM source_table;
또는:
CREATE TEMP TABLE [IF NOT EXISTS] table_name
[WITH (tableProperties)]
TRANSFORM (transformFunctionExpression1, transformFunctionExpression2, ...)
AS SELECT * FROM source_table;
예
기본 변환을 사용하여 표 만들기:
CREATE TABLE ctas_transform_table
TRANSFORM(
String_Indexer(additional_comments) si_add_comments,
one_hot_encoder(si_add_comments) as ohe_add_comments,
tokenizer(comments) as token_comments
)
AS SELECT * FROM movie_review;
추가 기능 엔지니어링 단계를 사용하여 임시 테이블을 생성합니다.
CREATE TEMP TABLE ctas_transform_table
TRANSFORM(
String_Indexer(additional_comments) si_add_comments,
one_hot_encoder(si_add_comments) as ohe_add_comments,
tokenizer(comments) as token_comments,
stop_words_remover(token_comments, array('and','very','much')) stp_token,
ngram(stp_token, 3) ngram_token,
tf_idf(ngram_token, 20) ngram_idf,
count_vectorizer(stp_token, 13) cnt_vec_comments,
tf_idf(token_comments, 10, 1) as cmts_idf
)
AS SELECT * FROM movie_review;
그런 다음 출력을 쿼리합니다.
SELECT * FROM ctas_transform_table LIMIT 1;
중요한 고려 사항 considerations
이 기능은 투명도를 높이고 기능 유효성 검사를 지원하지만 모델 생성 이외의 TRANSFORM 절을 사용할 때는 고려해야 할 중요한 제한 사항이 있습니다.
- 벡터 출력: 변환에서 벡터 형식 출력이 생성되면 자동으로 배열로 변환됩니다.
- 일괄 처리 재사용 제한:
TRANSFORM(으)로 만든 테이블은 테이블을 만드는 동안에만 변환을 적용할 수 있습니다.INSERT INTO과(와) 함께 삽입된 데이터의 새 배치가 자동으로 변환되지 않습니다. 새 데이터에 동일한 변환 논리를 적용하려면 새CREATE TABLE AS SELECT(CTAS) 문을 사용하여 표를 다시 만들어야 합니다. - 모델 재사용 제한:
TRANSFORM을(를) 사용하여 만든 테이블은CREATE MODEL문에서 직접 사용할 수 없습니다. 모델을 만드는 동안TRANSFORM논리를 다시 정의해야 합니다. 모델 트레이닝 중에는 벡터 유형 출력을 생성하는 변환이 지원되지 않습니다. 자세한 내용은 기능 변환 출력 데이터 형식을 참조하세요.
모델 평가 evaluate-model
신뢰할 수 있는 결과를 얻으려면 model_evaluate 키워드를 사용하여 예측을 위해 모델을 배포하기 전에 모델의 정확성과 유효성을 평가하십시오. 아래의 SQL 문은 테스트 데이터 세트, 특정 열 및 모델의 성능을 평가하여 모델을 테스트할 모델의 버전을 지정합니다.
SELECT *
FROM model_evaluate(model-alias, version-number,SELECT col1,
col2,
label-COLUMN
FROM test_dataset)
model_evaluate 함수는 model-alias을(를) 첫 번째 인수로 사용하고 유연한 SELECT 문을 두 번째 인수로 사용합니다. 쿼리 서비스가 먼저 SELECT 문을 실행하고 결과를 model_evaluate Adobe 정의 함수(ADF)에 매핑합니다. 시스템은 SELECT 문 결과의 열 이름 및 데이터 형식이 교육 단계에서 사용된 열 이름과 일치해야 합니다. 이러한 열 이름 및 데이터 유형은 평가를 위해 테스트 데이터 및 레이블 데이터로 처리됩니다.
model_evaluate)와 예측(model_predict)할 때 교육 시 수행된 변환이 사용됩니다.예측 predict
model_predict에 대한 향상된 열 선택 및 앨리어싱은 기능 플래그로 제어됩니다. 기본적으로 probability 및 rawPrediction과(와) 같은 중간 필드는 예측 출력에 포함되지 않습니다.이러한 중간 필드에 대한 액세스를 활성화하려면
model_predict을(를) 실행하기 전에 다음 명령을 실행하십시오.set advanced_statistics_show_hidden_fields=true;model_predict 키워드를 사용하여 지정된 모델과 버전을 데이터 집합에 적용하고 예측을 생성합니다. 모든 출력 열을 선택하거나, 특정 출력 열을 선택하거나, 별칭을 할당하여 출력 명확성을 향상시킬 수 있습니다.
기본적으로 기능 플래그를 활성화하지 않으면 기본 열과 최종 예측만 반환됩니다.
SELECT * FROM model_predict(model-alias, version-number, SELECT col1, col2 FROM dataset);
특정 출력 필드 선택 select-specific-output-fields
기능 플래그를 사용하면 model_predict 출력에서 필드 하위 집합을 검색할 수 있습니다. 이 옵션을 사용하여 입력 쿼리에서 예측 확률, 원시 예측 점수 및 기본 열과 같은 중간 결과를 검색합니다.
사례 1: 사용 가능한 모든 출력 필드 반환
SELECT * FROM model_predict(modelName, 1, SELECT a, b, c FROM dataset);
사례 2: 선택한 열 반환
SELECT a, b, c, probability, predictionCol FROM model_predict(modelName, 1, SELECT a, b, c FROM dataset);
사례 3: 별칭이 있는 선택한 열 반환
SELECT a, b, c, probability AS p1, predictionCol AS pdc FROM model_predict(modelName, 1, SELECT a, b, c FROM dataset);
각 경우에 외부 SELECT은(는) 반환되는 결과 필드를 제어합니다. 여기에는 probability, rawPrediction 및 predictionCol과(와) 같은 예측 출력과 함께 입력 쿼리의 기본 필드가 포함됩니다.
테이블 만들기 또는 삽입을에 사용하여 예측 유지
원하는 경우 예측 출력을 포함하여 "CREATE TABLE AS SELECT" 또는 "INSERT INTO SELECT"를 사용하여 예측을 유지할 수 있습니다.
예: 모든 예측 출력 필드를 사용하여 테이블을 만듭니다
CREATE TABLE scored_data AS SELECT * FROM model_predict(modelName, 1, SELECT a, b, c FROM dataset);
예: 별칭을 사용하여 선택한 출력 필드를 삽입합니다
INSERT INTO scored_data SELECT a, b, c, probability AS p1, predictionCol AS pdc FROM model_predict(modelName, 1, SELECT a, b, c FROM dataset);
다운스트림 분석 또는 보고를 위해 관련 예측 출력 필드 및 기본 열만 선택하고 유지할 수 있는 유연성을 제공합니다.
모델 평가 및 관리
SHOW MODELS 명령을 사용하여 만든 사용 가능한 모든 모델을 나열합니다. 이 필드를 사용하여 교육되었으며 평가 또는 예측에 사용할 수 있는 모델을 봅니다. 질의하면 모델 생성 중에 업데이트되는 모델 저장소에서 정보를 가져옵니다. 반환된 세부 사항은 모델 ID, 모델 이름, 버전, 소스 데이터 세트, 알고리즘 세부 사항, 옵션/매개 변수, 생성/업데이트 시간 및 모델을 만든 사용자입니다.
SHOW MODELS;
결과는 아래에 표시된 것과 유사한 표에 나타납니다.
model-84362-mdunjSalesModelsales_data_2023LogisticRegression{"label": "label-field"}one_hot_encoder(name), ohe_name, string_indexer(gender), genderSIJohnSnow@adobe.com모델 정리 및 유지 관리
DROP MODELS 명령을 사용하여 모델 레지스트리에서 만든 모델을 삭제합니다. 오래된 모델, 사용하지 않은 모델 또는 원하지 않는 모델을 제거하는 데 사용할 수 있습니다. 따라서 리소스를 확보하고 관련 모델만 유지 관리할 수 있습니다. 특수성을 개선하기 위해 선택적 모델 이름을 포함할 수도 있습니다. 제공된 모델 버전이 있는 모델만 삭제됩니다.
DROP MODEL IF EXISTS modelName
DROP MODEL IF EXISTS modelName modelVersion ;
다음 단계
이제 이 문서를 읽고 Data Distiller을 사용하여 신뢰할 수 있는 모델을 만들고, 교육하고, 관리하는 데 필요한 기본 SQL 구문을 이해합니다. 다음으로 고급 통계 모델 구현 문서를 살펴보고 사용 가능한 다양한 신뢰할 수 있는 모델과 SQL 워크플로 내에서 효과적으로 구현하는 방법에 대해 알아봅니다. 아직 수행하지 않았다면 기능 엔지니어링 문서를 검토하여 데이터가 모델 교육에 맞게 최적으로 준비되었는지 확인하십시오.