Перейти к основному содержимому
Перейти к основному содержимому

categoricalInformationValue

categoricalInformationValue

Введено в версии v20.1

Вычисляет информационную ценность (Information Value, IV) для категориальных признаков относительно бинарной целевой переменной.

Для каждой категории функция вычисляет: (P(tag = 1) - P(tag = 0)) × (log(P(tag = 1)) - log(P(tag = 0)))

где:

  • P(tag = 1) — вероятность того, что целевая переменная равна 1 для данной категории
  • P(tag = 0) — вероятность того, что целевая переменная равна 0 для данной категории

Information Value — это статистическая метрика, используемая для измерения силы связи категориального признака с бинарной целевой переменной в задачах предиктивного моделирования. Более высокие абсолютные значения указывают на большую предсказательную силу.

Результат показывает, какой вклад каждый дискретный (категориальный) признак [category1, category2, ...] вносит в модель, предсказывающую значение tag.

Синтаксис

categoricalInformationValue(category1[, category2, ...,]tag)

Аргументы

  • category1, category2, ... — один или несколько категориальных признаков для анализа. Каждая категория должна содержать дискретные значения. UInt8
  • tag — двоичная целевая переменная для предсказания. Должна содержать значения 0 и 1. UInt8

Возвращаемое значение

Возвращает массив значений типа Float64, представляющих информационную ценность для каждой уникальной комбинации категорий. Каждое значение показывает предиктивную силу этой комбинации категорий для целевой переменной. Array(Float64)

Примеры

Базовое использование: анализ возрастных групп и использования мобильных устройств

-- Using the metrica.hits dataset (available on https://sql.clickhouse.com/) to analyze age-mobile relationship
SELECT categoricalInformationValue(Age < 15, IsMobile)
FROM metrica.hits;
[0.0014814694805292418]

Несколько категориальных признаков, описывающих демографию пользователей

SELECT categoricalInformationValue(
    Sex,                 -- 0=male, 1=female
    toUInt8(Age < 25),   -- 0=25+, 1=under 25
    toUInt8(IsMobile)    -- 0=desktop, 1=mobile
) AS iv_values
FROM metrica.hits
WHERE Sex IN (0, 1);
[0.00018965785460692887,0.004973668839403392]