建立 Amazon ML 的資料結構描述 - Amazon Machine Learning

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

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

建立 Amazon ML 的資料結構描述

「結構描述」包含輸入資料中的所有屬性和其對應資料類型。它可讓 Amazon ML 了解資料來源中的資料。Amazon ML 使用結構描述中的資訊來讀取和解釋輸入資料、計算統計資料、套用正確的屬性轉換,以及微調其學習演算法。如果您未提供結構描述,則 Amazon ML 會從資料推斷出結構描述。

範例結構描述

為了讓 Amazon ML 正確讀取輸入資料並產生準確預測,每個屬性都必須獲指派正確的資料類型。讓我們演練範例以查看如何將資料類型指派給屬性,以及如何在結構描述中包含屬性和資料類型。我們將範例稱為 "Customer Campaign" (客戶行銷活動),因為我們想要預測哪些客戶將會回應我們的電子郵件行銷活動。我們的輸入檔是一個含 9 個資料行的 .csv 檔案:

1,3,web developer,basic.4y,no,no,1,261,0 2,1,car repair,high.school,no,no,22,149,0 3,1,car mechanic,high.school,yes,no,65,226,1 4,2,software developer,basic.6y,no,no,1,151,0

此資料的這個結構描述:

{     "version": "1.0",     "rowId": "customerId",     "targetAttributeName": "willRespondToCampaign",     "dataFormat": "CSV",     "dataFileContainsHeader": false,     "attributes": [         {             "attributeName": "customerId",             "attributeType": "CATEGORICAL"         },         {             "attributeName": "jobId",             "attributeType": "CATEGORICAL"         }, { "attributeName": "jobDescription", "attributeType": "TEXT" },         {             "attributeName": "education",             "attributeType": "CATEGORICAL"         },         {             "attributeName": "housing",             "attributeType": "CATEGORICAL"         },         {             "attributeName": "loan",             "attributeType": "CATEGORICAL"         },         {             "attributeName": "campaign",             "attributeType": "NUMERIC"         },         {             "attributeName": "duration",             "attributeType": "NUMERIC"         }, { "attributeName": "willRespondToCampaign", "attributeType": "BINARY" } ] }

在這個範例的結構描述檔案中,rowId 的值為 customerId

"rowId": "customerId",

willRespondToCampaign 屬性會定義為目標屬性:

"targetAttributeName": "willRespondToCampaign ",

customerId 屬性和 CATEGORICAL 資料類型是與第一個資料行建立關聯、jobId 屬性和 CATEGORICAL 資料類型是與第二個資料行建立關聯、jobDescription 屬性和 TEXT 資料類型是與第三個資料行建立關聯、education 屬性和 CATEGORICAL 資料類型是與第四個資料行建立關聯,以此類推。第 9 個資料行是與具有 willRespondToCampaign 資料類型的 BINARY 屬性建立關聯,而且此屬性也定義為目標屬性。

使用 targetAttributeName 欄位

targetAttributeName 值是您想要預測的屬性名稱。建立或評估模型時,您必須指派 targetAttributeName

訓練或評估 ML 模型時,targetAttributeName會識別輸入資料中屬性的名稱,其中包含目標屬性的「正確」答案。Amazon ML 使用包含正確答案的目標來探索模式以及產生 ML 模型。

當您要評估模型時,Amazon ML 會使用目標來檢查預測的準確性。建立和評估 ML 模型之後,即可搭配使用資料與未指派的 targetAttributeName,以使用 ML 模型來產生預測。

建立資料來源時,您可以在 Amazon ML 主控台或結構描述檔案中定義目標屬性。如果您建立自己的結構描述檔案,請使用下列語法來定義目標屬性:

"targetAttributeName": "exampleAttributeTarget",

在這個範例中,exampleAttributeTarget 是輸入檔中為目標屬性的屬性名稱。

使用 rowID 欄位

row ID 是與輸入資料中屬性建立關聯的選用旗標。如果指定,標示為 row ID 的屬性會包含在預測輸出中。此屬性可讓您更輕鬆地將哪個預測與哪個觀察建立關聯。不錯的 row ID 範例是客戶識別符或類似的唯一屬性。

注意

資料列識別符僅供您參考。培訓 ML 模型時,Amazon ML 不會使用它。選取屬性作為資料列識別符,不要將它用於培訓 ML 模型。

請定義row ID或結構描述檔案中的屬性。如果您要建立自己的結構描述檔案,請使用下列語法來定義 row ID

"rowId": "exampleRow",

在前述範例中,exampleRow 是輸入檔中定義為資料列識別符的屬性名稱。

產生批次預測時,您可能會收到下列輸出:

tag,bestAnswer,score 55,0,0.46317 102,1,0.89625

在這個範例中,RowID 代表 customerId 屬性。例如,customerId 55 預期會回應低可信度 (0.46317) 的電子郵件行銷活動,而 customerId 102 預期會回應高可信度 (0.89625) 的電子郵件行銷活動。

使用 AttributeType 欄位

在 Amazon ML 中,屬性有四種資料類型:

二進位

針對只有兩種可能狀態 (例如 BINARYyes) 的屬性,選擇 no

例如,追蹤人員是否為新客戶的 isNew 屬性會有 true 值指出個人是新客戶,而 false 值指出其非新客戶。

有效負值是 0nnoffalse

有效正值是 1yyesttrue

Amazon ML 會忽略二元輸入的大小寫,並去除圍繞的空格。例如," FaLSe " 是有效的二元值。您可以混用相同資料來源中使用的二元值,例如使用trueno,和1。僅 Amazon ML 輸出01中的屬性。

分類

針對採用有限數目之唯一字串值的屬性,選擇 CATEGORICAL。例如,使用者識別符、月分和郵遞區號是分類值。分類屬性視為單一字串,而且不再進一步進行字符化。

數值

針對採用數量作為值的屬性,選擇 NUMERIC

例如,溫度、重量和點擊速率是數值。

並非所有保留數字的屬性都是數值。分類屬性 (例如該月天數和識別符) 通常呈現為數字。若要視為數值,某個數字必須相當於另一個數字。例如,客戶識別符 664727 不會告訴您有關客戶識別符 124552 的任何資訊,但重量 10 告訴您該屬性比重量 5 的屬性還要重。該月天數不是數值,因為某個月的第一天可能發生在另一個月的第二天之前或之後。

注意

當您使用 Amazon ML 建立結構描述時,它會將Numeric資料類型設定為使用數字的所有屬性。如果 Amazon ML 建立結構描述,請檢查不正確的指派,並將這些屬性設定為CATEGORICAL

Text (文字)

針對為文字字串的屬性,選擇 TEXT。讀取文字屬性時,Amazon ML 會將它們轉換為以空格分隔的字符。

例如,email subject 會成為 emailsubject,而 email-subject here 會成為 email-subjecthere

如果培訓結構描述中變數的資料類型不符合評估結構描述中該變數的資料類型,則 Amazon ML 會變更評估資料類型,使其符合培訓資料類型。例如,如果訓練數據架構為TEXT到變量age,但評估模式將數據類型分配為NUMERICage,則 Amazon ML 將評估數據中的年齡視為TEXT而不是變數NUMERIC

如需與每種資料類型建立關聯之統計資料的資訊,請參閱描述性統計資料

將結構描述提供給 Amazon ML

每個資料來源都需要結構描述。您可以選擇兩種方法中的其中一種,將結構描述提供給 Amazon ML:

  • 允許 Amazon ML 推斷輸入資料檔案中每個屬性的資料類型,並自動為您建立結構描述。

  • 上傳 Amazon Simple Storage Service (Amazon S3) 資料時,請提供結構描述檔案。

允許 Amazon ML 建立結構描述

當您使用 Amazon ML 主控台建立資料來源時,Amazon ML 會使用根據變數值的簡單規則來建立結構描述。強烈建議您檢 Amazon ML 建立的結構描述,並在資料類型不正確時進行更正。

提供結構描述

結構描述檔案在建立之後需要可供 Amazon ML 使用。您有兩種選擇:

  1. 使用 Amazon ML 主控台提供結構描述。

    使用主控台建立資料來源,以及將 .schema 副檔名附加到輸入資料檔案的檔案名稱後面,來包含結構描述檔案。例如,若輸入資料的 Amazon Simple Storage Service (Amazon S3) URI 是 s3: //my-bucket-name/data/input.csv,則結構描述的 URI 會是 s3: //my-bucket-name/data/input.csv.schema。Amazon ML 會自動找出您提供的結構描述檔案,而不是嘗試從資料推斷結構描述。

    若要使用檔案的目錄作為 Amazon ML 的資料輸入,請將 .schema 擴展名附加至目錄路徑後面。例如,如果您的資料檔案位於位置 s3://examplebucket/path/to/data/,則結構描述的 URI 會是 s3://examplebucket/path/to/data/.schema。

  2. 使用 Amazon ML API 提供結構描述。

    如果您想要呼叫 Amazon ML API 建立資料來源,則可以將結構描述檔案上傳至 Amazon S3,然後透過DataSchemaLocationS3的屬性CreateDataSourceFromS3API。如需詳細資訊,請參閱 CreateDataSourceFromS3

    您可以直接在CreateDataSource*APIs,而不是先將其儲存至 Amazon S3。做法是將完整結構描述字串放在 DataSchemaCreateDataSourceFromS3CreateDataSourceFromRDS API 的 CreateDataSourceFromRedshift 屬性中。如需詳細資訊,請參閱《Amazon Machine Learning API 參考》。