neptune_ml 中的 features 欄位 - Amazon Neptune

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

neptune_ml 中的 features 欄位

屬性值和 RDF 常值有不同的格式和資料類型。若要在機器學習中實現良好的效能,必須將這些值轉換為稱為特徵的數值編碼。

Neptune ML 會執行特徵擷取和編碼,做為資料匯出和資料處理步驟的一部分,如 Neptune ML 中的特徵編碼 中所述。

對於屬性圖資料集,匯出程序會自動針對字串屬性和包含多個值的數值屬性推斷 auto 特徵。對於包含單一值的數值屬性,它會推斷 numerical 特徵。對於日期屬性,它會推斷 datetime 特徵。

如果您想要覆寫自動推斷的特徵規格,或為屬性新增儲存貯體數值、TF-IDF、FastText 或 SBERT 規格,您可以使用特徵欄位控制特徵編碼。

注意

您只能使用 features 欄位來控制屬性圖資料的特徵規格,而不能控制 RDF 資料的特徵規格。

對於自由格式的文字,Neptune ML 可以使用數個不同的模型,將字串屬性值中的記號序列轉換為固定大小的實數值向量:

  • text_fasttext – 使用 fastText 編碼。對於使用 fastText 所支援五種語言的一種且只有一種的功能,這是建議的編碼方式。

  • text_sbert – 使用句子 BERT (SBERT) 編碼模型。對於 text_fasttext 不支援的文字,這是建議的編碼方式。

  • text_word2vec – 使用 Google 最初發佈的 Word2VEC 演算法來編碼文字。Word2Vec 只支援英文。

  • text_tfidf – 使用詞頻-逆向文件頻率 (TF-IDF) 向量化程式來編碼文字。TF-IDF 編碼支援其他編碼不支援的統計特徵。

features 欄位包含節點屬性特徵的 JSON 陣列。陣列中的物件可以包含下列欄位:

features 中的 node 欄位

node 欄位指定特徵頂點的屬性圖標籤。例如:

"node": "Person"

如果一個頂點有多個標籤,請使用陣列來包含它們。例如:

"node": ["Admin", "Person"]

features 中的 edge 欄位

edge 欄位指定特徵邊緣的邊緣類型。邊緣類型由陣列組成,此陣列包含來源頂點的屬性圖標籤、邊緣的屬性圖標籤,以及目的地頂點的屬性圖標籤。指定邊緣特徵時,您必須提供全部三個值。例如:

"edge": ["User", "reviewed", "Movie"]

如果邊緣類型的來源或目標頂點有多個標籤,請使用另一個陣列來包含它們。例如:

"edge": [["Admin", "Person"]. "edited", "Post"]

features 中的 property 欄位

使用屬性參數來指定由 node 參數所識別之頂點的屬性。例如:

"property" : "age"

特徵的 type 欄位可能值

type 參數指定要定義的特徵類型。例如:

"type": "bucket_numerical"
type 參數的可能值
  • "auto" – 指定 Neptune ML 應該自動偵測屬性類型並套用適當的特徵編碼。auto 特徵也可以具有一個選用 separator 欄位。

    請參閱 Neptune ML 中的自動特徵編碼

  • "category" – 此特徵編碼將屬性值表示為數個類別的其中一個。換句話說,此特徵可以採取一個或多個離散值。category 特徵也可以具有一個選用 separator 欄位。

    請參閱 Neptune ML 中的類別特徵

  • "numerical" – 此特徵編碼會將數值屬性值表示為連續間隔中的數字,其中「大於」和「小於」都有意義。

    numerical 特徵也可以具有選用 normimputerseparator 欄位。

    請參閱 Neptune ML 中的數值特徵

  • "bucket_numerical" – 此特徵編碼會將數值屬性值分成一組儲存貯體或類別。

    例如,您可以將人們的年齡編碼為 4 個儲存貯體:小孩 (0-20)、年輕人 (20-40)、中年人 (40-60) 和長者 (60 歲以上)。

    bucket_numerical 特徵需要 rangebucket_cnt 欄位,也可以選擇性地包含 imputer 和/或 slide_window_size 欄位。

    請參閱 Neptune ML 中的儲存貯體數值特徵

  • "datetime" – 此特徵編碼會將 datetime 屬性值表示為下列類別特徵的陣列:年、月、工作日和小時。

    可以使用 datetime_parts 參數消除這四個類別中的一個或多個類別。

    請參閱 Neptune ML 中的日期時間特徵

  • "text_fasttext" – 此特徵編碼會使用 fastText 模型,將由句子或自由格式文字組成的屬性值轉換為數值向量。它支持五種語言,即英文 (en)、中文 (zh)、北印度文 (hi)、西班牙文 (es) 和法文 (fr)。對於這五種語言中任何一種的文字屬性值,text_fasttext 是建議的編碼方式。不過,它無法處理同一句子包含多種語言單字的情況。

    對於 fastText 所支援語言以外的其他語言,請使用 text_sbert 編碼。

    假設,如果您的屬性值文字字串長度超過 120 個記號,請使用 max_length 欄位來限制 "text_fasttext" 編碼的每個字串中的記號數目。

    請參閱 Neptune ML 中文字屬性值的 fastText 編碼

  • "text_sbert" – 此編碼會使用句子 BERT (SBERT) 模型,將文字屬性值轉換為數值向量。Neptune 支援兩種 SBERT 方法,即 text_sbert128,這是預設值,如果您僅指定 text_sberttext_sbert512 的話。它們之間的差異在於進行編碼的文字屬性中的記號數目上限。text_sbert128 編碼僅會編碼前 128 個記號,而 text_sbert512 最多可編碼 512 個記號。因此,使用 text_sbert512 可能比 text_sbert128 需要更多的處理時間。這兩種方法都比 text_fasttext 慢。

    text_sbert* 方法支援多種語言,而且可以編碼包含多種語言的句子。

    請參閱 Neptune ML 中文字特徵的句子 BERT (SBERT) 編碼

  • "text_word2vec" – 此編碼會使用 Word2VEC 演算法,將文字屬性值轉換為數值向量。它僅支援英文。

    請參閱 Neptune ML 中文字特徵的 Word2Vec 編碼

  • "text_tfidf" – 此編碼會使用詞頻-逆向文件頻率 (TF-IDF) 向量化程式,將文字屬性值轉換為數值向量。

    您可以使用 ngram_range 欄位、min_df 欄位和 max_features 欄位來定義 text_tfidf 特徵編碼的參數。

    請參閱 Neptune ML 中文字特徵的 TF-IDF 編碼

  • "none" – 使用 none 類型會導致不發生任何特徵編碼。反而會剖析並儲存原始屬性值。

    僅在您計劃執行自己的自訂特徵編碼,做為自訂模型訓練的一部分時,才會使用 none

norm 欄位

數值特徵需要此欄位。它會指定要在數值上使用的標準化方法:

"norm": "min-max"

支援以下標準化方法:

  • 「min-max」 – 透過從中減去最小值,然後將其除以最大值與最小值之間的差值來標準化每個值。

  • 「standard」 – 將每個值除以所有值的總和來標準化這些值。

  • 「none」 – 不要在編碼期間標準化數值。

請參閱 Neptune ML 中的數值特徵

language 欄位

語言欄位會指定文字屬性值中使用的語言。它的用法取決於文字編碼方法:

  • 對於 text_fasttext 編碼,此欄位是必要的,且必須指定下列其中一種語言:

    • en (英文)

    • zh (中文)

    • hi (北印度文)

    • es (西班牙文)

    • fr (法文)

  • 對於 text_sbert 編碼,不會使用此欄位,因為 SBERT 編碼是多語系的。

  • 對於 text_word2vec 編碼,此欄位是選用的,因為 text_word2vec 僅支援英文。如果存在,它必須指定英文模型的名稱:

    "language" : "en_core_web_lg"
  • 對於 text_tfidf 編碼,不會使用此欄位。

max_length 欄位

max_length 欄位是 text_fasttext 特徵的選用欄位,其中指定將編碼之輸入文字特徵中的記號數目上限。長度超過 max_length 的輸入文字會被截斷。例如,將 max_length 設定為 128,表示將忽略文字序列中第 128 之後的任何記號:

"max_length": 128

separator 欄位

此欄位可選擇性地與 categorynumericalauto 特徵搭配使用。它會指定一個字元,其可以用來將屬性值分成多個類別值或數值:

"separator": ";"

僅在屬性將多個分隔值儲存在單一字串 (例如 "Actor;Director""0.1;0.2") 中時,才會使用 separator 欄位。

請參閱類別功能數值特徵自動編碼

range 欄位

bucket_numerical 特徵需要此欄位。它會指定要分成儲存貯體的數值範圍,格式為 [lower-bound, upper-bound]

"range" : [20, 100]

如果屬性值小於下限,則會將其指派給第一個儲存貯體,或者如果它大於上限,則會將其指派給最後一個儲存貯體。

請參閱 Neptune ML 中的儲存貯體數值特徵

bucket_cnt 欄位

bucket_numerical 特徵需要此欄位。它會指定由 range 參數定義的數值範圍應分成的儲存貯體數目:

"bucket_cnt": 10

請參閱 Neptune ML 中的儲存貯體數值特徵

slide_window_size 欄位

此欄位可選擇性地搭配 bucket_numerical 特徵使用,以將值指派給多個儲存貯體:

"slide_window_size": 5

滑動視窗的運作方式是 Neptune ML 採取視窗大小 s,並將屬性的每個數值 v 轉換為從 v - s/2 v + s/2 的範圍。然後,此值會指定給範圍重疊的每個儲存貯體。

請參閱 Neptune ML 中的儲存貯體數值特徵

imputer 欄位

此欄位可選擇搭配 numericalbucket_numerical 特徵使用,以提供填入缺失值的插補技術:

"imputer": "mean"

支援的插補技術如下:

  • "mean"

  • "median"

  • "most-frequent"

如果您未包含 imputer 參數,資料預先處理會在遇到缺失值時停止並結束。

請參閱 Neptune ML 中的數值特徵Neptune ML 中的儲存貯體數值特徵

max_features 欄位

此欄位是 text_tfidf 特徵可選擇性地用來指定要編碼的詞數上限:

"max_features": 100

設定為 100 會導致 TF-IDF 向量化程式只編碼 100 個最常見的字詞。如果未包含 max_features,則預設值為 5,000。

請參閱 Neptune ML 中文字特徵的 TF-IDF 編碼

min_df 欄位

text_tfidf 特徵可選擇性地使用此欄位,來指定要編碼之字詞的文件頻率上限:

"min_df": 5

設定 5 表示字詞必須出現在至少 5 個不同的屬性值中,才能進行編碼。

如果您未包含 min_df 參數,預設值為 2

請參閱 Neptune ML 中文字特徵的 TF-IDF 編碼

ngram_range 欄位

text_tfidf 特徵可選擇性地使用此欄位,指定應將單字或記號的哪些大小序列視為要編碼的潛在個別字詞:

"ngram_range": [2, 4]

[2, 4] 指定 2、3 和 4 個單字的序列應被視為潛在的個別字詞。

如果您沒有明確設定 ngram_range,則預設值為 [1, 1],這表示只有單一單字或記號會被視為要編碼的字詞。

請參閱 Neptune ML 中文字特徵的 TF-IDF 編碼

datetime_parts 欄位

datetime 特徵可選擇性地使用此欄位,來指定要以分類方式編碼 datetime 值的哪些部分:

"datetime_parts": ["weekday", "hour"]

如果您未包含 datetime_parts,Neptune ML 預設會編碼 datetime 值的年、月、工作日和小時部分。值 ["weekday", "hour"] 表示只有 datetime 值的工作日和小時應在特徵中進行分類編碼。

如果其中一個部分在訓練集中沒有多個唯一值,則不會對其進行編碼。

請參閱Neptune ML 中的日期時間特徵