AutoML ใน Fabric (ตัวอย่าง)
AutoML (Automated Machine Learning) คือคอลเลกชันของวิธีการและเครื่องมือที่ทําให้การฝึกอบรมแบบจําลองการเรียนรู้ของเครื่องเป็นแบบอัตโนมัติและการเพิ่มประสิทธิภาพด้วยการมีส่วนร่วมของมนุษย์เพียงเล็กน้อย จุดมุ่งหมายของ AutoML คือเพื่อลดความซับซ้อนและเร่งความเร็วกระบวนการเลือกแบบจําลองการเรียนรู้ของเครื่องและ hyperparameters ที่ดีที่สุดสําหรับชุดข้อมูลที่กําหนดซึ่งมักจะต้องการทักษะและพลังการประมวลผลมาก
สำคัญ
คุณลักษณะนี้อยู่ในตัวอย่าง
ใน Fabric นักวิทยาศาสตร์ข้อมูลสามารถใช้ flaml.AutoML
เพื่อทําให้งานการเรียนรู้ของเครื่องเป็นอัตโนมัติ
AutoML สามารถช่วยผู้เชี่ยวชาญ ML และนักพัฒนาซอฟต์แวร์จากภาคที่แตกต่างกันเพื่อ:
- สร้างโซลูชัน ML ด้วยการเข้ารหัสที่น้อยที่สุด
- ลดเวลาและค่าใช้จ่าย
- ใช้แนวทางปฏิบัติที่ดีที่สุดสําหรับวิทยาศาสตร์ข้อมูล
- แก้ไขปัญหาอย่างรวดเร็วและมีประสิทธิภาพ
เวิร์กโฟลว์ AutoML
flaml.AutoML
เป็นคลาสสําหรับ AutoML ที่ยึดตามงาน มันสามารถใช้เป็นตัวประมาณการสไตล์ Scikit-learn กับวิธีการพอดีและทํานายตามปกติ
หากต้องการเริ่มการทดลองใช้ AutoML ผู้ใช้จะต้องให้ข้อมูลการฝึกและประเภทงานเท่านั้น ด้วยประสบการณ์ MLflow แบบรวมใน Fabric ผู้ใช้สามารถตรวจสอบการทํางานที่แตกต่างกันที่พยายามทดลองใช้เพื่อดูว่าเลือกแบบจําลองขั้นสุดท้ายอย่างไร
ข้อมูลการฝึก
ใน Fabric ผู้ใช้สามารถส่งผ่านชนิดอินพุตต่อไปนี้ไปยังฟังก์ชัน AutoML fit
:
Numpy Array: เมื่อข้อมูลป้อนเข้าถูกเก็บไว้ในอาร์เรย์ Numpy ข้อมูลจะถูกส่งผ่านไป
fit()
เป็น X_train และ y_trainดาต้าเฟรมของ Pandas: เมื่อข้อมูลป้อนเข้าถูกเก็บไว้ในกรอบข้อมูล Pandas ข้อมูลดังกล่าวจะถูกส่งผ่านไปยัง
fit()
X_train และ y_train หรือเป็นดาต้าเฟรมและป้ายชื่อPandas บน Dataframe ของ Spark: เมื่อข้อมูลป้อนเข้าถูกจัดเก็บเป็นกรอบข้อมูล Spark สามารถแปลงเป็น
Pandas
บนSpark
กรอบข้อมูลโดยใช้to_pandas_on_spark()
แล้วส่งผ่านไปยังfit()
เป็นกรอบข้อมูลและป้ายชื่อfrom flaml.automl.spark.utils import to_pandas_on_spark psdf = to_pandas_on_spark(sdf) automl.fit(dataframe=psdf, label='Bankrupt?', isUnbalance=True, **settings)
ปัญหาการเรียนรู้ของเครื่อง
ผู้ใช้สามารถระบุงานการเรียนรู้ของเครื่องโดยใช้ task
อาร์กิวเมนต์ได้ มีงานการเรียนรู้ของเครื่องที่ได้รับการสนับสนุนมากมาย ซึ่งประกอบด้วย:
- การจัดประเภท: เป้าหมายหลักของแบบจําลองการจัดประเภทคือการทํานายว่าข้อมูลใหม่อยู่ในหมวดหมู่ใดตามการเรียนรู้จากข้อมูลการทดสอบการใช้งาน ตัวอย่างการจัดประเภททั่วไปได้แก่ การตรวจหาการฉ้อโกง การรู้จําลายมือ และการตรวจหาวัตถุ
- การถดถอย: แบบจําลองการถดถอยทํานายค่าผลลัพธ์ที่เป็นตัวเลขตามตัวคาดการณ์แบบอิสระ ในการถดถอยวัตถุประสงค์คือการช่วยในการสร้างความสัมพันธ์ระหว่างตัวแปรการคาดการณ์อิสระเหล่านั้นโดยประมาณว่าตัวแปรหนึ่งส่งผลกระทบต่อตัวแปรอื่น ๆ อย่างไร ตัวอย่างเช่น ราคารถยนต์ที่ยึดตามคุณลักษณะเช่น การประหยัดน้ํามัน การจัดอันดับความปลอดภัย เป็นต้น
- Time Series Forecasting: ใช้เพื่อคาดการณ์ค่าในอนาคตตามจุดข้อมูลในอดีตที่เรียงลําดับตามเวลา ในชุดข้อมูลเวลา จะมีการรวบรวมและบันทึกข้อมูลในช่วงเวลาที่กําหนด เช่น รายวัน รายสัปดาห์ รายเดือน หรือรายปี วัตถุประสงค์ของการคาดการณ์ชุดข้อมูลเวลาคือเพื่อระบุรูปแบบ แนวโน้ม และฤดูกาลในข้อมูล จากนั้นใช้ข้อมูลนี้เพื่อทําการคาดการณ์เกี่ยวกับค่าในอนาคต
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับงานอื่นๆ ที่ได้รับการสนับสนุนใน FLAML คุณสามารถไปที่เอกสารประกอบของ งาน AutoML ใน FLAML
ข้อมูลป้อนเข้าเพิ่มเติม
มีข้อจํากัดและอินพุตต่างๆ เพื่อกําหนดค่าการทดลองใช้ AutoML ของคุณ
ข้อจำกัด
เมื่อสร้างการทดลองใช้ AutoML ผู้ใช้สามารถกําหนดค่าข้อจํากัดในกระบวนการ AutoML อาร์กิวเมนต์คอนสตรักเตอร์ของตัวประมาณการที่อาจเกิดขึ้น ชนิดของแบบจําลองที่พยายามใน AutoML และแม้แต่ข้อจํากัดบนเมตริกของการทดลองใช้ AutoML
ตัวอย่างเช่น โค้ดด้านล่างอนุญาตให้ผู้ใช้ระบุข้อจํากัดเมตริกในการทดลองใช้ AutoML
metric_constraints = [("train_loss", "<=", 0.1), ("val_loss", "<=", 0.1)]
automl.fit(X_train, y_train, max_iter=100, train_time_limit=1, metric_constraints=metric_constraints)
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการกําหนดค่าเหล่านี้ คุณสามารถไปที่เอกสารประกอบเกี่ยวกับ การกําหนดค่าใน FLAML
เมตริกการปรับให้เหมาะสม
ในระหว่างการฝึกฟังก์ชัน AutoML สร้างการทดลองใช้จํานวนมากซึ่งลองใช้อัลกอริทึมและพารามิเตอร์ที่แตกต่างกัน เครื่องมือ AutoML จะทําซ้ําผ่านอัลกอริทึม ML และ hyperparameters ในกระบวนการนี้ การทําซ้ําแต่ละครั้งจะสร้างแบบจําลองที่มีคะแนนการฝึก ยิ่งคะแนนสําหรับเมตริกที่คุณต้องการปรับให้เหมาะสมดียิ่งขึ้นแบบจําลองจะถูกพิจารณาให้ "พอดี" ข้อมูลของคุณ มีการระบุเมตริกการปรับให้เหมาะสมผ่าน metric
อาร์กิวเมนต์ ซึ่งอาจเป็นสตริงที่อ้างถึงเมตริกในตัวหรือฟังก์ชันที่ผู้ใช้กําหนดเอง
เมตริกการปรับให้เหมาะสมอัตโนมัติ
การปรับแต่งแบบขนาน
ในบางกรณี คุณอาจต้องการเร่งการทดลองใช้ AutoML ของคุณโดยใช้ Apache Spark เพื่อควบคู่ไปกับการฝึกของคุณ สําหรับคลัสเตอร์ Spark ตามค่าเริ่มต้น FLAML จะเปิดใช้หนึ่งรุ่นทดลองใช้ต่อหนึ่งตัวดําเนินการ คุณยังสามารถกําหนดจํานวนการทดลองใช้พร้อมกันโดยใช้ n_concurrent_trials
อาร์กิวเมนต์ได้
automl.fit(X_train, y_train, n_concurrent_trials=4, use_spark=True)
เมื่อต้องการเรียนรู้เพิ่มเติมเกี่ยวกับวิธีการขนานกับเส้นทาง AutoML ของคุณ คุณสามารถเยี่ยมชม เอกสาร FLAML สําหรับงาน Spark ขนาน
ติดตามด้วย MLflow
คุณยังสามารถใช้การรวม Fabric MLflow เพื่อจับภาพเมตริก พารามิเตอร์ และเมตริกของเส้นทางที่สํารวจ
import mlflow
mlflow.autolog()
with mlflow.start_run(nested=True):
automl.fit(dataframe=pandas_df, label='Bankrupt?', mlflow_exp_name = "automl_spark_demo")
# You can also provide a run_name pre-fix for the child runs
automl_experiment = flaml.AutoML()
automl_settings = {
"metric": "r2",
"task": "regression",
"use_spark": True,
"mlflow_exp_name": "test_doc",
"estimator_list": [
"lgbm",
"rf",
"xgboost",
"extra_tree",
"xgb_limitdepth",
], # catboost does not yet support mlflow autologging
}
with mlflow.start_run(run_name=f"automl_spark_trials"):
automl_experiment.fit(X_train=train_x, y_train=train_y, **automl_settings)
แบบจําลองที่สนับสนุน
AutoML ใน Fabric สนับสนุนแบบจําลองต่อไปนี้:
การจัดประเภท | ถด ถอย | การคาดการณ์แบบอนุกรมเวลา |
---|---|---|
(PySpark) ตัวจําแนกประเภท ไล่ระดับสี-ต้นไม้ (GBT) | (PySpark) เวลาการถดถอยของการเอาชีวิตรอดแบบเร่ง (AFT) | Arimax |
(PySpark) SVM เชิงเส้น | (PySpark) การถดถอยเชิงเส้นทั่วไป | AutoARIMA |
(PySpark) เนฟเบย์ส์ | (PySpark) การถดถอยต้นไม้ที่เพิ่มการไล่ระดับสี (GBT) | ค่าเฉลี่ย |
(Synapse) LightGBM | (PySpark) การถดถอยเชิงเส้น | CatBoost |
CatBoost | (Synapse) LightGBM | แผนผังการตัดสินใจ |
แผนผังการตัดสินใจ | CatBoost | ExponentialSmoothing |
ต้นไม้สุ่มมาก | แผนผังการตัดสินใจ | ต้นไม้สุ่มมาก |
การไล่ระดับสี | Elastic Net | ForecastTCN |
K Nearest Neighbors | ต้นไม้สุ่มมาก | การไล่ระดับสี |
GBM สีอ่อน | การไล่ระดับสี | ฮอลท์-ฤดูหนาว เอ็กซ์โพเนนเชียล สมูทติ้ง |
SVC เชิงเส้น | K Nearest Neighbors | K Nearest Neighbors |
การถดถอยโลจิสติกส์ | LARS Lasso | LARS Lasso |
การถดถอยโลจิสติกส์ที่มีการปรับให้เข้ากับ L1/L2 | GBM สีอ่อน | GBM สีอ่อน |
เนฟเบย์ส์ | การถดถอยโลจิสติกส์ที่มีการปรับให้เข้ากับ L1/L2 | ไร้เดียงสา |
ฟอเรสต์แบบสุ่ม | ฟอเรสต์แบบสุ่ม | วงโคจร |
ฟอเรสต์แบบสุ่มบน Spark | ฟอเรสต์แบบสุ่มบน Spark | ศาสดา |
ไล่ระดับสี Stochastic Descent (SGD) | ไล่ระดับสี Stochastic Descent (SGD) | ฟอเรสต์แบบสุ่ม |
การจัดประเภทเวกเตอร์สนับสนุน (SVC) | XGBoost | SARIMAX |
XGboost | XGBoost ที่มีความลึกจํากัด | SeasonalAverage |
XGBoost ที่มีความลึกจํากัด | SeasonalNaive | |
Temporal Fusion Transformer | ||
XGBoost | ||
XGBoost สําหรับ Time Series | ||
XGBoost ที่มีความลึกจํากัดสําหรับ Time Series | ||
ElasticNet |
แสดงภาพผลลัพธ์
โมดูล flaml.visualization
มีฟังก์ชันอรรถประโยชน์สําหรับการลงจุดกระบวนการปรับให้เหมาะสมโดยใช้ Plotly ผู้ใช้สามารถสํารวจผลลัพธ์การทดลอง AutoML แบบโต้ตอบโดยใช้ประโยชน์จาก Plotly เพื่อใช้ฟังก์ชันการลงจุดเหล่านี้ ให้ปรับให้เหมาะสม flaml.AutoML
หรือ flaml.tune.tune.ExperimentAnalysis
วัตถุของคุณเป็นข้อมูลป้อนเข้า
คุณสามารถใช้ฟังก์ชันต่อไปนี้ภายในสมุดบันทึกของคุณได้:
plot_optimization_history
: ประวัติการปรับให้เหมาะสมลงจุดของการทดลองใช้ทั้งหมดในการทดลองplot_feature_importance
: ความสําคัญในการลงจุดสําหรับแต่ละคุณลักษณะในชุดข้อมูลplot_parallel_coordinate
: ลงจุดความสัมพันธ์ของพารามิเตอร์หลายมิติในการทดสอบplot_contour
: ลงจุดความสัมพันธ์ของพารามิเตอร์เป็นแผนภูมิรูปร่างในการทดสอบplot_edf
: ลงจุดค่าวัตถุประสงค์ EDF (ฟังก์ชันการแจกแจงแบบ empirical) ของการทดสอบplot_timeline
: ลงจุดเส้นเวลาของการทดสอบplot_slice
: ลงจุดความสัมพันธ์ของพารามิเตอร์เป็นชิ้นพล็อตในการศึกษาplot_param_importance
: ลงจุดความสําคัญของ hyperparameter ของการทดลอง