AutoML: Prognoses verbeteren met covariaten (externe regressors)
In dit artikel wordt beschreven hoe u covarianten, ook wel externe regressors genoemd, gebruikt om AutoML-voorspellingsmodellen te verbeteren.
Covariaties zijn extra variabelen buiten de doeltijdreeks die het voorspellen van modellen kunnen verbeteren. Als u bijvoorbeeld de bezettingspercentages van het hotel voorspelt, kunt u weten of het weekend het gedrag van klanten kan voorspellen.
In dit voorbeeld gaat u als volgt te werk:
- Maak een gerandomiseerde tijdreeksgegevensset.
- Basiswerk voor functie-engineering uitvoeren.
- Sla de gegevensset op als een "
FeatureStore
table". - Gebruik de
FeatureStore
functie als covariaten in een AutoML-prognoseexperiment.
De gegevens maken
In dit voorbeeld worden willekeurig gegenereerde tijdreeksgegevens gebruikt voor hotelbezettingspercentages in januari 2024. Gebruik vervolgens AutoML om de occupancy_rate
eerste dag van februari 2024 te voorspellen.
Voer de volgende code uit om de voorbeeldgegevens te generate.
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)
Functie-engineering
Gebruik de voorbeeldgegevensset om een functie te maken die wordt aangeroepen is_weekend
door een binaire classificatie van of een date
weekend wel of niet is.
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)
Het functiearchief maken
Als u covariaten wilt gebruiken in AutoML, moet u een Feature Store gebruiken om een of meer covariante kenmerken tables met de primaire trainingsgegevens in AutoML te join.
Sla het gegevensframe hotel_weather_feature_df
op als een functiearchief.
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'
)
Notitie
In dit voorbeeld wordt de Python-FeatureEngineeringClient
gebruikt om tableste maken en te schrijven. U kunt echter ook SQL of DeltaLiveTables gebruiken om tableste schrijven en te maken. Zie Werken met functie tables in Unity Catalog voor meer opties.
Het AutoML-experiment configureren
Gebruik de feature_store_lookups
parameter om de functieopslag door te geven aan AutoML.
feature_store_lookups
bevat een woordenlijst met twee velden: table_name
en 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]
Notitie
feature_store_lookups
kan meerdere functies table zoekacties bevatten.
Het AutoML-experiment uitvoeren
Gebruik de volgende code om de features_lookups
api-aanroep van een AutoML-experiment door te geven.
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)