Capítulo 2: Ingeniería de Características a Escala
Feature Stores
Los feature stores centralizan el cálculo y el suministro de características, asegurando la consistencia entre el entrenamiento y la inferencia.
Ejemplo de Feast
from feast import FeatureStore, Entity, Feature, ValueType, FeatureView
from feast.infra.offline_stores.file_source import FileSource
# Define entity
customer = Entity(
name="customer_id",
value_type=ValueType.STRING,
description="Customer identifier"
)
# Define feature view
customer_features = FeatureView(
name="customer_features",
entities=["customer_id"],
ttl=timedelta(days=1),
features=[
Feature(name="total_purchases", dtype=ValueType.FLOAT),
Feature(name="days_since_last_login", dtype=ValueType.INT64),
Feature(name="account_age_days", dtype=ValueType.INT64),
],
online=True,
source=FileSource(path="data/customer_features.parquet")
)
# Get features for training
store = FeatureStore(repo_path=".")
training_df = store.get_historical_features(
entity_df=entity_df,
features=["customer_features:total_purchases", "customer_features:days_since_last_login"]
).to_df()
# Get features for inference (online)
online_features = store.get_online_features(
features=["customer_features:total_purchases"],
entity_rows=[{"customer_id": "CUS-12345"}]
).to_dict()
Características Online vs Offline
| Tipo | Propósito | Latencia | Almacenamiento |
|---|---|---|---|
| Offline | Entrenamiento | Minutos | Data warehouse |
| Online | Inferencia | Milisegundos | Redis, DynamoDB |
Puntos Clave
Summary
- Los feature stores aseguran la consistencia entre entrenamiento e inferencia
- Separar los stores online/offline para diferentes necesidades de latencia
- Versionar las características como el código y los datos
Siguiente: Capítulo 3: Calidad y Validación de Datos