本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
neptune_ml 中的功能欄位
屬性值和RDF常值有不同的格式和資料類型。若要在機器學習中實現良好的效能,必須將這些值轉換為稱為特徵的數值編碼。
Neptune ML 會執行特徵擷取和編碼,做為資料匯出和資料處理步驟的一部分,如 Neptune ML 中的特徵編碼 中所述。
對於屬性圖資料集,匯出程序會自動針對字串屬性和包含多個值的數值屬性推斷 auto
特徵。對於包含單一值的數值屬性,它會推斷 numerical
特徵。對於日期屬性,它會推斷 datetime
特徵。
如果您想要覆寫自動推論功能規格,或為 屬性新增儲存貯體數值IDF FastText、TF- 或SBERT規格,您可以使用功能欄位控制功能編碼。
注意
您只能使用 features
欄位來控制屬性圖資料的功能規格,不能控制RDF資料。
對於自由格式的文字,Neptune ML 可以使用數個不同的模型,將字串屬性值中的記號序列轉換為固定大小的實數值向量:
text_fasttext – 使用fastText
編碼。這是建議編碼的功能,這些功能僅使用 fastText 支援五種語言之一和其中一種。 text_sbert – 使用 Sentence BERT
(SBERT) 編碼模型。對於 text_fasttext
不支援的文字,這是建議的編碼方式。text_word2vec – 使用 Google
最初發佈的 Word2VEC 演算法來編碼文字。Word2Vec 只支援英文。 text_tfidf – 使用術語頻率-反文件頻率
(TF-IDF) 引導程式來編碼文字。TF-IDF 編碼支援其他編碼不支援的統計特徵。
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
特徵也可以具有選用norm
、imputer
和separator
欄位。請參閱 Neptune ML 中的數值特徵。
-
"bucket_numerical"
– 此特徵編碼會將數值屬性值分成一組儲存貯體或類別。例如,您可以將人們的年齡編碼為 4 個儲存貯體:小孩 (0-20)、年輕人 (20-40)、中年人 (40-60) 和長者 (60 歲以上)。
bucket_numerical
特徵需要range
和bucket_cnt
欄位,也可以選擇性地包含imputer
和/或slide_window_size
欄位。 -
"datetime"
– 此特徵編碼會將 datetime 屬性值表示為下列類別特徵的陣列:年、月、工作日和小時。可以使用
datetime_parts
參數消除這四個類別中的一個或多個類別。請參閱 Neptune ML 中的日期時間特徵。
-
"text_fasttext"
– 此功能編碼會使用fastText模型將包含句子或自由格式文字的屬性值轉換為數值向量。它支持五種語言,即英文 ( en
)、中文 (zh
)、北印度文 (hi
)、西班牙文 (es
) 和法文 (fr
)。對於這五種語言中任何一種的文字屬性值,text_fasttext
是建議的編碼方式。不過,它無法處理同一句子包含多種語言單字的情況。對於 fastText 支援 以外的其他語言,請使用
text_sbert
編碼。假設,如果您的屬性值文字字串長度超過 120 個記號,請使用
max_length
欄位來限制"text_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
方法支援多種語言,而且可以編碼包含多種語言的句子。*
-
"text_word2vec"
– 此編碼會使用 Word2VEC演算法,將文字屬性值轉換為數值向量。它僅支援英文。 -
"text_tfidf"
– 此編碼使用術語頻率-反文件頻率(TF-IDF) 向量器,將文字屬性值轉換為數值向量。 您可以使用
ngram_range
欄位、min_df
欄位和max_features
欄位來定義text_tfidf
特徵編碼的參數。 -
"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
分隔符號欄位
此欄位可選擇性地與 category
、numerical
和 auto
特徵搭配使用。它會指定一個字元,其可以用來將屬性值分成多個類別值或數值:
"separator": ";"
僅在屬性將多個分隔值儲存在單一字串 (例如 "Actor;Director"
或 "0.1;0.2"
) 中時,才會使用 separator
欄位。
範圍欄位
bucket_numerical
特徵需要此欄位。它會指定要分成儲存貯體的數值範圍,格式為 [
:lower-bound
, upper-bound
]
"range" : [20, 100]
如果屬性值小於下限,則會將其指派給第一個儲存貯體,或者如果它大於上限,則會將其指派給最後一個儲存貯體。
bucket_cnt 欄位
bucket_numerical
特徵需要此欄位。它會指定由 range
參數定義的數值範圍應分成的儲存貯體數目:
"bucket_cnt": 10
slide_window_size 欄位
此欄位可選擇性地搭配 bucket_numerical
特徵使用,以將值指派給多個儲存貯體:
"slide_window_size": 5
滑動視窗的運作方式是 Neptune ML 採取視窗大小 s
,並將屬性的每個數值 v
轉換為從 v - s/2
到 v + s/2
的範圍。然後,此值會指定給範圍重疊的每個儲存貯體。
imputer 欄位
此欄位可選擇搭配 numerical
和 bucket_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 值的工作日和小時應在特徵中進行分類編碼。
如果其中一個部分在訓練集中沒有多個唯一值,則不會對其進行編碼。