categoricalInformationValue
Introducido en: v20.1.0
Calcula el valor de la información (IV) para variables categóricas en relación con una variable objetivo binaria.
Para cada categoría, la función calcula: (P(tag = 1) - P(tag = 0)) × (log(P(tag = 1)) - log(P(tag = 0)))
donde:
- P(tag = 1) es la probabilidad de que el objetivo sea igual a 1 para la categoría dada
- P(tag = 0) es la probabilidad de que el objetivo sea igual a 0 para la categoría dada
El valor de la información es una estadística que se utiliza para medir la intensidad de la relación entre una variable categórica y una variable objetivo binaria en el modelado predictivo. Valores absolutos más altos indican una mayor capacidad predictiva.
El resultado indica cuánto contribuye cada variable discreta (categórica) [category1, category2, ...] a un modelo de aprendizaje que predice el valor de tag.
Sintaxis
categoricalInformationValue(category1[, category2, ...,]tag)Argumentos
category1, category2, ...— Una o más características categóricas para analizar. Cada categoría debe contener valores discretos.UInt8tag— Variable objetivo binaria para la predicción. Debe contener los valores 0 y 1.UInt8
Valor devuelto
Devuelve un Array de valores Float64 que representa el valor de información de cada combinación única de categorías. Cada valor indica la capacidad predictiva de esa combinación de categorías para la variable objetivo. Array(Float64)
Ejemplos
Uso básico para analizar grupos de edad frente al uso de dispositivos móviles
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 │
└────────┘Múltiples variables categóricas con datos demográficos de los usuarios
-- 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] │
└────────────┘