Ответ
Критерий Джини (Gini impurity) — это мера неоднородности или «загрязненности» узла в дереве решений, используемая для оценки качества разбиения. Он показывает вероятность неправильной классификации случайно выбранного элемента из узла, если его метка определяется согласно распределению классов в этом узле.
Формула:
Gini = 1 - Σ(p_i)², где p_i — доля (вероятность) класса i в узле.
Пример расчета для узла:
- Узел содержит 10 объектов: 7 класса A и 3 класса B.
p_A = 0.7,p_B = 0.3Gini = 1 - (0.7² + 0.3²) = 1 - (0.49 + 0.09) = 0.42
Ключевые свойства:
- Диапазон: от 0 (узел чист, содержит объекты одного класса) до максимума, который зависит от числа классов. Для двух классов максимум — 0.5.
- Цель разбиения: алгоритм выбирает такое разбиение, которое максимально уменьшает средневзвешенную неоднородность дочерних узлов (снижает критерий Джини).
- Сравнение с энтропией: Джини вычислительно немного эффективнее, так как не требует вычисления логарифмов. На практике разница в качестве моделей между использованием Джини и энтропии (information gain) часто незначительна.
Пример использования в scikit-learn:
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import make_classification
X, y = make_classification(n_samples=100, n_features=4, random_state=42)
# Создание дерева решений с использованием критерия Джини
model = DecisionTreeClassifier(criterion='gini', max_depth=3)
model.fit(X, y)
# Можно посмотреть важность признаков, рассчитанную на основе уменьшения неоднородности
print("Feature importances:", model.feature_importances_)