Seleção de recursos com florestas aleatórias

16

Eu tenho um conjunto de dados com principalmente variáveis ​​financeiras (120 recursos, exemplos de 4k) que são altamente correlacionadas e muito barulhentas (indicadores técnicos, por exemplo), então eu gostaria de selecionar cerca de 20-30 máx. Para uso posterior no treinamento de modelo (classificação binária - aumentar diminuir).

Eu estava pensando em usar florestas aleatórias para a classificação de recursos. É uma boa ideia usá-los recursivamente? Por exemplo, digamos que na primeira rodada eu diminua os piores 20%, a segunda também e assim por diante até obter o número desejado de recursos. Devo usar validação cruzada com RF? (É intuitivo para mim não usar o CV, porque isso é praticamente o que a RF já faz.)

Além disso, se eu for com florestas aleatórias, devo usá-las como classificadores para o binário ou regressor para o aumento / diminuição real para obter importâncias de recursos?

A propósito, os modelos que eu gostaria de experimentar após a seleção de recursos são: SVM, redes neurais, regressões ponderadas localmente e floresta aleatória. Estou trabalhando principalmente em Python.

Rindo muito
fonte
2
gostaria de se conectar para trocar idéias. Estou trabalhando em algo semelhante
user670186
existe alguma razão pela qual ninguém sugeriu usar apenas o built-inatributo RandomForestClassifier em sklearnchamado feature_importances_....? Você o verá no link.
precisa saber é o seguinte
Cuidado porque multicollinearitypode distorcer as importâncias e a seleção de recursos. verificá-la aqui
Candic3
Cuidado com os algoritmos padrão: parrt.cs.usfca.edu/doc/rf-importance/index.html
Tim

Respostas:

12

Para a seleção de recursos, precisamos de uma função de pontuação e de um método de pesquisa para otimizar a função de pontuação.

Você pode usar a RF como um método de classificação de recursos se definir alguma pontuação de importância relevante. O RF selecionará recursos com base no aleatório com o método de substituição e agrupará todos os subconjuntos em um subespaço separado (chamado subespaço aleatório). Uma função de pontuação de importância pode ser baseada na atribuição da precisão de cada árvore para cada recurso nesse subespaço aleatório. Então, você faz isso para cada árvore separada. Como a fonte de geração dos subespaços é aleatória, você pode definir um limite para calcular a pontuação de importância.

Resumo:

Etapa 1 : se o recurso X2 aparecer em 25% das árvores, marque-o. Caso contrário, não considere classificar o recurso porque não temos informações suficientes sobre seu desempenho

Etapa 2 : agora, atribua a pontuação de desempenho de cada árvore na qual X2 aparece a X2 e calcule a média da pontuação. Por exemplo: perf (Árvore1) = 0,85 perf (Árvore2) = 0,70 perf (Árvore3) = 0,30

Então, a importância do recurso X2 = (0,85 + 0,70 + 0,30) / 3 = 0,6167

Você pode considerar uma configuração mais avançada, incluindo a profundidade da divisão do recurso ou o valor do ganho de informações na árvore de decisão. Pode haver várias maneiras de projetar uma função de pontuação com base em árvores de decisão e RF.

Em relação ao método de pesquisa , seu método recursivo parece razoável como uma maneira de selecionar os melhores classificados.

Por fim, você pode usar a RF como classificador ou modelo de regressão para selecionar seus recursos, pois os dois forneceriam uma pontuação de desempenho. A pontuação é indicativa, pois se baseia nas amostras OOB prontas para uso e você pode não considerar a validação cruzada em uma configuração mais simples.

soufanom
fonte
Obrigado pela contribuição. Queria salientar isso (0.85+0.70+0.30)/3 = 0.6167.
quer
5
Se você estiver trabalhando com python, poderá usar diretamente a importância da variável calculada no sklearn ao chamar uma floresta aleatória.
Scratch
5

Eu tenho um conjunto de dados com principalmente variáveis ​​financeiras (120 recursos, exemplos de 4k) que são altamente correlacionadas e muito barulhentas (indicadores técnicos, por exemplo), então eu gostaria de selecionar cerca de 20-30 máx. Para uso posterior no treinamento de modelo (classificação binária - aumentar diminuir).

Exemplos de 4k realmente não são suficientes para estimar algo muito sofisticado - você precisa usar os modelos mais simples possíveis (regressão linear / logística, svm linear) e pequeno número de variáveis

Dado que seus dados são barulhentos e correlacionados, o PCA é provavelmente a sua melhor aposta [é efetivamente identificar os sinais comuns em média sobre os indicadores individuais]

A regularização L2 (para um modelo linear) também ajudará a calcular o ruído [por exemplo, se você tiver n cópias ruidosas do mesmo sinal, a regularização l2 incentivará os pesos a serem iguais - calculando a média dessas n variáveis]

seanv507
fonte