แชร์ผ่าน


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 ของการทดลอง