Вы просто не использовали переменную целевого класса вообще. Примесь Джини, как и все другие примесные функции, измеряет примеси выходов после разделения. Что вы сделали, это измерили что-то, используя только размер выборки.
Я пытаюсь вывести формулу для вашего случая.
Предположим, для простоты у вас есть двоичный классификатор. Обозначим через тестовый атрибут, через - атрибут класса, который имеет значения .ACc+,c−
Начальный индекс Джини перед разделением дается
где - это доля точек данных, которые имеют значение для класса переменная.
I(A)=1−P(A+)2−P(A−)2
P(A+)c+
Теперь примесь для левого узла будет
где - это доля точек данных из левого подмножества которые имеют значение в переменной класса и т. Д.
I(Al)=1−P(Al+)2−P(Al−)2
I(Ar)=1−P(Ar+)2−P(Ar−)2
P(Al+)Ac+
Теперь окончательная формула для GiniGain будет
GiniGain(A)=I(A)−pleftI(Al)−prightI( A r )
где - это доля экземпляров для левого подмножества, или (сколько экземпляров находятся в левом подмножестве , деленное на общее количество экземпляров из .
пл е фT# | A l |# | A l | + # | A r |A
Я чувствую, что моя запись может быть улучшена, я посмотрю позже, когда у меня будет больше времени.
Вывод
Использование только количества точек данных недостаточно, примеси означают, насколько хорошо одна функция (функция тестирования) способна воспроизвести распределение другой функции (функция класса). Распределение тестового объекта дает число, которое вы использовали (как налево, как направо), но распределение компонента класса не используется в ваших формулах.
Позже отредактируйте - докажите, почему это уменьшается
Теперь я заметил, что пропустил ту часть, которая доказывает, почему индекс Джини всегда на дочернем узле меньше, чем на родительском узле. У меня нет полного или проверенного доказательства, но я думаю, что это веское доказательство. Для других интересных вещей, связанных с темой, вы можете проверить Техническое примечание: Некоторые свойства критериев расщепления - Лео Брейман . Теперь это будет следовать моим доказательствам.
Предположим , что мы в двоичном случае, и все значения в узле может быть полностью описывается парой со значением экземпляров первого класса, и экземпляров второго класса. Мы можем утверждать, что в родительском узле у нас есть экземпляры.( а , б )aб( а , б )
Чтобы найти лучшее разбиение, мы сортируем экземпляры в соответствии с тестовой функцией и пробуем все двоичные возможные разбиения. Сортировка по заданному признаку на самом деле представляет собой перестановку экземпляров, в которой классы начинаются с экземпляра первого класса или второго класса. Не теряя общности, мы предположим, что он начинается с экземпляра первого класса (если это не так, у нас есть зеркальное доказательство с тем же вычислением).
Первая попытка раскола происходит в левом и правом экземплярах. Как индекс Джини для этих возможных кандидатов для левого и правого дочерних узлов сравнивается с родительским узлом? Очевидно, слева мы имеем . Так что с левой стороны у нас есть меньшее значение индекса Джини. Как насчет правого узла?( 1 , 0 )( а - 1 , б )ч ( л е фт ) = 1 - ( 1 / 1 )2- ( 0 / 1 )2= 0
h ( p a r e n t ) = 1 - ( aа + б)2- ( ба + б)2
ч ( г я гh t ) = 1 - ( a - 1( а - 1 ) + б)2- ( б( а - 1 ) + б)2
Учитывая, что больше или равно (так как иначе как мы можем отделить экземпляр первого класса в левом узле?) И после упрощения легко видеть, что индекс Джини для правого узла имеет меньшее значение, чем для родительский узел.a0
Теперь последний этап доказательства заключается в том, чтобы при рассмотрении всех возможных точек разделения, определяемых имеющимися у нас данными, мы оставляем ту, которая имеет наименьший агрегированный индекс Джини, что означает, что выбранный нами оптимум меньше или равен тривиальный, который я доказал, что меньше. Что делает вывод, что в конце индекс Джини будет уменьшаться.
В качестве окончательного вывода мы должны отметить, что даже если различные разбиения могут дать значения больше, чем родительский узел, тот, который мы выберем, будет наименьшим среди них и также меньше значения родительского индекса Джини.
Надеюсь, это поможет.