Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

categoricalInformationValue

categoricalInformationValue

Добавленный в: v20.1.0

Вычисляет информационную ценность (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)

Примеры

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

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 │
└────────┘

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

-- 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] │
└────────────┘
Navigation