回歸的數據準備
本文說明 AutoML 如何準備數據以進行回歸定型,並描述可設定的數據設定。 您可以在 AutoML UI 中的實驗設定期間調整這些選項。
如需使用 AutoML API 設定這些設定,請參閱 AutoML Python API 參照。
支援的資料特徵類型
僅支援下面所列的功能類型。 例如,不支援映像。
不支援以下特徵類型:
- 數值 (
ByteType
、ShortType
、IntegerType
、LongType
、FloatType
和DoubleType
) - 布林值
- 字串 (類別或英文文字)
- 時間戳記 (
TimestampType
、DateType
) - ArrayType[Numeric] (Databricks Runtime 10.4 LTS ML 和更新版本)
- DecimalType (Databricks Runtime 11.3 LTS ML 和更新版本)
插補遺漏的值
在 Databricks Runtime 10.4 LTS ML 和更新版本中,您可以指定如何插補 null 值。 在 UI 中,從資料表結構描述中 [插補] 資料行的下拉式清單中選取方法。 在 API 中,使用 imputers
參數。 如需詳細資訊,請參閱 AutoML Python API 參考。
根據預設,AutoML 會根據資料行類型和內容選取插補方法。
注意
如果您指定非預設插補方法,AutoML 不會執行語意類型偵測。
資料行選取
在 Databricks Runtime 10.3 ML 和更新版本中,您可以指定 AutoML 應使用哪些資料行進行訓練。 若要排除 UI 中的資料行,請在 [包括] 資料行中將其取消選取。 在 API 中,使用 exclude_cols
參數。 如需詳細資訊,請參閱 AutoML Python API 參考。
您無法卸除選取作為預測目標或作為分割資料的時間資料行的資料行。
依預設,會包含所有資料行。
將資料集分割成訓練、驗證和測試集
AutoML 會將資料分割成三個分割區,分別用於訓練、驗證和測試。 根據 ML 問題的類型,您有不同的分割資料選項。
使用下列方法將資料分割成定型、驗證和測試集:
(預設) 隨機分割:如果未指定資料分割策略,資料集會隨機分割成 60% 的訓練分割區、20% 的驗證分割區,以及 20% 的測試分割區。 針對分類,分層隨機分割可確保每個類別都已充分呈現在訓練、驗證和測試集中。
按時間順序的分割:在 Databricks Runtime 10.4 LTS ML 和更新版本中,您可以選取時間資料行來建立按時間順序的訓練、驗證和測試分割。 按時間順序的分割會使用最早的資料點進行訓練、次早資料點進行驗證,以及最新的資料點進行測試。 時間資料行可以是時間戳記、整數或字串資料行。
手動分割:在 Databricks Runtime 15.3 ML 和更新版本中,您可以使用 API 來設定手動分割。 指定分割資料行,並使用值 train
、validate
或 test
來識別您想要用於訓練、驗證和測試資料集的資料列。 分割資料行值不是 train
、test
或 validate
的任何資料列,則會被忽略,並引發對應的警示。
取樣大型資料集
雖然 AutoML 會將超參數微調試用分散到叢集的背景工作角色節點,但每個模型都會在單一背景工作角色節點上進行訓練。
AutoML 會自動估計載入和訓練資料集所需的記憶體,並視需要取樣資料集。
Databricks 運行時間版本 | 取樣行為 |
---|---|
9.1 LTS ML - 10.4 LTS ML | 取樣分數是常數, 不 取決於叢集的節點類型或每個節點的記憶體。 |
11.x ML | 背景工作節點的取樣分數 會增加 ,每個核心的記憶體較多。 若要增加樣本大小: - 使用 記憶體優化 實例類型。 - 在Spark組態中調整 spark.task.cpus 。 默認值為 1,最大值是背景工作節點上的 CPU 數目。 最大值是背景工作節點上的CPU數目。 當您增加此值時,樣本大小會增加,但平行執行的試用版則會減少。範例:在具有 4 個核心和 64GB RAM 的電腦上: - 使用 spark.task.cpus=1 時,每個背景工作角色都會執行四個試用版,每個都使用 16GB RAM。- 使用 時 spark.task.cpus=4 ,每個背景工作角色都會執行一個試用版,使用所有 64GB RAM。 |
11.3 LTS ML 和更新版本 | 如果 AutoML 取樣數據集,則取樣分數會顯示在 UI 的 [概觀] 索引標籤中。 |
12.2 LTS ML 和更新版本 | AutoML 可以藉由為每個定型工作配置更多 CPU 核心來處理較大的數據集。 選取具有更多總記憶體的實例,以增加樣本大小。 |
針對分類問題,AutoML 會使用 PySpark sampleBy
方法進行分層取樣,以保留目標標籤分佈。
針對迴歸問題,AutoML 會使用 PySpark sample
方法。
語意類型偵測
注意
- AutoML 不會針對已指定自訂插補方法的資料行執行語意類型偵測。
使用 Databricks Runtime 9.1 LTS ML 和更新版本時,AutoML 會嘗試偵測資料行的語意類型是否與資料表結構描述中的 Spark 或 Pandas 資料類型不同。 AutoML 會將這些資料行視為偵測到的語意類型。 這些偵測是為盡最大努力,有時可能會遺漏語意類型的存在。 您也可以手動設定資料行的語意類型,或告訴 AutoML 不要使用註釋對資料行套用語意類型偵測。
具體而言,AutoML 會進行下列調整:
- 表示日期或時間戳記資料的字串和整數資料行會被視為時間戳記類型。
- 表示數值資料的字串資料行會被視為數值類型。
使用 Databricks Runtime 10.1 ML 和更新版本時,AutoML 也會進行下列調整:
- 包含類別 ID 的數值資料行會被視為類別特徵。
- 包含英文文字的字串資料行會被視為文字特徵。
語意類型註釋
使用 Databricks Runtime 10.1 ML 和更新版本時,您可以將語意類型註釋放置在資料行上,以手動控制指派的語意類型。 若要將資料行 <column-name>
的語意類型手動標註為 <semantic-type>
,請使用下列語法:
metadata_dict = df.schema["<column-name>"].metadata
metadata_dict["spark.contentAnnotation.semanticType"] = "<semantic-type>"
df = df.withMetadata("<column-name>", metadata_dict)
<semantic-type>
可以是下列其中一項:
categorical
:資料行包含類別值 (例如,應被視為 ID 的數值)。numeric
:資料行包含數值 (例如,可以剖析成數字的字串值)。datetime
:資料行包含時間戳記值 (可轉換成時間戳記的字串、數值或日期值)。text
:字串資料行包含英文文字。
若要停用資料行上的語意類型偵測,請使用特殊關鍵字註釋 native
。