Creación de Pipelines de Características
Cuándo usarlo
- Ingenierizar características para modelos de ML a partir de datos de almacén/stream.
- Prevenir la fuga de etiquetas y el sesgo train/serve.
- Configurar un almacén de características, servir online o rellenos históricos.
- NO usarlo para modelado/agregación general (usar habilidades de dbt/Spark) a menos que alimente características de ML.
Flujo de trabajo
- [ ] Definir cada característica con una clave de entidad y una marca de tiempo de evento
- [ ] Construir conjuntos de entrenamiento con uniones correctas en el tiempo (as-of la hora de la etiqueta)
- [ ] Compartir UNA definición para offline (entrenamiento) y online (servicio)
- [ ] Establecer frescura/materialización para características online
- [ ] Rellenar características históricas de forma idempotente para entrenamiento
- Corrección en el tiempo. Unir características según la marca de tiempo de cada etiqueta — usar solo datos que se conocían antes del momento de la predicción. Esto previene la fuga de etiquetas, el error de características más dañino.
- Paridad offline/online. Calcular una característica de la misma manera para entrenamiento (offline, por lotes) y servicio (online, baja latencia). La lógica divergente causa sesgo train/serve y degradación silenciosa en producción.
- Frescura. Las características online deben materializarse en un horario que cumpla con la tolerancia de obsolescencia del modelo.
- Rellenos idempotentes. Recalcular características históricas debe ser repetible (ver
diseñando-rellenos-y-repeticiones).
Patrones
Unión en el tiempo (as-of) — elegir el valor de la característica más reciente estrictamente anterior a cada evento de etiqueta:
SELECT l.entity_id, l.label_ts, f.value AS feature
FROM labels l
LEFT JOIN features f
ON f.entity_id = l.entity_id
AND f.event_ts <= l.label_ts -- solo datos pasados; sin fuga
QUALIFY ROW_NUMBER() OVER (
PARTITION BY l.entity_id, l.label_ts ORDER BY f.event_ts DESC) = 1;
Definición única, dos caminos — definir la característica una vez (por ejemplo, FeatureView de Feast); materializar en un almacén offline para entrenamiento y en un almacén online para servicio, de modo que ambos usen lógica idéntica.
Frescura + materialización — programar la materialización online; monitorear la frescura de las características como cualquier SLA de conjunto de datos (implementando-observabilidad-de-pipelines).
Errores comunes
- Fuga de etiquetas — unir características calculadas después de la hora de la etiqueta infla las métricas offline y colapsa en producción; siempre unir as-of.
- Sesgo train/serve — implementaciones offline y online separadas derivan; compartir una definición.
- Características online obsoletas — el modelo sirve con valores antiguos; establecer y monitorear la frescura.
- Rellenos no reproducibles — historial de entrenamiento inconsistente; hacer que la recomputación de características sea idempotente.
- Sin claves de entidad/marca de tiempo — las características no se pueden unir correctamente a través del tiempo; requerir ambas.
- Características sin versionar — la redefinición silenciosa rompe la comparabilidad del modelo; versionar las definiciones de características.