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.
fonte
built-in
atributo RandomForestClassifier emsklearn
chamadofeature_importances_
....? Você o verá no link.multicollinearity
pode distorcer as importâncias e a seleção de recursos. verificá-la aquiRespostas:
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.
fonte
(0.85+0.70+0.30)/3 = 0.6167
.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]
fonte