categoricalInformationValue
Introduit dans : v20.1.0
Calcule la valeur d'information (IV) pour des variables explicatives catégorielles par rapport à une variable cible binaire.
Pour chaque catégorie, la fonction calcule : (P(tag = 1) - P(tag = 0)) × (log(P(tag = 1)) - log(P(tag = 0)))
où :
- P(tag = 1) est la probabilité que la cible soit égale à 1 pour la catégorie donnée
- P(tag = 0) est la probabilité que la cible soit égale à 0 pour la catégorie donnée
La valeur d'information est une statistique utilisée pour mesurer la force de la relation entre une variable explicative catégorielle et une variable cible binaire dans le cadre de la modélisation prédictive. Des valeurs absolues plus élevées indiquent un pouvoir prédictif plus important.
Le résultat indique dans quelle mesure chaque variable discrète (catégorielle) [category1, category2, ...] contribue à un modèle d'apprentissage qui prédit la valeur de tag.
Syntaxe
categoricalInformationValue(category1[, category2, ...,]tag)Arguments
category1, category2, ...— Une ou plusieurs caractéristiques catégorielles à analyser. Chaque catégorie doit contenir des valeurs discrètes.UInt8tag— Variable cible binaire pour la prédiction. Elle doit contenir les valeurs 0 et 1.UInt8
Valeur renvoyée
Renvoie un tableau de valeurs Float64 représentant la valeur d'information pour chaque combinaison unique de catégories. Chaque valeur indique le pouvoir prédictif de cette combinaison de catégories pour la variable cible. Array(Float64)
Exemples
Utilisation de base : analyse des groupes d'âge par rapport à l'usage mobile
CREATE TABLE visits (is_young UInt8, is_female UInt8, is_mobile UInt8) ENGINE = Memory;
-- 80 of the 100 young visitors browse on a mobile device, and only 20 of the 100 older ones do,
-- while the sex of a visitor says nothing about the device.
INSERT INTO visits SELECT 1, number % 2, number < 80 FROM numbers(100);
INSERT INTO visits SELECT 0, number % 2, number < 20 FROM numbers(100);
SELECT round(categoricalInformationValue(is_young, is_mobile)[1], 4) AS iv FROM visits;┌─────iv─┐
│ 0.8318 │
└────────┘Plusieurs variables catégorielles avec des données démographiques utilisateur
-- The age of a visitor predicts the device, the sex of a visitor does not.
SELECT arrayMap(x -> round(x, 4), categoricalInformationValue(is_young, is_female, is_mobile)) AS iv
FROM visits;┌─iv─────────┐
│ [0.8318,0] │
└────────────┘