Como escolher a divisão na floresta Aleatória para preditores categóricos (recursos)?

8

Entendo como a melhor divisão é escolhida para floresta aleatória para preditores numéricos (recursos).

Os preditores numéricos são classificados para cada valor calculado como impureza ou entropia de Gini e é escolhido um limite que fornece a melhor divisão. Mas qual a melhor divisão escolhida para o preditor categórico, pois não há uma ordem específica?

Ajay
fonte

Respostas:

9

A implementação usual de baunilha tenta todas as combinações possíveis de suas categorias. Expressa essas combinações como um número inteiro que representa quais categorias são selecionadas e quais são deixadas de fora na divisão. Vai da esquerda para a direita. Por exemplo, se você tiver uma variável com as classes "Cat", "Dog", "Cow", "Rat", ela varrerá as possíveis divisões, significando algo como:

Cão vs o resto = 0100 (lembre-se, leia da esquerda para a direita)

Cat vs o resto = 1000

Por si mesmos, mas também

Cão e Gato vs Vaca e Rato = 1100

Vaca e gato vs cachorro e rato = 1010

E então, como mencionado, ele usa números inteiros para lidar com isso, para representar a divisão:

library(R.utils)
> intToBin(12)
[1] "1100"
JEquihua
fonte
0

A floresta é um método de conjunto de árvores. Então, acho que sua pergunta é mais baseada no algoritmo de árvores sobre a divisão de variáveis. Há dois tipos de preditores categóricos, fator ordenado e fator não ordenado.

O fator ordenado é semelhante à variável numérica e a floresta aleatória encontrará o ponto de corte, enquanto o último é usado outro algoritmo como abaixo.

Ele tentará capturar o primeiro nível do fator como a divisão e tentar ajustar o modelo e encontrar o desempenho com a função de perda. Em seguida, tente encontrar o segundo nível e ajustá-lo novamente, encontre o desempenho e assim por diante. No final, ele encontra as melhores combinações de níveis de divisão de acordo com o melhor desempenho.

Portanto, você verá que leva muito mais tempo e memória para o modelo de árvores ou o modelo aleatório de floresta para ajustar fatores que não numéricos.

Vincent
fonte
0

Se seus recursos são categóricos, a primeira ideia que me vem à mente é criar um recurso binário para todos os valores possíveis na categoria.

Portanto, se você tiver um recurso correspondente a "marca de celular", que pode ser apenas "Samsung, Apple, HTC ou Nokia", eu o representaria em quatro categorias (1, 0, 0, 0), (0, 1, 0, 0), (0, 0, 1, 0) e (0, 0, 0, 1), respectivamente. Dessa forma, o limite selecionará entre ser uma marca ou qualquer outra em cada divisão, sem ter efeitos estranhos.

Espero que isto ajude!

Cristina
fonte
0

Escolha algumas categorias aleatórias e use a categoria que apresenta a melhor divisão, ou escolha algumas combinações aleatórias de categorias e use a combinação que fornece a melhor divisão.

Eu acho que realmente não importa qual dos dois métodos você escolhe, já que a divisão em uma combinação de categorias em um único nó pode ser simulada pela divisão em uma única categoria em vários nós.

herman
fonte