Requête sur les libellés positifs et négatifs

Un jeu de données complet pour la formation d’un modèle d’apprentissage automatique (supervisé) comprend une variable ou une étiquette cible qui représente le résultat à prévoir, ainsi qu’un ensemble de caractéristiques ou de variables explicatives utilisées pour décrire les exemples de profils utilisés pour entraîner le modèle.

Dans ce cas, le libellé est une variable appelée subscriptionOccurred qui est égale à 1 si le profil utilisateur a un événement de type web.formFilledOut et 0 dans le cas contraire. La requête suivante renvoie un ensemble de 50 000 utilisateurs du jeu de données d’événements, y compris tous les utilisateurs avec des libellés positifs (subscriptionOccurred = 1) plus un utilisateur sélectionné de manière aléatoire avec des libellés négatifs pour remplir la taille d’échantillon de 50 000 utilisateurs. Cela permet de s’assurer que les données d’apprentissage incluent des exemples positifs et négatifs à partir desquels le modèle peut apprendre.

from aepp import queryservice

dd_conn = queryservice.QueryService().connection()
dd_cursor = queryservice.InteractiveQuery2(dd_conn)

query_labels = f"""
SELECT *
FROM (
    SELECT
        eventType,
        _{tenant_id}.user_id as userId,
        SUM(CASE WHEN eventType='web.formFilledOut' THEN 1 ELSE 0 END)
            OVER (PARTITION BY _{tenant_id}.user_id)
            AS "subscriptionOccurred",
        row_number() OVER (PARTITION BY _{tenant_id}.user_id ORDER BY randn()) AS random_row_number_for_user
    FROM {table_name}
)
WHERE (subscriptionOccurred = 1 AND eventType = 'web.formFilledOut') OR (subscriptionOccurred = 0 AND random_row_number_for_user = 1)
"""

df_labels = dd_cursor.query(query_labels, output="dataframe")
print(f"Number of classes: {len(df_labels)}")
df_labels.head()

Exemple de sortie

Nombre de classes : 5000

eventTypeuserIdsubscriptionOcferredrandom_row_number_for_user
0directMarketing.emailClicked0102799417797243914806909269871441438201
1directMarketing.emailOpened0105471481785606663226474696766888819801
2web.formFilledOut01117296890525140996735553609305695042115
3directMarketing.emailClicked0114955482036391532457370835909955109301
4directMarketing.emailClicked0117212144714359019634941008699574031701