더 이상 Amazon Machine Learning 서비스를 업데이트하거나 새 사용자를 받지 않습니다. 이 설명서는 기존 사용자에 제공되지만 더 이상 업데이트되지 않습니다. 자세한 내용은 Amazon Machine Learning이란? 단원을 참조하세요.
레시피 형식 참조
Amazon ML 레시피에는 기계 학습 프로세스의 일부로 데이터를 변환하기 위한 지침이 포함되어 있습니다. 레시피는 JSON과 유사한 구문을 사용하여 정의되지만 일반적인 JSON 제한 외에 추가 제한이 있습니다. 레시피에는 다음과 같은 섹션이 있으며, 해당 섹션은 다음과 같은 순서대로 표시되어야 합니다.
-
그룹을 사용하면 여러 변수를 그룹화하여 변환을 쉽게 적용할 수 있습니다. 예를 들어 웹 페이지의 자유 텍스트 부분(제목, 본문)과 관련된 모든 변수를 그룹으로 만든 다음 이들 부분을 모두 한 번에 변환할 수 있습니다.
-
할당을 사용하면 이름이 지정된 중간 변수를 만들 수 있는데, 이들은 처리 시 재활용이 가능합니다.
-
출력은 학습 프로세스에서 사용할 변수와 이러한 변수에 적용할 변환(있는 경우)을 정의합니다.
그룹
변수 그룹을 정의하여 그룹 내의 모든 변수를 일괄하여 변환하거나 이러한 변수를 변환하지 않고 기계 학습에 사용할 수 있습니다. 기본적으로 Amazon ML은 다음과 같은 그룹을 생성합니다.
ALL_TEXT, ALL_NUMERIC, ALL_CATEGORICAL, ALL_BINARY – 데이터 소스 스키마에 정의된 변수를 기반으로 하는 유형별 그룹.
참고
ALL_INPUTS
로는 그룹을 생성할 수 없습니다.
이들 변수는 정의하지 않고도 레시피의 출력 섹션에서 사용할 수 있습니다. 기존 그룹에서 변수를 더하거나 빼서 또는 변수 모음에서 직접 변수를 더하거나 빼서 사용자 지정 그룹을 만들 수도 있습니다. 다음 예제에서는 세 가지 접근 방식과 그룹화 할당의 구문을 모두 보여줍니다.
"groups": { "Custom_Group": "group(var1, var2)", "All_Categorical_plus_one_other": "group(ALL_CATEGORICAL, var2)" }
그룹 이름은 영문자로 시작해야 하며 길이는 1~64자일 수 있습니다. 그룹 이름이 영문자로 시작하지 않거나 특수 문자(, ' " \t \r \n ( ) \)가 포함된 경우 레시피에 포함시키려면 이름을 따옴표로 묶어야 합니다.
할당
편의성과 가독성을 위해 중간 변수에 한 가지 이상의 변환을 할당할 수 있습니다. 예를 들어 email_subject라는 텍스트 변수가 있고 여기에 소문자 변환을 적용한 경우 결과 변수의 이름을 email_subect_lowercase로 지정하면 레시피의 다른 곳에서 해당 변수를 쉽게 추적할 수 있습니다. 또한 할당을 체인으로 연결하여 여러 변환을 지정된 순서로 적용할 수도 있습니다. 다음 예제에서는 레시피 구문의 단일 및 체인 할당을 보여줍니다.
"assignments": { "email_subject_lowercase": "lowercase(email_subject)", "email_subject_lowercase_ngram":"ngram(lowercase(email_subject), 2)" }
중간 변수 이름은 영문자로 시작해야 하며 길이는 1~64자일 수 있습니다. 이름이 영문자로 시작하지 않거나 특수 문자(, ' " \t \r \n ( ) \)가 포함된 경우에는 이름을 따옴표로 묶어야 레시피에 포함될 수 있습니다.
출력
출력 섹션은 학습 프로세스에 사용할 입력 변수와 해당 변수에 적용할 변환을 제어합니다. 출력 섹션이 비어 있거나 존재하지 않는 경우 학습 프로세스에 데이터가 전달되지 않으므로 오류가 발생합니다.
가장 간단한 출력 섹션에는 사전 정의된 ALL_INPUTS 그룹이 포함되어 있는데, 이는 Amazon ML이 데이터 소스에 정의된 모든 변수를 학습에 사용하도록 지시합니다.
"outputs": [ "ALL_INPUTS" ]
Amazon ML에 다음 그룹의 모든 변수를 사용하도록 지시하여 출력 섹션에서 미리 정의된 다른 그룹을 참조할 수도 있습니다.
"outputs": [ "ALL_NUMERIC", "ALL_CATEGORICAL" ]
출력 섹션은 사용자 지정 그룹도 참조할 수 있습니다. 다음 예제에서는 이전 예제의 그룹화 할당 섹션에 정의된 사용자 지정 그룹 중 하나만 기계 학습에 사용됩니다. 다른 모든 변수는 삭제됩니다.
"outputs": [ "All_Categorical_plus_one_other" ]
출력 섹션은 할당 섹션에 정의된 변수 할당도 참조할 수 있습니다.
"outputs": [ "email_subject_lowercase" ]
그리고 입력 변수 또는 변환을 출력 섹션에서 직접 정의할 수 있습니다.
"outputs": [ "var1", "lowercase(var2)" ]
출력은 학습 프로세스에서 사용할 수 있을 것으로 예상되는 모든 변수와 변환된 변수를 명시적으로 지정해야 합니다. 예를 들어 var1과 var2의 데카르트 곱(Cartesian product)을 출력에 포함시킨다고 가정해 보겠습니다. 원시 변수 var1과 var2도 모두 포함시키려면 출력 섹션에 원시 변수를 추가해야 합니다.
"outputs": [ "cartesian(var1,var2)", "var1", "var2" ]
가독성을 높이기 위해 변수와 함께 주석 텍스트를 추가하여 출력에 주석을 포함시킬 수 있습니다.
"outputs": [ "quantile_bin(age, 10) //quantile bin age", "age // explicitly include the original numeric variable along with the binned version" ]
출력 섹션 내에서 이러한 접근 방식을 모두 혼합하여 사용할 수 있습니다.
참고
레시피를 추가할 때는 Amazon ML 콘솔에서 댓글을 달 수 없습니다.
전체 레시피 예제
다음 예제는 이전 예제에서 소개된 여러 내장 데이터 프로세서를 참조합니다.
{ "groups": { "LONGTEXT": "group_remove(ALL_TEXT, title, subject)", "SPECIALTEXT": "group(title, subject)", "BINCAT": "group(ALL_CATEGORICAL, ALL_BINARY)" }, "assignments": { "binned_age" : "quantile_bin(age,30)", "country_gender_interaction" : "cartesian(country, gender)" }, "outputs": [ "lowercase(no_punct(LONGTEXT))", "ngram(lowercase(no_punct(SPECIALTEXT)),3)", "quantile_bin(hours-per-week, 10)", "hours-per-week // explicitly include the original numeric variable along with the binned version", "cartesian(binned_age, quantile_bin(hours-per-week,10)) // this one is critical", "country_gender_interaction", "BINCAT" ] }