Dela via


AutoML: Förbättra prognostisering med samvariater (externa regressorer)

Den här artikeln visar hur du använder samvariater, även kallade externa regressorer, för att förbättra AutoML-prognosmodeller.

Covariater är ytterligare variabler utanför måltidsserien som kan förbättra prognosmodellerna. Om du till exempel förutspår hotellbeläggningspriser kan det vara bra att veta om det är helgen som kan hjälpa dig att förutsäga kundernas beteende.

I det här exemplet:

  1. Skapa en slumpmässig tidsseriedatauppsättning.
  2. Utför grundläggande funktionstekniska arbeten.
  3. Lagra datamängden som en FeatureStore tabell.
  4. FeatureStore Använd som samvariat i ett AutoML-prognosexperiment.

Skapa data

I det här exemplet används slumpmässigt genererade tidsseriedata för hotellbeläggningspriser i januari 2024. Använd sedan AutoML för att förutsäga occupancy_rate för den första dagen i februari 2024.

Kör följande kod för att generera exempeldata.

df = spark.sql("""SELECT explode(sequence(to_date('2024-01-01'), to_date('2024-01-31'), interval 1 day)) as date, rand() as occupancy_rate FROM (SELECT 1 as id) tmp ORDER BY date""")
display(df)

Funktionsframställning

Använd exempeldatauppsättningen för att skapa en funktion som kallas is_weekend en binär klassificerare för huruvida en date är en helg eller inte.

from pyspark.sql.functions import dayofweek, when

def compute_hotel_weekend_features(df):
  ''' is_weekend feature computation code returns a DataFrame with 'date' as primary key'''
  return df.select("date").withColumn(
      "is_weekend",
      when(dayofweek("date").isin( 1, 2, 3, 4, 5), 0) # Weekday
      .when(dayofweek("date").isin(6, 7), 1) # Weekend
  )
hotel_weekend_feature_df = compute_hotel_weekend_features(df)

Skapa funktionsarkivet

Om du vill använda samvariat på AutoML måste du använda ett funktionslager för att ansluta en eller flera samvarierade funktionstabeller med de primära träningsdata i AutoML.

Lagra dataramen hotel_weather_feature_df som ett funktionslager.

from databricks.feature_engineering import FeatureEngineeringClient
fe = FeatureEngineeringClient()

hotel_weekend_feature_table = fe.create_table(
  name='ml.default.hotel_weekend_features', # change to desired location
  primary_keys=['date'],
  df=hotel_weekend_feature_df,
  description='Hotel is_weekend features table'
)

Kommentar

I det här exemplet används Python FeatureEngineeringClient för att skapa och skriva tabeller. Du kan dock också använda SQL eller DeltaLiveTables för att skriva och skapa tabeller. Mer information finns i Arbeta med funktionstabeller i Unity Catalog.

Konfigurera AutoML-experimentet

Använd parametern feature_store_lookups för att skicka funktionsarkivet till AutoML. feature_store_lookups innehåller en ordlista med två fält: table_name och lookup_key.

hotel_weekend_feature_lookup = {
  "table_name": "ml.default.hotel_weekend_features", # change to location set above
  "lookup_key": ["date"]
}
feature_lookups = [hotel_weekend_feature_lookup]

Kommentar

feature_store_lookups kan innehålla flera funktionstabellsökningar.

Kör AutoML-experimentet

Använd följande kod för att skicka features_lookups till ett AutoML-experiment-API-anrop.

from databricks import automl
summary = automl.forecast(dataset=df, target_col="occupancy_rate", time_col="date", frequency="d", horizon=1, timeout_minutes=30, identity_col=None, feature_store_lookups=feature_lookups)

Nästa steg