Databricks Automl
Databricks AutoML可幫助您自動將機器學習應用於數據集。它為模型培訓準備數據集,然後執行並記錄一組試驗,創建,調整和評估多個模型。它顯示結果,並提供了每個試驗運行的源代碼的Python筆記本電腦,因此您可以查看,複製和修改代碼。AUTOML還計算數據集的摘要統計信息,並將此信息保存在筆記本中,您可以在以後進行檢查。
Automl會自動在群集的工人節點上分布高參數調諧試驗。
每個模型都是由開源組件構建的,可以輕鬆地進行編輯並集成到您的機器學習管道中。您可以將Databricks Automl用於回歸,分類和預測問題。它根據算法評估模型Scikit-Learn,,,,xgboost, 和Lightgbm軟件包。
您可以使用任何一種UI或者Python API。
汽車算法
Databricks Automl基於這些算法創建和評估模型:
分類模型
回歸模型
Scikit-Learn模型
預測
對大數據集進行采樣
筆記
抽樣不適用於預測問題。
盡管Automl在群集的工人節點上分發了超參數調諧試驗,但每個模型均在單個工人節點上進行訓練。
Automl會自動估計加載和訓練數據集所需的內存,並在必要時采樣數據集。
在Databricks運行時9.1 LTS ML通過Databricks運行時10.5 ml,采樣分數不取決於群集的節點類型或每個節點上的內存量。
在Databricks運行時11.0毫升及以上:
每個核心內存更多的工人節點的采樣分數增加。您可以通過選擇一個來增加樣本量內存優化實例類型。
您可以通過選擇更大的價值來進一步增加樣本量
spark.task.cpus
在群集的火花配置中。默認設置為1;最大值是工作節點上的CPU數。當您增加此值時,樣本量更大,但並行進行的試驗較少。例如,在具有4個內核和64GB總RAM的計算機中,默認spark.task.cpus = 1
每名工人進行4次試驗,每次試驗限製為16GB RAM。如果您設置spark.task.cpus = 4
,每個工人隻進行一次試驗,但該試驗可以使用64GB RAM。如果對數據集進行了采樣,則在概述在UI中標簽。
對於分類問題,AUTOML使用Pyspark樣本比
方法用於分層采樣以保留目標標簽分布。
對於回歸問題,Automl使用Pyspark樣本
方法。
語義類型檢測
筆記
語義類型檢測不適用於預測問題。
AUTOML不對具有的列執行語義類型檢測自定義插補方法指定的。
使用Databricks運行時9.1 LTS ML及以上,Automl試圖檢測列是否具有與表格架上的Spark或Pandas數據類型不同的語義類型。Automl將這些列視為檢測到的語義類型。這些檢測是最好的努力,在某些情況下可能會錯過語義類型的存在。您也可以手動設置列的語義類型或告訴automl不要將語義類型檢測應用於列使用注釋。
具體而言,Automl進行了這些調整:
表示日期或時間戳數據的字符串和整數列被視為時間戳類型。
表示數字數據的字符串列被視為數字類型。
使用Databricks運行時10.1毫升及以上,Automl還進行了這些調整:
包含分類ID的數字列被視為分類功能。
包含英語文本的字符串列被視為文本功能。
語義類型注釋
使用Databricks運行時10.1 ml及更高版本,您可以通過在列上放置語義類型注釋來手動控製分配的語義類型。手動注釋列的語義類型
作為
,使用以下語法:
metadata_dict=DF。模式[[“ ” 這是給予的。元數據metadata_dict[[“ spark.contentannotation.semantictype”這是給予的=“ ” DF=DF。用metadata((“ ” ,,,,metadata_dict)
可以是以下之一:
分類
:該列包含分類值(例如,應視為ID的數值值)。數字
:該列包含數字值(例如,可以解釋為數字的字符串值)。約會時間
:該列包含時間戳值(可以轉換為時間戳的字符串,數值或日期值)。文本
:字符串列包含英文文本。
要在列上禁用語義類型檢測,請使用特殊關鍵字注釋本國的
。
Shapley值(Shap)用於模型解釋性
由自動回歸和分類運行產生的筆記本包括用於計算的代碼沙普利值。Shapley值基於遊戲理論,並估算每個功能對模型預測的重要性。
汽車筆記本使用塑造包計算沙普利值。由於這些計算非常密集,因此默認情況下未執行計算。
計算和顯示Shapley值:
去特征重要性在Automl生成的試用筆記本中。
放
shap_enabled=真的
。重新運行筆記本。
Automl UI
AUTOML UI在數據集上訓練模型的過程。訪問UI:
選擇機器學習來自角色切換器在左側欄的頂部。
在側邊欄中,單擊創造>汽車實驗。
您還可以從實驗頁麵。
配置自動實驗頁麵顯示。在此頁麵上,您可以配置AutoML進程,指定數據集,問題類型,目標或標簽列以預測,用於評估和評分實驗運行以及停止條件。
在UI中設置分類或回歸問題
在裏麵計算字段,選擇一個運行Databricks運行時8.3毫升或更高的群集。
來自ML問題類型下拉菜單,選擇回歸或者分類。如果您試圖預測每個觀察值的連續數值,例如年收入,則選擇回歸。如果您試圖將每個觀察結果分配給一組離散的類之一,例如良好的信用風險或不良信用風險,請選擇分類。
在下麵數據集, 點擊瀏覽。出現一個對話框,列出了可用的數據庫和表。導航到您要使用的表格,然後單擊選擇。出現表模式。
您可以指定在培訓中包括哪些列,並選擇自定義插補方法。看修改數據集。
單擊預測目標場地。出現一個下拉列表,列出了模式中顯示的列。選擇您希望該模型預測的列。
這實驗名稱字段顯示默認名稱。要更改它,請在字段中鍵入新名稱。
您也可以指定其他配置選項。
在UI中設置預測問題
在裏麵計算字段,選擇一個運行Databricks運行時10.0 ml或更高的群集。
來自ML問題類型下拉菜單,選擇預測。
在下麵數據集, 點擊瀏覽。出現一個對話框,列出了可用的數據庫和表。導航到您要使用的表格,然後單擊選擇。出現表模式。
單擊預測目標場地。出現一個下拉列表,列出了模式中顯示的列。選擇您希望該模型預測的列。
單擊時間列場地。出現一個下拉列表顯示類型的數據集列
時間戳
或者日期
。選擇包含時間序列的時間段的列。對於多係列預測,請選擇從時間序列標識符落下。Automl將數據按這些列作為不同的時間序列分組,並獨立訓練每個係列的模型。如果將此字段留空,則AUTOML假設數據集包含一個時間序列。
在裏麵預測範圍和頻率字段,指定AutoML應計算預測值的未來時間段的數量。在左側框中,輸入整數時期數以預測。在右框中,選擇單元。
在Databricks運行時10.5毫升及以上,您可以保存預測結果。為此,請在輸出數據庫場地。點擊瀏覽並從對話框中選擇數據庫。Automl將預測結果寫入此數據庫中的表。
這實驗名稱字段顯示默認名稱。要更改它,請在字段中鍵入新名稱。
您也可以指定其他配置選項。
高級配置
打開高級配置(可選)訪問這些參數的部分。
評估指標是原始度量用於得分跑步。
在Databricks運行時10.3毫升及以上,您可以將培訓框架排除在考慮之外。默認情況下,Automl使用下列出的框架訓練模型汽車算法。
您可以編輯停止條件。默認停止條件是:
對於預測實驗,請在120分鍾後停止。
對於分類和回歸實驗,請在完成200次試驗後停止,以較早的方式發生。
在Databricks運行時10.1 ml及以上,對於分類和回歸實驗,AutoML結合了早期停止;如果驗證指標不再改善,它將停止培訓和調整模型。
在Databricks運行時10.1毫升及以上,您可以選擇一個時間列按時間順序分配培訓,驗證和測試的數據(僅適用於分類和回歸)。
在裏麵數據目錄字段,您可以輸入DBFS保存培訓數據集的位置。如果您將字段留為空白,則將培訓數據集保存為mlflow工件。
修改數據集
選擇數據集後,出現表格架構。對於分類和回歸問題,您可以指定在培訓中包括哪些列,並選擇自定義插補方法。
列選擇
在Databricks運行時10.3毫升及更高版本中,您可以指定AUTOML應用於培訓的列。要排除一列,請在包括柱子。取消選中的列等同於設置排除_columns
參數Automl Python API。
您不能將選擇的列作為預測目標或時間列拆分數據。
默認情況下,包括所有列。
缺失價值的歸因
在Databricks運行時10.4 LTS ML及更高版本中,您可以指定如何估算零值。在UI中,從下拉列表中選擇一種方法與表模式中的列。或者,使用素材
參數Automl Python API。
默認情況下,Automl選擇基於列類型和內容的插補方法。
筆記
如果您指定非默認估算方法,則AUTOML不執行語義類型檢測。
運行實驗並監視結果
要啟動汽車實驗,請單擊啟動Automl。實驗開始運行,並出現“自動訓練”頁麵。要刷新運行桌,請單擊。
在此頁麵上,您可以:
隨時停止實驗。
打開數據探索筆記本。
監視器運行。
導航到運行頁麵以進行任何運行。
使用Databricks運行時10.1 ml及更高版本,AutoML會顯示有關數據集潛在問題的警告,例如不支持的列類型或高基數列。
筆記
Databricks竭盡所能指出潛在的錯誤或問題。但是,這可能不全麵,並且可能不會捕獲您可能要搜索的問題或錯誤。請確保也進行自己的評論。
要查看數據集的任何警告,請單擊警告實驗完成後的訓練頁麵或實驗頁麵上的標簽。
實驗完成後,您可以:
注冊和部署具有MLFLOW的模型之一。
點擊查看最佳模型筆記本查看和編輯創建最佳模型的筆記本。
點擊查看數據探索筆記本打開數據探索筆記本。
在運行表中搜索,過濾並對運行進行排序。
請參閱任何運行的詳細信息:
要打開包含試用源代碼的筆記本,請單擊資源柱子。
要查看運行的結果,請單擊楷模列或開始時間柱子。運行頁顯示顯示有關試驗的信息(例如參數,指標和標簽)以及運行中創建的工件,包括模型。此頁麵還包括您可以使用該模型進行預測的代碼片段。
要稍後返回此自動實驗,請在表中的表中找到它實驗頁麵。每個汽車實驗的結果,包括數據探索和培訓筆記本,存儲在一個databricks_automl
文件夾在主文件夾運行實驗的用戶。
Automl Python API
創建筆記本並將其連接到運行Databricks運行時8.3 ml或更高的群集。
從現有數據源或將數據文件上傳到DBFS並將數據加載到筆記本上。
DF=火花。讀。格式((“鑲木”)。加載((“
” )要啟動AutoML運行,請將數據框傳遞到AUTOML。看到API規範有關詳細信息。
當自動運行開始時,控製台中會出現MLFlow實驗URL。使用此URL監視運行的進度。刷新MLFlow實驗以查看試驗完成後。
自動運行完成後:
使用輸出摘要中的鏈接導航到MLFlow實驗或產生最佳結果的筆記本。
使用指向數據探索筆記本的鏈接,以獲取傳遞給AutoML的數據的一些見解。您也可以將該筆記本附加到同一集群中,並重新運行筆記本以重現結果或進行其他數據分析。
使用從“自動電話”返回的摘要對象探索有關試驗的更多詳細信息或加載由給定試驗訓練的模型。看到API文檔有關詳細信息。
克隆試驗中的任何發電簿,並通過將筆記本附加到同一集群中以重現結果來重新運行筆記本。您還可以進行必要的編輯並重新運行它們以訓練其他型號並將其記錄到同一實驗中。
Python API規範
Python API提供了啟動分類和回歸自動運行的功能。每個功能呼叫都會訓練一組型號,並為每個型號生成一個試用筆記本。
分類
筆記
這max_trials
參數在Databricks運行時10.3 ml中棄用,並將在下一個主要數據磁帶運行時ML版本中刪除。利用Timeout_minutes
控製自動運行的持續時間。
數據映。汽車。分類((數據集:聯盟[[Pyspark。數據框架,,,,熊貓。數據框架],,*,,,,target_col:str,,,,data_dir:可選的[[str這是給予的=沒有任何,,,,排除_columns:可選的[[列表[[str]]]]=沒有任何,,,,# 10.3毫升及以上 dubl_frameworks:可選的[[列表[[str]]]]=沒有任何,,,,# 10.3毫升及以上 實驗_dir:可選的[[str這是給予的=沒有任何,,,,# 10.4 LTS ML及以上 素材:可選的[[dict[[str,,,,聯盟[[str,,,,dict[[str,,,,任何]]]]]=沒有任何,,,,# 10.4 LTS ML及以上 max_trials:可選的[[int這是給予的=沒有任何,,,,#在 10.3 ml中棄用 primary_metric:str=“ F1”,,,,time_col:可選的[[str這是給予的=沒有任何,,,,Timeout_minutes:可選的[[int這是給予的=沒有任何,,,,)- >汽車
回歸
筆記
這max_trials
參數在Databricks運行時10.3 ml中棄用,並將在下一個主要數據磁帶運行時ML版本中刪除。利用Timeout_minutes
控製自動運行的持續時間。
數據映。汽車。回歸((數據集:聯盟[[Pyspark。數據框架,,,,熊貓。數據框架],,*,,,,target_col:str,,,,data_dir:可選的[[str這是給予的=沒有任何,,,,排除_columns:可選的[[列表[[str]]]]=沒有任何,,,,# 10.3毫升及以上 dubl_frameworks:可選的[[列表[[str]]]]=沒有任何,,,,# 10.3毫升及以上 實驗_dir:可選的[[str這是給予的=沒有任何,,,,# 10.4 LTS ML及以上 素材:可選的[[dict[[str,,,,聯盟[[str,,,,dict[[str,,,,任何]]]]]=沒有任何,,,,# 10.4 LTS ML及以上 max_trials:可選的[[int這是給予的=沒有任何,,,,#在 10.3 ml中棄用 primary_metric:str=“ R2”,,,,time_col:可選的[[str這是給予的=沒有任何,,,,Timeout_minutes:可選的[[int這是給予的=沒有任何,,,,)- >汽車
預測
數據映。汽車。預報((數據集:聯盟[[Pyspark。SQL。數據框架。數據框架,,,,熊貓。核。框架。數據框架,,,,Pyspark。熊貓。數據框架],,*,,,,target_col:str,,,,time_col:str,,,,data_dir:可選的[[str這是給予的=沒有任何,,,,dubl_frameworks:可選的[[列表[[str]]]]=沒有任何,,,,實驗_dir:可選的[[str這是給予的=沒有任何,,,,頻率:str=“ D”,,,,地平線:int=1,,,,Identity_col:可選的[[聯盟[[str,,,,列表[[str]]]]=沒有任何,,,,output_database:可選的[[str這是給予的=沒有任何,,,,# 10.5毫升及以上 primary_metric:str=“ smape”,,,,Timeout_minutes:可選的[[int這是給予的=沒有任何,,,,)- >汽車
參數
分類和回歸
字段名稱 |
類型 |
描述 |
---|---|---|
數據集 |
pyspark.dataframe pandas.dataframe |
輸入數據框架,其中包含培訓功能和目標。 |
target_col |
str |
目標標簽的列名。 |
data_dir |
格式的str |
(可選)DBFS路徑用於存儲培訓數據集。驅動程序和工人節點都可以看到這條路徑。如果空,則AUTOML將培訓數據集保存為MLFLOW工件。 |
排除_columns |
列表[str] |
(可選)在汽車計算過程中要忽略的列列表。 默認: [] |
排除_框架 |
列表[str] |
(可選)AutoML不應考慮其開發模型的算法框架列表。可能的值:空列表,或一個或多個“ Sklearn”,“ LightGBM”,“ XGBOOST”。 默認值:[](考慮所有框架) |
實驗_dir |
str |
(可選)工作空間中目錄的路徑,以保存生成的筆記本和實驗。 默認: |
素材 |
dict [str,Union [str,dict [str,any]]] |
(可選)每個鍵是列名稱的字典,每個值是描述插補策略的字符串或字典。如果將其指定為字符串,則該值必須是“均值”,“中位數”或“ most_frequent”之一。要將已知值歸為已知值,將值指定為字典{“策略”:“常數”,值: 如果沒有為列提供歸檔策略,則AUTOML選擇默認策略。 默認: {} |
max_trials |
int |
(可選)最大進行試驗數。 該參數在Databricks運行時10.3 ml中棄用,並將在下一個主要數據磁帶運行時ML版本中刪除。 默認值:20 如果timeout_minutes =無,則AUTOML運行最大試驗次數。 |
primary_metric |
str |
公製用於評估和等級模型性能。 支持回歸的指標:“ R2”(默認),“ MAE”,“ RMSE”,“ MSE” 分類的支持指標:“ F1”(默認),“ log_loss”,“ Precision”,“準確性”,“ ROC_AUC” |
time_col |
str |
可在Databricks運行時10.1毫升及以上。 (可選)一個時間列的列名。 如果提供,AutoML試圖將數據集分為培訓,驗證和測試集,則將最早的點作為訓練數據和最新點作為測試集。 接受的列類型是時間戳和整數。使用Databricks運行時10.2 ml及以上,還支持字符串列。如果列類型是字符串,則使用語義檢測試圖將其轉換為時間戳。如果轉換失敗,則AUTOML運行失敗。 |
Timeout_minutes |
int |
(可選)等待汽車試驗完成的最大時間。較長的超時使Automl可以運行更多試驗並以更好的精度識別模型。 默認值:無(無時間限製) 最小值:5分鍾 如果超時時間太短,以至於允許至少一項試驗完成,則報告錯誤。 |
預測
字段名稱 |
類型 |
描述 |
---|---|---|
數據集 |
pyspark.dataframe pandas.dataframe |
輸入數據框架,其中包含培訓功能和目標。 |
target_col |
str |
目標標簽的列名。 |
time_col |
str |
預測時間列的名稱。 |
頻率 |
str |
預測時間序列的頻率。這是期望發生事件的時期。默認設置為“ D”或每日數據。如果您的數據具有不同的頻率,請確保更改設置。 可能的值: “ W”(周) “ D” /“ Days” /“ Day” “小時” /“小時” /“ HR” /“ H” /“ H” “ M” /“ MINUSE” /“ MIN” /“ MINES” /“ T” “ S” /“秒” /“ SEC” /“第二” 默認:“ D” |
地平線 |
int |
應返回預測的未來期間數量。單位是時間序列頻率。默認值:1 |
data_dir |
格式的str |
(可選)DBFS路徑用於存儲培訓數據集。驅動程序和工人節點都可以看到這條路徑。如果空,則AUTOML將培訓數據集保存為MLFLOW工件。 |
排除_框架 |
列表[str] |
(可選)AutoML不應考慮其開發模型的算法框架列表。可能的值:空列表,或一個或多個“先知”,“ Arima”。默認值:[](考慮所有框架) |
實驗_dir |
str |
(可選)工作空間中目錄的路徑,以保存生成的筆記本和實驗。 默認: |
Identity_col |
聯盟[str,列表] |
(可選)列,以識別多係列預測的時間序列。這些列組成的Automl組和用於預測的時間列。 |
output_database |
str |
(可選)如果提供,AUTOML將最佳模型的預測保存到指定數據庫中的新表。 默認值:預測未保存。 |
primary_metric |
str |
公製用於評估和等級模型性能。支持指標:“ smape”(默認)“ MSE”,“ RMSE”,“ MAE”或“ MDAPE”。 |
Timeout_minutes |
int |
(可選)等待汽車試驗完成的最大時間。較長的超時使Automl可以運行更多試驗並以更好的精度識別模型。 默認值:無(無時間限製) 最小值:5分鍾 如果超時時間太短,以至於允許至少一項試驗完成,則報告錯誤。 |
返回
汽車
摘要的對象,用於描述每個試驗的指標,參數和其他詳細信息的對象。您還使用此對象來加載由特定試驗訓練的模型。
財產 |
類型 |
描述 |
---|---|---|
實驗 |
MLFLOW.ENTITITITY.SPERIMENT |
用於記錄試驗的MLFlow實驗。 |
試驗 |
列表[airlinfo] |
包含有關運行所有試驗的信息的列表。 |
best_trial |
試驗 |
有關試驗的信息,導致主度量的加權得分最佳。 |
metric_distribution |
str |
在所有試驗中,主要度量標準的加權分數分布。 |
output_table_name |
str |
僅在提供output_database時才與預測一起使用。output_database中表格的名稱包含模型的預測。 |
試驗
每個單獨試驗的摘要對象。
財產 |
類型 |
描述 |
---|---|---|
Notebook_path |
str |
該試驗在工作區中生成的筆記本的路徑。 |
Notebook_url |
str |
該試驗生成的筆記本的URL。 |
mlflow_run_id |
str |
MLFLOW運行ID與此試驗相關聯。 |
指標 |
dict [str,float] |
該試驗以MLFlow記錄的指標。 |
參數 |
dict [str,str] |
用於該試驗的MLFlow記錄的參數。 |
model_path |
str |
在此試驗中訓練的模型的MLFlow偽影URL。 |
model_description |
str |
該模型的簡短描述和用於訓練此模型的超參數。 |
期間 |
str |
幾分鍾內的訓練時間。 |
預處理器 |
str |
預處理器的描述在訓練模型之前運行。 |
evaluation_metric_score |
漂浮 |
主要度量的分數,評估驗證數據集。 |
方法 |
描述 |
---|---|
load_model() |
加載該試驗中生成的模型,記錄為MLFlow偽像。 |
Databricks-Automl-luntime
包裹
使用Databricks運行時9.1 LTS ML及以上,Automl取決於Databricks-Automl-luntime
包含在AutoML之外有用的組件的軟件包,還有助於簡化由Automl培訓生成的筆記本。Databricks-Automl-luntime
可用PYPI。
限製
僅支持以下功能類型:
數字(
副本
,,,,shorttype
,,,,Integertype
,,,,longtype
,,,,floatType
, 和雙型
)布爾
字符串(分類或英語文本)
時間戳(
timestamptepe
,,,,數據類型
)arrayType [numeric](Databricks運行時10.4 LTS ML及以上)
不支持上麵未列出的功能類型。例如,不支持圖像。
不支持具有多個具有相同名稱的數據集。
使用Databricks運行時9.0毫升及以下,AUTOML培訓使用單個節點上的完整培訓數據集。培訓數據集必須適合單個工人節點的內存。如果您遇到了內存的問題,請嚐試使用具有更多內存的工人節點。看創建一個集群。
或者,如果可能的話,請使用數據鏈釘運行時9.1 LTS ML或更高版本,如果數據集太大而無法適合單個工人節點的內存,則自動采樣您的數據集。
要使用Auto-Arima,時間序列必須具有正常頻率(即,在整個時間序列中任意兩個點之間的間隔都必須相同)。頻率必須匹配API調用或AUTOML UI中指定的頻率單元。Automl通過以前的值填寫這些值來處理丟失的時間步驟。