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:
- Skapa en slumpmässig tidsseriedatauppsättning.
- Utför grundläggande funktionstekniska arbeten.
- Lagra datamängden som en
FeatureStore
tabell. -
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)