AutoML: Kovaryatlarla (dış regresörler) tahmin geliştirme

Bu makalede, AutoML tahmin modellerini geliştirmek için dış regresyonlar olarak da bilinen kovaryatların nasıl kullanılacağı gösterilmektedir.

Kovaryates, tahmin modellerini geliştirebilen hedef zaman serisi dışındaki ek değişkenlerdir. Örneğin, otel doluluk oranlarını tahmin ediyorsanız, hafta sonu olup olmadığını bilmek müşterinin davranışını tahmin etmenize yardımcı olabilir.

Bu örnekte, siz:

  1. Rastgele bir zaman serisi veri kümesi oluşturun.
  2. Temel özellik mühendisliği çalışmaları yapın.
  3. Veri kümesini tablo olarak FeatureStore depolayın.
  4. FeatureStore Bir AutoML tahmin denemesinde birlikte değişken olarak kullanın.

Verileri oluşturma

Bu örnekte, Ocak 2024'teki otel doluluk oranları için rastgele oluşturulan zaman serisi verileri kullanılır. Ardından AutoML'yi kullanarak Şubat 2024'ün ilk gününü tahmin occupancy_rate edin.

Örnek verileri oluşturmak için aşağıdaki kodu çalıştırın.

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)

Özellik mühendisliği

Örnek veri kümesini kullanarak, is_weekend adlı bir özelliği, bir ikili sınıflandırıcının date'nin hafta sonu olup olmadığını belirlemesi için özellik mühendisliği yaparak geliştirin.

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)

Özellik Deposu oluşturma

AutoML'de kovaryantları kullanmak için, AutoML'deki birincil eğitim verileriyle bir veya daha fazla kovaryant özellik tablosunu birleştirmek üzere bir Özellik Deposu kullanmanız gerekir.

Veri çerçevesini hotel_weather_feature_df Özellik Deposu olarak depolayın.

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'
)

Not

Bu örnek, tablo oluşturmak ve yazmak için Python'ı FeatureEngineeringClient kullanır. Ancak, tablo yazmak ve oluşturmak için SQL veya DeltaLiveTables da kullanabilirsiniz. Daha fazla seçenek için bkz. Unity Kataloğu'ndaki özellik tabloları .

AutoML denemesini yapılandırma

Özellik Deposu'nu AutoML'ye iletmek için feature_store_lookups parametresini kullanın. feature_store_lookups iki alanı olan bir sözlük içerir: table_name ve 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]

Not

feature_store_lookups birden çok özellik tablosu araması içerebilir.

AutoML denemesini çalıştırma

features_lookups öğesini bir AutoML deney API çağrısına geçirmek için aşağıdaki kodu kullanın.

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)

Ek kaynaklar