더 이상 Amazon Machine Learning 서비스를 업데이트하거나 새 사용자를 받지 않습니다. 이 설명서는 기존 사용자에 제공되지만 더 이상 업데이트되지 않습니다. 자세한 내용은 Amazon Machine Learning이란? 단원을 참조하세요.
데이터 변환 참조
주제
n-gram 변환
n-gram 변환은 텍스트 변수를 입력으로 받아 (사용자가 구성할 수 있는) n개 단어의 창을 슬라이딩하는 것에 해당하는 문자열을 생성하여 프로세스에서 출력을 생성합니다. 예를 들어 "I really enjoyed reading this book"라는 텍스트 문자열을 생각해 보세요.
창 크기=1로 n-gram 변환을 지정하면 간단히 해당 문자열에 있는 모든 개별 단어를 얻을 수 있습니다.
{"I", "really", "enjoyed", "reading", "this", "book"}
창 크기 =2로 n-gram 변환을 지정하면 두 단어 조합과 한 단어 조합이 모두 제공됩니다.
{"I really", "really enjoyed", "enjoyed reading", "reading this", "this book", "I", "really", "enjoyed", "reading", "this", "book"}
창 크기 = 3으로 n-gram 변환을 지정하면 이 목록에 세 단어 조합이 추가되어 다음과 같은 결과가 나타납니다.
{"I really enjoyed", "really enjoyed reading", "enjoyed reading this", "reading this book", "I really", "really enjoyed", "enjoyed reading", "reading this", "this book", "I", "really", "enjoyed", "reading", "this", "book"}
크기가 2~10단어 범위인 n-gram을 요청할 수 있습니다. 크기가 1인 n-gram은 데이터 스키마에서 유형이 텍스트로 표시된 모든 입력에 대해 암시적으로 생성되므로 요청하지 않아도 됩니다. 마지막으로, n-gram은 공백 문자의 입력 데이터를 분리하여 생성된다는 점을 명심하세요. 즉, 예를 들어 문장 부호 문자는 워드 토큰의 일부로 간주됩니다. "red, green, blue" 문자열에 대해 창 크기가 2인 n-gram을 생성하면 {"red,", "green,", "blue,", "red, green", "green, blue"}가 출력됩니다. 필요하지 않은 경우 구두점 제거 프로세서(이 문서의 뒷부분에서 설명)를 사용하여 구두점 기호를 제거할 수 있습니다.
변수 var1에 대해 창 크기가 3인 n-gram을 계산하려면:
"ngram(var1, 3)"
Orthogonal Sparse Bigram(OSB) 변환
OSB 변환은 텍스트 문자열 분석을 지원하기 위한 것으로 bi-gram 변환(창 크기가 2인 n-gram)의 대안입니다. OSB는 크기가 n인 창을 텍스트 위로 슬라이딩하고 창의 첫 번째 단어가 포함된 모든 단어 쌍을 출력하면 생성됩니다.
각 OSB를 빌드할 때 OSB를 구성하는 단어를 "_" (밑줄) 문자로 연결하고 생략된 모든 토큰은 OSB에 밑줄을 하나 더 추가하여 표시합니다. 따라서 OSB는 창에 표시되는 토큰 뿐만 아니라 동일한 창 내에서 건너뛰었던 토큰 수를 나타내는 값도 인코딩합니다.
예를 들어, "The quick brown fox jumps over the lazy dog"라는 문자열과 크기가 4인 OSB를 생각해 보세요. 다음 예제에는 네 단어로 된 창 여섯 개와 문자열 끝에서 나온 마지막 두 개의 짧은 창, 그리고 각 창에서 생성된 OSB도 나와 있습니다.
Window, {생성된 OSB}
"The quick brown fox", {The_quick, The__brown, The___fox} "quick brown fox jumps", {quick_brown, quick__fox, quick___jumps} "brown fox jumps over", {brown_fox, brown__jumps, brown___over} "fox jumps over the", {fox_jumps, fox__over, fox___the} "jumps over the lazy", {jumps_over, jumps__the, jumps___lazy} "over the lazy dog", {over_the, over__lazy, over___dog} "the lazy dog", {the_lazy, the__dog} "lazy dog", {lazy_dog}
Orthogonal sparse bigram은 n-gram의 대안으로, 일부 상황에서는 더 잘 작동할 수 있습니다. 데이터에 큰 텍스트 필드(단어가 10개 이상)가 있는 경우 어떤 것이 더 효과적인지 실험해 보세요. 큰 텍스트 필드를 구성하는 요소는 상황에 따라 달라질 수 있습니다. 그러나 텍스트 필드가 클수록 OSB는 특수 건너뛰기 기호(밑줄)로 인해 텍스트를 고유하게 나타내는 것으로 경험적으로 나타났습니다.
입력 텍스트 변수에 대한 OSB 변환의 경우 창 크기를 2~10으로 요청할 수 있습니다.
변수 var1에 대해 창 크기가 5인 OSB를 계산하려면:
"osb(var1, 5)"
소문자 변환
소문자 변환 프로세서는 텍스트 입력을 소문자로 변환합니다. 예를 들어 "The Quick Brown Fox Jumps Over the Lazy Dog"라고 입력하면 프로세서가 "the quick brown fox jumps over the lazy dog"라고 출력합니다.
var1 변수에 소문자 변환을 적용하려면:
"lowercase(var1)"
구두점 제거 변환
Amazon ML은 암시적으로 데이터 스키마에 텍스트로 표시된 입력을 공백으로 분할합니다. 문자열에 있는 구두점은 주변의 공백에 따라 인접한 단어 토큰이 되거나 완전히 별도의 토큰이 됩니다. 이것이 바람직하지 않은 경우 구두점 제거 변환을 사용하여 생성된 특성에서 구두점 기호를 제거할 수 있습니다. 예를 들어, "Welcome to AML - please fasten your seat-belts!" 라는 문자열이 주어진다면 다음과 같은 토큰 세트가 암시적으로 생성됩니다.
{"Welcome", "to", "Amazon", "ML", "-", "please", "fasten", "your", "seat-belts!"}
이 문자열에 구두점 제거 프로세서를 적용하면 다음과 같은 결과가 나옵니다.
{"Welcome", "to", "Amazon", "ML", "please", "fasten", "your", "seat-belts"}
접두사 및 접미사 문장 부호만 제거된다는 점에 유의하세요. 토큰 중간에 나타나는 문장 부호(예: "seat-belts"의 하이픈)는 제거되지 않습니다.
변수 var1에 구두점 제거를 적용하려면:
"no_punct(var1)"
Quantile Binning 변환
quantile binning 프로세서는 숫자 변수 및 bin 숫자라는 파라미터의 두 가지 입력을 받아서 범주형 변수를 출력하는 프로세스입니다. 관측된 값을 그룹화하여 변수 분포의 비선형성을 발견하기 위한 것입니다.
많은 경우에 숫자 변수와 대상 간의 관계는 선형적이지 않습니다(숫자 변수 값이 대상에 따라 점차 증가하거나 감소하지 않음). 이 경우 다양한 범위의 숫자 특성을 나타내는 범주형 특성으로 숫자 특성을 비닝하는 것이 유용할 수 있습니다. 각 범주형 특성 값(빈)은 대상과의 선형 관계를 갖도록 모델링될 수 있습니다. 예를 들어 연속적인 숫자 특성 account_age가 책을 구입할 가능성과 선형적으로 관련이 없다는 것을 사용자가 알고 있다고 가정하고 설명해 보겠습니다. 사용자는 대상과의 관계를 더욱 정확하게 캡처할 수 있는 범주형 특성으로 age를 비닝할 수 있습니다.
quantile binning 프로세서를 사용하면 age 변수의 모든 입력 값 분포를 기반으로 동일한 크기의 n개 빈을 설정한 다음 각 숫자를 빈이 포함된 텍스트 토큰으로 대체하도록 Amazon ML에 지시할 수 있습니다. 숫자 변수에 대한 최적의 빈 수는 변수의 특징과 대상과의 관계에 따라 달라지며, 이는 실험을 통해 가장 효과적으로 결정됩니다. Amazon ML은 제안된 레시피의 데이터 통계를 기반으로 숫자 특성에 가장 적합한 빈 수를 추천합니다.
모든 숫자 입력 변수에 대해 5~1000개의 분위수 빈을 계산하도록 요청할 수 있습니다.
다음 예제에서는 숫자 변수 var1 대신 50개의 빈을 계산하고 사용하는 방법을 보여줍니다.
"quantile_bin(var1, 50)"
정규화 변환
정규화 변환기는 평균이 0이고 분산이 1이 되도록 숫자 변수를 정규화합니다. 대상과 관련된 정보를 제공하는 특성이든 아니든 상관없이 규모가 가장 큰 변수가 ML 모델을 지배할 수 있기 때문에 숫자 변수를 정규화하면 학습 프로세스에 도움이 될 수 있습니다.
이 변환을 숫자 변수 var1에 적용하려면 레시피에 다음을 추가합니다.
normalize(var1)
이 변환기는 또한 모든 숫자 변수에 대해 사용자 정의 숫자 변수 그룹 또는 미리 정의된 그룹(ALL_NUMERIC)을 입력으로 사용할 수 있습니다.
normalize(ALL_NUMERIC)
참고
숫자 변수에 정규화 프로세서를 반드시 사용해야 하는 것은 아닙니다.
Cartesian Product 변환
데카르트 변환은 둘 이상의 텍스트 또는 범주형 입력 변수의 순열을 생성합니다. 이 변환은 변수 간 상호작용이 의심되는 경우에 사용됩니다. 예를 들어 자습서: Amazon ML을 사용하여 마케팅 제안에 대한 응답 예측에서 사용되는 은행 마케팅 데이터 세트를 예로 들어 보겠습니다. 이 데이터 세트를 사용하여 경제 및 인구 통계 정보를 기반으로 은행 프로모션에 긍정적인 반응을 보일지 예측하고자 합니다. 우리는 그 사람의 직업 유형이 어느 정도 중요하다고 의심할 수 있으며(아마도 특정 분야에 취업하는 것과 가용 자금을 확보하는 것 사이에 상관 관계가 있을 수 있음), 최고 수준의 교육을 받은 것도 중요하다고 생각할 수 있습니다. 또한 이 두 변수의 상호작용에 강한 신호가 있다는 것을 더 깊이 직감할 수 있을 것입니다. 예를 들어 대학 학위를 취득한 기업가 고객에게 특히 적합하다는 것을 예로 들 수 있습니다.
Cartesian Product 변환은 범주형 변수 또는 텍스트를 입력으로 사용하여 이러한 입력 변수 간의 상호작용을 캡처하는 새로운 특성을 생성합니다. 특히, 각 학습 예제에 대해 기능 조합을 만들어 독립형 특성으로 추가합니다. 예를 들어, 단순화된 입력 행이 다음과 같다고 가정해 보겠습니다.
target, education, job
0, university.degree, technician
0, high.school, services
1, university.degree, admin
데카르트 변환을 범주형 변수인 education 및 직무 필드에 적용하도록 지정하면 education_job_interaction이라는 결과 특성이 다음과 같이 표시됩니다.
target, education_job_interaction
0, university.degree_technician
0, high.school_services
1, university.degree_admin
데카르트 변환은 토큰 시퀀스를 작업할 때 훨씬 더 강력합니다. 인수 중 하나가 암시적 또는 명시적으로 토큰으로 분할된 텍스트 변수인 경우처럼 말이죠. 예를 들어, 책을 교과서로 분류하고 교과서가 아닌 것으로 분류하는 작업을 생각해 보세요. 직관적으로 우리는 책 제목에 교과서임을 알려주는 무언가가 있다고 생각할 수도 있고(교과서 제목에 특정 단어가 더 자주 등장할 수도 있음) 책의 제본용 표지에 예측 가능한 부분이 있다고 생각할 수도 있지만(교과서는 양장본일 가능성이 더 높음), 실제로 가장 예측 가능한 것은 제목과 제본용 표지의 일부 단어의 조합입니다. 실제 예제의 경우 다음 표는 입력 변수 binding과 title에 데카르트 프로세서를 적용한 결과를 보여줍니다.
Textbook | Title | Binding | Cartesian product of no_punct(Title) and Binding |
---|---|---|---|
1 | Economics: Principles, Problems, Policies | Hardcover | {"Economics_Hardcover", "Principles_Hardcover", "Problems_Hardcover", "Policies_Hardcover"} |
0 | The Invisible Heart: An Economics Romance | Softcover | {"The_Softcover", "Invisible_Softcover", "Heart_Softcover", "An_Softcover", "Economics_Softcover", "Romance_Softcover"} |
0 | Fun With Problems | Softcover | {"Fun_Softcover", "With_Softcover", "Problems_Softcover"} |
다음 예제에서는 var1과 var2에 데카르트 변환기를 적용하는 방법을 보여줍니다.
cartesian(var1, var2)