Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Important
Bu özellik Genel Önizleme aşamasındadır. Çalışma alanı yöneticileri Bu özelliğe erişimi Önizlemeler sayfasından denetleyebilir. Bkz. Azure Databricks önizlemelerini yönetme.
Özellik Görünümleri, belirli bir noktaya doğru özellik hesaplaması ve çıkarım sırasında otomatik özellik araması ile modelleri eğitmenize olanak tanır. Özellik Görünümlerini tanımlama hakkında bilgi için bkz. Özellik Görünümleri.
Requirements
- Özellikler Özellik Görünümleri olarak oluşturulmalıdır. Bkz. Özellik Görünümleri.
API yöntemleri
create_training_set()
Özellik Görünümleri'ni oluşturduktan sonra, sonraki adım modeliniz için eğitim verileri oluşturmaktır. Bunu yapmak için etiketli bir veri kümesini create_training_set'a geçirin, bu da her özellik değerinin belirli bir zaman noktasında doğru hesaplanmasını otomatik olarak sağlar.
Örneğin:
FeatureEngineeringClient.create_training_set(
df: DataFrame, # DataFrame with training data
features: Optional[List[Feature]], # List of Feature objects
label: Union[str, List[str], None], # Label column name(s)
exclude_columns: Optional[List[str]] = None, # Optional: columns to exclude
) -> TrainingSet
Belirli bir anda dinamik olarak hesaplanan özellikleri özgün eğitim verileriyle birleştirmek için TrainingSet.load_df çağrı yapın.
df Argüman aşağıdaki gereksinimleri karşılamalıdır:
- Özellik tanımları tarafından başvuruda bulunılan tüm varlık sütunlarını içermelidir.
- Özellik tanımları tarafından referans alınan timeseries sütununu içermelidir.
- Herhangi bir
RequestSourceşemada bildirilen tüm sütunları içermelidir. Türler bildirilen şemaya göre doğrulanır. Uyuşmazlıklar bir hata oluşturur (örtük atama yoktur). - Etiket sütunlarını içermelidir.
- Varlık sütun adları, zaman aralıkları sütun adları ve istek özelliği sütun adları kümesi tüm kaynaklar arasında genel olarak benzersiz olmalıdır.
Anlık doğruluk: Bir tablo kaynağından alınan ve toplama işlemiyle desteklenen özellikler, model eğitimine gelecekte veri sızıntısını önlemek amacıyla, yalnızca her satırın zaman damgasından önce kullanılabilen kaynak veriler kullanılarak hesaplanır. Özellikler için RequestSource, değer etiketlenmiş DataFrame satırından doğrudan alınır.
log_model()
Özellik meta verisine sahip bir modeli model çıkarımı sırasında köken izleme ve otomatik özellik arama için kaydetmek amacıyla MLflow'u kullanın:
FeatureEngineeringClient.log_model(
model, # Trained model object
artifact_path: str, # Path to store model artifact
flavor: ModuleType, # MLflow flavor module (e.g., mlflow.sklearn)
training_set: TrainingSet, # TrainingSet used for training
registered_model_name: Optional[str], # Optional: register model in Unity Catalog
)
flavor parametresi, veya mlflow.sklearn gibi mlflow.xgboost modülünün kullanılacağını belirtir.
Eğitimde kullanılan özelliklerin kökenleri TrainingSet ile otomatik olarak izlenerek günlüğe kaydedilen modeller. Eğitim kümesi RequestSource özellikleri içerdiğinde, RequestSource ve sütunları MLflow model imzasına gerekli girişler olarak eklenir. Bu, sunum uç noktasının API şemasının çağıranların çıkarım zamanında sağlaması gereken alanları yansıtmasını sağlar. Ayrıntılar için bkz. Özellik tablolarıyla modelleri eğitme.
score_batch()
Otomatik özellik araması ile toplu çıkarım gerçekleştirin:
FeatureEngineeringClient.score_batch(
model_uri: str, # URI of logged model
df: DataFrame, # DataFrame with entity keys and timestamps
) -> DataFrame
score_batch , çıkarım için belirli bir noktaya doğru özellikleri otomatik olarak hesaplamak ve eğitimle tutarlılık sağlamak için modelle birlikte depolanan özellik meta verilerini kullanır. Ayrıntılar için bkz. Özellik tablolarıyla modelleri eğitme.
Örnek iş akışı
import mlflow
from databricks.feature_engineering import FeatureEngineeringClient
from sklearn.ensemble import RandomForestClassifier
fe = FeatureEngineeringClient()
# Assume features are registered in UC
# labeled_df should have columns "user_id", "transaction_time", and "is_fraud"
# 1. Create training set using Feature Views
training_set = fe.create_training_set(
df=labeled_df,
features=features,
label="is_fraud",
)
# 2. Load training data with computed features
training_df = training_set.load_df()
X = training_df.drop("is_fraud").toPandas()
y = training_df.select("is_fraud").toPandas().values.ravel()
# 3. Train model
model = RandomForestClassifier().fit(X, y)
# 4. Log model with feature metadata
with mlflow.start_run():
fe.log_model(
model=model,
artifact_path="fraud_model",
flavor=mlflow.sklearn,
training_set=training_set,
registered_model_name="main.ecommerce.fraud_model",
)
# 5. Batch scoring with automatic feature lookup
# inference_df must contain the same entity and timeseries columns
# used during training. Features are automatically computed.
predictions = fe.score_batch(
model_uri="models:/main.ecommerce.fraud_model/1",
df=inference_df,
)
predictions.display()
RequestSource özellikleriyle eğitim
Modeliniz, çıkarım zamanında sağlanan verileri (örneğin, bir API çağrısından işlem ayrıntıları) gerektirdiğinde, RequestSource özelliklerini tablo destekli özelliklerle birlikte kullanın. Eğitim sırasında, etiketli DataFrame'den RequestSource sütunlar ayıklanır.
from databricks.feature_engineering import FeatureEngineeringClient
from databricks.feature_engineering.entities import (
DeltaTableSource, Feature, FieldDefinition, RequestSource,
ScalarDataType, ColumnSelection,
)
fe = FeatureEngineeringClient()
# RequestSource provides transaction data at inference time
request_source = RequestSource(
schema=[
FieldDefinition(name="transaction_amount", data_type=ScalarDataType.DOUBLE),
FieldDefinition(name="vendor_id", data_type=ScalarDataType.STRING),
FieldDefinition(name="transaction_id", data_type=ScalarDataType.STRING),
FieldDefinition(name="transaction_time", data_type=ScalarDataType.DATE),
]
)
delta_source = DeltaTableSource(
catalog_name="catalog",
schema_name="schema",
table_name="vendor_data",
)
# A column selection feature from the request source (pass-through)
latest_transaction_amount = Feature(
source=request_source,
function=ColumnSelection("transaction_amount"),
name="latest_transaction_amount",
)
# A lookup feature from a delta table
vendor_category = Feature(
source=delta_source,
function=ColumnSelection("vendor_category"),
entity=["vendor_id"],
timeseries_column="transaction_time",
name="vendor_category",
)
# labels_df must contain: transaction_id, transaction_time, vendor_id,
# transaction_amount, and the label column.
ts = fe.create_training_set(
df=labels_df,
features=[latest_transaction_amount, vendor_category],
label="is_fraud",
exclude_columns=["card_id"],
)
import mlflow
from sklearn.ensemble import RandomForestClassifier
with mlflow.start_run():
training_df = ts.load_df().toPandas()
X = training_df.drop(columns=["is_fraud"])
y = training_df["is_fraud"]
model = RandomForestClassifier().fit(X, y)
# log_model() adds RequestSource columns to the MLflow model signature
fe.log_model(
model=model,
artifact_path="fraud_model",
flavor=mlflow.sklearn,
training_set=ts,
registered_model_name="catalog.schema.fraud_model",
)
Akış özellikleriyle eğitim
Stream tanımladığınızda Databricks, akış verilerini bir Delta tablosuna yazan bir alma işlem hattını yönetir.
create_training_set bu veri alım tablosundan okur ve etiketli DataFrame’inizle zamandaki belirli bir noktaya göre birleştirmeler gerçekleştirir; tıpkı bir DeltaTableSource içindeki toplu özellikler gibi. Veri alma yapılandırması, geri doldurma ve tekilleştirme hakkında ayrıntılı bilgi için bk. Veri alma ve geri doldurma.
Example
from databricks.feature_engineering import FeatureEngineeringClient
from databricks.feature_engineering.entities import (
StreamSource,
Feature,
AggregationFunction,
Sum,
RollingWindow,
)
from datetime import timedelta
fe = FeatureEngineeringClient()
# Define a streaming feature
stream_source = StreamSource(full_name="my_catalog.my_schema.my_stream")
streaming_feature = Feature(
name="user_purchase_sum",
source=stream_source,
entity=["value.user_id"],
timeseries_column="value.event_time",
function=AggregationFunction(
operator=Sum(input="value.amount"),
time_window=RollingWindow(window_duration=timedelta(hours=1)),
),
)
# Create training set — reads from the ingestion table
# labeled_df must contain "user_id", "event_time", and label columns.
# Entity and timeseries columns use leaf node names (not value. prefixes).
training_set = fe.create_training_set(
df=labeled_df,
features=[streaming_feature],
label="is_fraud",
)
training_df = training_set.load_df()
Toplu işleme ve akış özelliklerini karıştırma
Toplu ve akış özellikleri aynı eğitim kümesinde ve modelde birlikte kullanılabilir. Sunum sırasında, toplu özellikler çevrimdışı veya çevrimiçi depolardan, akış özellikleri ise çevrimiçi depolardan getirilir.
training_set = fe.create_training_set(
df=labeled_df,
features=[batch_feature, streaming_feature],
label="is_fraud",
)
log_model() ile günlüğe kaydedilen model, çevrimiçi mağazadan özellik aramaları yapar ve her iki kaynak türü için model imzasını yapılandırır.
Hizmet süresinde ham modele ulaşanlar
Özellik Deposu modeli sarmalayıcısı, sütunları ham modele geçirmeden önce filtreler:
| Sütun türü | İç modele ulaşıyor mu? |
|---|---|
Açık özellik çıkışları (ColumnSelection, toplama) |
Evet |
RequestSource özellik olarak bildirilen sütunlar |
Evet |
| Varlık sütunları (arama anahtarları) | Hayır (açıkça özellik olarak bildirilmediği sürece) |
| Zaman serisi sütunları | Hayır (açıkça özellik olarak bildirilmediği sürece) |