Использует ли случайный лес Бреймана прирост информации или индекс Джини?

15

Я хотел бы знать, использует ли случайный лес Бреймана (случайный лес в пакете R randomForest) в качестве критерия расщепления (критерий для выбора атрибута) получение информации или индекс Джини? Я пытался выяснить это на http://www.stat.berkeley.edu/~breiman/RandomForests/cc_home.htm и в документации для пакета randomForest в R. Но единственное, что я обнаружил, это то, что индекс Джини можно использовать для вычисления переменной важности.

кто-то
источник
Мне также интересно, являются ли деревья случайного леса в пакете randomForest двоичными или нет.
кто-то

Ответы:

16

Пакет randomForest в R от A. Liaw - это порт исходного кода, представляющий собой смесь c-кода (переведенного) с некоторым оставшимся кодом Fortran и кодом оболочки R. Чтобы определить общее наилучшее разделение по точкам останова и переменным mtry, код использует функцию оценки, аналогичную gini-gain:

GiniGain(N,X)=Gini(N)|N1||N|Gini(N1)|N2||N|Gini(N2)

Там , где представляет собой Данная особенность, N является узлом , на котором разделение должно быть сделано, и N 1 и N 2 являются двумя дочерними узлами , созданные расщепления N . | , | это количество элементов в узле.XNN1N2N|.|

И , где K - количество категорий в узлеGini(N)=1k=1Kpk2K

Но применяемая функция скоринга не совсем та же, а эквивалентная, более эффективная в вычислительном отношении версия. и | N | постоянны для всех сравниваемых разбиений и, следовательно, опущены.Gini(N)

Также давайте проверим деталь, если сумма квадратов распространенности в узле (1) вычисляется как |N2||N|Gini(N2)|N2|Gini(N2)=|N2|(1k=1Kpk2)=|N2|nclass2,k2|N2|2

где - количество классов целевого класса k в дочернем узле 1. Примечание | N 2 |nclass1,k|N2|помещается как в знаменатель, так и в знаменатель.

удаление тривиальной постоянной 1 из уравнения таким образом, что наилучшим решением разделения является максимизация взвешенной по размеру суммы узлов квадратов распространенности классов ...

оценка = |N1|k=1Kp1,k2+|N2|k=1Kp2,k2=|N1|k=1Knclass1,k2|N1|2+|N2|k=1Knclass2,k2|N2|2 =k=1Knclass2,k21|N1|1+k=1Knclass2,k21|N1|2 =nominator1/denominator1+nominator2/denominator2

The implementation also allows for classwise up/down weighting of samples. Also very important when the implementation update this modified gini-gain, moving a single sample from one node to the other is very efficient. The sample can be substracted from nominators/denominators of one node and added to the others. I wrote a prototype-RF some months ago, ignorantly recomputing from scratch gini-gain for every break-point and that was slower :)

If several splits scores are best, a random winner is picked.

This answer was based on inspecting source file "randomForest.x.x.tar.gz/src/classTree.c" line 209-250

Soren Havelund Welling
источник