Como comparar o desempenho dos métodos de seleção de recursos?


10

Existem várias abordagens de seleção de características / seleção de variáveis ​​(ver, por exemplo, Guyon & Elisseeff, 2003 ; Liu et al., 2010 ):

  • métodos de filtro (por exemplo, baseado em correlação, entropia e importância aleatória da floresta),
  • métodos de invólucro (por exemplo, pesquisa direta, pesquisa de escalada) e
  • métodos incorporados em que a seleção de recursos faz parte do aprendizado do modelo.

Muitos algoritmos publicados também são implementados nas ferramentas de aprendizado de máquina, como R, Python, etc.

Qual seria um método apropriado para comparar diferentes algoritmos de seleção de recursos e selecionar o melhor método para um determinado problema / conjunto de dados? Uma outra pergunta seria: se existem métricas conhecidas que medem o desempenho dos algoritmos de seleção de recursos?

Respostas:


4

Este é um problema difícil e os pesquisadores estão fazendo muito progresso.

Se você estiver procurando por uma seleção supervisionada de recursos, recomendo o LASSO e suas variantes. A avaliação do algoritmo é muito direta com o aprendizado supervisionado: o desempenho da métrica que você escolher nos dados de teste.

Duas advertências principais do LASSO são que (1) os recursos selecionados não detectam automaticamente uma interação, portanto, você deve criar todos os seus recursos a priori (ou seja, antes de executá-los no modelo) e (2) o LASSO não identificará relações lineares (por exemplo, uma relação quadrática ).

Uma maneira de tentar superar essas duas advertências é usar o Gradient Boosted Machines, que apresenta a seleção automaticamente. Vale a pena notar que as propriedades estatísticas do GBM são um pouco mais ambíguas do que as do LASSO.

Se você estiver procurando por uma seleção não supervisionada de recursos, parece que existe uma abordagem de regularização semelhante usada por esses pesquisadores, mas a avaliação nesse caso específico se torna menos óbvia. As pessoas tentam várias coisas diferentes, como PCA / SVD ou K-Means, que acabam tentando encontrar uma aproximação linear aos dados.

Nesse caso, as medidas típicas de desempenho são o erro de reconstrução ou o RMSE dos clusters.

Em termos de software, R e Python possuem GBM, LASSO, K-Means, SVD e PCA. GLMNET e XGBoost no R e Sklearn for Python são as bibliotecas relevantes.


1

Eu sempre considero a seleção de recursos como um passo para um resultado final.

A seguir, de alguma forma, misturo seleção de recursos e redução de dimensionalidade, que podem ter alguns objetivos e podem ser confusos.

Alguns usos típicos:

  • redução de cálculos no aprendizado de máquina: a qualidade da seleção é um fator do resultado final do aprendizado e também, obviamente, a velocidade para realizar esse aprendizado

  • visualização / compreensão dos dados, onde você combina eventualmente várias dimensões. É bom quando não esconde coisas interessantes e quando é compreensível

  • simplificação dos resultados da aprendizagem, ainda para torná-los compreensíveis (por exemplo, análise da causa raiz). Bom se simples, mas ainda suficiente em termos de qualidade

  • controle sobre o ajuste, como sugere a resposta anterior

  • ...

Portanto, não acho que exista regra geral (como sempre no ML), mas esse é um problema caso a caso.

Apenas uma crença pessoal ...


0

É muito dependente da situação específica e do problema que você deseja resolver. Existem algumas regras gerais, por exemplo, os métodos de wrapper são mais flexíveis e também mais propensos a ajustes excessivos.

O desempenho da seleção de recursos pode ser avaliado pelo desempenho geral da tarefa de aprendizagem, por exemplo, é possível selecionar recursos com métodos diferentes e, em seguida, usar esses conjuntos de recursos diferentes para classificação e comparar a precisão dos classificadores obtidos.

Outro fator importante em alguns cenários, como em algumas aplicações biológicas, é a interpretabilidade dos recursos selecionados e os resultados, por exemplo, em um problema de cluster, o significado dos recursos selecionados e dos clusters de resultados é uma medida muito importante do desempenho.


0

Você precisaria executar um conjunto de testes artificiais, tentando detectar recursos relevantes usando métodos diferentes, sabendo com antecedência quais subconjuntos de variáveis ​​de entrada afetam a variável de saída.

Um bom truque seria manter um conjunto de variáveis ​​de entrada aleatória com diferentes distribuições e garantir que os algos de seleção de recursos os identifiquem como não relevantes.

Outro truque seria garantir que, depois de permutar linhas, as variáveis ​​marcadas como relevantes deixem de ser classificadas como relevantes.

O que foi dito acima se aplica às abordagens de filtro e invólucro.

Também lembre-se de lidar com os casos em que, se tomadas separadamente (uma por uma), as variáveis ​​não mostram nenhuma influência sobre o alvo, mas, quando tomadas em conjunto, revelam uma forte dependência. O exemplo seria um problema conhecido do XOR (confira o código Python):

import numpy as np
import matplotlib.pyplot as plt
from sklearn.feature_selection import f_regression, mutual_info_regression,mutual_info_classif

x=np.random.randn(5000,3)
y=np.where(np.logical_xor(x[:,0]>0,x[:,1]>0),1,0)

plt.scatter(x[y==1,0],x[y==1,1],c='r',marker='x')
plt.scatter(x[y==0,0],x[y==0,1],c='b',marker='o')
plt.show()
print(mutual_info_classif(x, y)) 

Resultado:

Ilustração de Python 3 XOR

[0. 0. 0.00429746]

Portanto, o método de filtragem presumivelmente poderoso (mas univariado) (computação de informações mútuas entre variáveis ​​de entrada e saída) não foi capaz de detectar nenhum relacionamento no conjunto de dados. Considerando que sabemos com certeza que é uma dependência de 100% e podemos prever Y com 100% de precisão sabendo X.

Uma boa idéia seria criar um tipo de referência para os métodos de seleção de recursos. Alguém quer participar?

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.