Aller au contenu principal

Chapitre 2 : Ingénierie des caractéristiques à grande échelle

Magasins de caractéristiques​

Les magasins de caractéristiques centralisent le calcul et la diffusion des caractéristiques, assurant la cohérence entre l'entraînement et l'inférence.

Exemple de Feast​

from feast import FeatureStore, Entity, Feature, ValueType, FeatureView
from feast.infra.offline_stores.file_source import FileSource

# Définir l'entité
customer = Entity(
name="customer_id",
value_type=ValueType.STRING,
description="Identifiant du client"
)

# Définir la vue des caractéristiques
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")
)

# Obtenir les caractéristiques pour l'entraînement
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()

# Obtenir les caractéristiques pour l'inférence (en ligne)
online_features = store.get_online_features(
features=["customer_features:total_purchases"],
entity_rows=[{"customer_id": "CUS-12345"}]
).to_dict()

Caractéristiques en ligne vs hors ligne​

TypeObjectifLatenceStockage
Hors ligneEntraînementMinutesEntrepôt de données
En ligneInférenceMillisecondesRedis, DynamoDB

Points clés​

Résumé
  1. Les magasins de caractéristiques assurent la cohérence entre l'entraînement et la diffusion
  2. Séparer les magasins en ligne/hors ligne pour différents besoins de latence
  3. Versionner les caractéristiques comme le code et les données

Suivant : Chapitre 3 : Qualité et validation des données