Почему статистика разбивки в пакете ranger для R больше 1?

Вопрос или проблема

В пакете ranger для R нечистота узла измеряется с помощью индекса Джини для деревьев классификации. Я ожидаю, что индекс Джини будет находиться в диапазоне от 0 до 1, так как

$$ Gini = 1-\sum_{i=1}^C p_i^2$$,

где $p_i$ — это доля образцов, принадлежащих классу i, а C — общее количество классов в этом узле.

Однако, когда я обучаю случайный лес, например

ranger(Species ~ ., iris, num.trees = 5, node.stats = TRUE)

я получаю значения разбиений с помощью rf$forest$split.stats[1], которые больше 1.

Я ожидал бы значения в пределах от 0 до 1 для rf$forest$split.stats[1].

Ответ или решение

В пакете ranger для R, действительно, Gini индекс используется для измерения чистоты узлов в классификационных деревьях. Ваше ожидание, что значение Gini должно находиться в диапазоне от 0 до 1, основано на его определении, где:

$$ Gini = 1 – \sum_{i=1}^C p_i^2 $$

Здесь ( p_i ) — это доля образцов, принадлежащих классу ( i ), а ( C ) — это общее количество классов в узле. Это определение верно, когда мы говорим о чистоте узлов, но важно понимать, как функция ranger обрабатывает статистику сплитов.

При использовании функции ranger() с параметром node.stats = TRUE, вы получаете объект, который включает в себя различную статистику для узлов. split.stats представляет собой значения, относящиеся к улучшению извлеченной информации на каждом разбиении, а не просто Gini индекс для узлов.

Когда вы видите значения, превышающие 1, это связано с тем, что статистика сплита рассчитывается как разница между нечистотой узла до разбиения и средней нечистотой узлов, возникающих после разбиения. Поэтому представляемые значения могут иметь шкалу, которая превышает 1, поскольку они могут представлять собой величины, основанные на абсолютном улучшении, а не относительном.

Если вы хотите получить Gini индекс, который лежит в диапазоне от 0 до 1, вам нужно сосредоточиться на значениях, относящихся строго к чистоте узлов (например, используя значения impurity в node.stats), а не на расчетах, связанных со статистикой сплита.

В заключение, значения в split.stats могут превышать 1, поскольку это не просто Gini индекс, а измерение улучшения, которое может быть больше 1 в зависимости от разницы в нечистоте узлов до и после сплита.

Оцените материал
Добавить комментарий

Капча загружается...