配方格式參考 - Amazon Machine Learning

我們不再更新 Amazon Machine Learning 服務或接受新使用者。本文件適用於現有使用者,但我們不再對其進行更新。如需詳細資訊,請參閱什麼是 Amazon Machine Learning

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

配方格式參考

Amazon ML 配方包含在機器學習過程期間轉換資料的指示。配方是使用 JSON 類似的語法所定義,但有一般 JSON 限制以外的其他限制。配方具有下列各區段,必須以這裡顯示的順序出現:

  • Groups (群組) 可將多個變數分組,以簡化套用轉換。例如,您可以建立一組所有必須處理網頁任意文字部分 (標題、內文) 的變數,然後一次執行所有這些部分的轉換。

  • Assignments (指派) 能夠建立可重複用於處理的中繼具名變數。

  • Outputs (輸出) 定義哪些變數將用於學習過程,以及套用至該等變數的轉換 (若有)。

群組

您可以定義一組變數,統一轉換群組內的所有變數,或使用這些變數進行機器學習,而不進行轉換。Amazon ML 預設會為您建立下列羣組:

ALL_TEXT、ALL_NUMERIC、ALL_CATEGORICAL、ALL_BINARY – 根據資料來源結構描述中所定義的變數而形成的類型特定群組。

注意

您無法使用 ALL_INPUTS 建立群組。

這些變數不需要定義,即可用於配方的 outputs 區段。您也可以新增或扣除現有群組的變數,或直接新增或扣除變數集合的變數,來建立自訂群組。在下列範例中,我們示範所有這三種方法,以及群組指派語法:

"groups": { "Custom_Group": "group(var1, var2)", "All_Categorical_plus_one_other": "group(ALL_CATEGORICAL, var2)" }

群組名稱的開頭必須是字母字元,而且長度可以介於 1 到 64 個字元。如果群組名稱的開頭不是字母字元或包含特殊字元 (, ' " \t \r \n ( ) \),則必須括住名稱,才能包含在配方中。

Assignments (指派)

為求便利性和可讀性,您可以將一或多個轉換指派給中繼變數。例如,如果您有一個名為 email_subject 的文字變數,並且對其套用小寫轉換,則可以將產生的變數命名為 email_subject_lowercase,以輕鬆在配方中的其他位置追蹤到它。指派也可以進行鏈結,讓您依指定的順序套用多次轉換。下列範例使用配方語法來示範單一和鏈結指派:

"assignments": { "email_subject_lowercase": "lowercase(email_subject)", "email_subject_lowercase_ngram":"ngram(lowercase(email_subject), 2)" }

中繼變數名稱的開頭必須是字母字元,而且長度可以介於 1 到 64 個字元。如果名稱的開頭不是字母字元或包含特殊字元 (, ' " \t \r \n ( ) \),則必須括住名稱,才能包含在配方中。

輸出

outputs 區段控制將用於學習過程的輸入變數,以及其所套用的轉換。空或不存在的 outputs 區段都是錯誤,因為不會將資料傳遞給學習過程。

最簡單的 outputs 區段只包含預先定義的 ALL_INPUTS 群組,指示 Amazon ML 使用資料來源中定義的所有變數進行學習:

"outputs": [ "ALL_INPUTS" ]

outputs 區段也可以參照其他預先定義的群組,指示 Amazon ML 使用這些群組中的所有變數:

"outputs": [ "ALL_NUMERIC", "ALL_CATEGORICAL" ]

outputs 區段也可以參照自訂群組。在下列範例中,只會將前述範例之群組指派區段中所定義的一個自訂群組用於機器學習。所有其他變數都會予以捨棄:

"outputs": [ "All_Categorical_plus_one_other" ]

outputs 區段也可以參照指派區段中所定義的變數指派:

"outputs": [ "email_subject_lowercase" ]

此外,您可以直接在 outputs 區段中定義輸入變數或轉換:

"outputs": [ "var1", "lowercase(var2)" ]

輸出需要明確地指定預期可用於學習過程的所有變數和轉換變數。例如,假設您要在輸出中包含 Cartesian 產品 var1 和 var2。如果您想要同時包含原始變數 var1 和 var2,則需要在 outputs 區段中新增原始變數:

"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" ]

您可以在 outputs 區段內混合使用並比對所有這些方法。

注意

新增配方時,亞馬遜 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" ] }