← Назад к вопросам

Что такое критерий Джини?

2.3 Middle🔥 241 комментариев
#Машинное обучение#Метрики и оценка моделей

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI30 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Что такое критерий Джини?

Критерий Джини (Gini Index или Gini Impurity) — это метрика неопределённости, которая измеряет степень смешанности классов в узле дерева решений. Она используется для выбора лучших признаков при построении классификационных деревьев и случайных лесов.

Математическое определение

Для узла с множеством примеров, где p_i — доля класса i:

Gini = 1 - Σ(p_i²)

или эквивалентно:

Gini = Σ(p_i × (1 - p_i))

Примеры расчёта:

# Идеально чистый узел (1 класс)
p = [1.0, 0.0]  # Все примеры одного класса
Gini = 1 - (1² + 0²) = 0

# Максимально смешанный узел (бинарная классификация)
p = [0.5, 0.5]  # Поровну оба класса
Gini = 1 - (0.5² + 0.5²) = 0.5

# Смешанный узел (многоклассовая классификация)
p = [0.33, 0.33, 0.34]  # 3 класса поровну
Gini = 1 - (0.33² + 0.33² + 0.34²) ≈ 0.666

Интерпретация

  • Gini = 0 — узел полностью чистый, все примеры одного класса (идеально)
  • Gini = 0.5 (при бинарной классификации) — максимальная неопределённость
  • Чем ниже Gini, тем более гомогенен узел

Как используется при построении дерева

Информационный прирост (Information Gain):

Дерево выбирает признак и значение разбиения, которые максимизируют информационный прирост:

Gain = Gini_parent - (N_left/N * Gini_left + N_right/N * Gini_right)

где N_left, N_right — количество примеров слева и справа после разбиения.

Практический пример:

from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import make_classification

X, y = make_classification(n_samples=100, n_features=5, n_classes=2, random_state=42)

# Дерево используует критерий Джини
dt = DecisionTreeClassifier(criterion=gini, random_state=42)
dt.fit(X, y)

# Просмотр результата
print(dt.tree_.feature)  # Индексы признаков в узлах
print(dt.tree_.threshold)  # Пороги разбиения

Джини vs Энтропия

Оба критерия используются для выбора разбиений, но есть различия:

ХарактеристикаДжиниЭнтропия
Формула1 - Σ(p_i²)-Σ(p_i × log(p_i))
Диапазон[0, 1)[0, log(k)]
СкоростьБыстрееМедленнее
РезультатЧасто похожЧасто похож
# Сравнение критериев
dt_gini = DecisionTreeClassifier(criterion=gini)
dt_entropy = DecisionTreeClassifier(criterion=entropy)

# Обычно дают похожие результаты, но Джини быстрее

Применение

  • Decision Trees — основной критерий выбора разбиений
  • Random Forests — использует Джини для построения деревьев
  • Gradient Boosting — в некоторых реализациях
  • Анализ чистоты классов — для оценки баланса в узлах

Практические советы

  1. Джини работает хорошо для деревьев малой глубины
  2. Энтропия может давать более устойчивые результаты на сложных данных
  3. На практике разницы в качестве обычно минимальны
  4. Важнее правильная глубина дерева и регуляризация, чем выбор критерия

Критерий Джини — это простой и эффективный способ оценить качество разбиения в деревьях решений, и его понимание критически важно для работы с этим классом моделей.