neptune_ml 中的功能欄位 - Amazon Neptune

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

neptune_ml 中的功能欄位

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

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

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

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

注意

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

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

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

功能中的節點欄位

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

"node": "Person"

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

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

功能中的邊緣欄位

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

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

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

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

功能中的屬性欄位

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

"property" : "age"

功能類型欄位的可能值

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" – 此編碼會使用 Sentence BERT (SBERT) 模型將文字屬性值轉換為數值向量。Neptune 支援兩種SBERT方法,即 text_sbert128,如果您只指定 text_sbert、 和 ,則這是預設值text_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": "min-max"

支援以下標準化方法:

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

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

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

請參閱 Neptune ML 中的數值特徵

語言欄位

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

  • 對於 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

分隔符號欄位

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

"separator": ";"

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

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

範圍欄位

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 vectorizer 僅編碼 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 中的日期時間特徵