Ainda precisamos fazer a seleção de recursos enquanto usamos algoritmos de Regularização?


20

Eu tenho uma pergunta com relação à necessidade de usar métodos de seleção de recursos (florestas aleatórias apresentam valor de importância ou métodos de seleção de recursos univariados etc.) antes de executar um algoritmo de aprendizado estatístico.

Sabemos que, para evitar ajustes excessivos, podemos introduzir penalidades de regularização nos vetores de peso.

Portanto, se eu quiser fazer regressão linear, poderia introduzir os parâmetros de regularização de rede L2 ou L1 ou mesmo Elastic. Para obter soluções esparsas, a penalidade de L1 ajuda na seleção de recursos.

Então, ainda é necessário fazer a seleção de recursos antes de executar a regularização L1 na regressão como Lasso ?. Tecnicamente, Lasso está me ajudando a reduzir os recursos pela penalidade de L1; por que a seleção de recursos é necessária antes de executar o algo?

Li um artigo de pesquisa dizendo que fazer o Anova e o SVM oferece melhor desempenho do que usar o SVM sozinho. Agora a pergunta é: SVM inerentemente faz regularização usando a norma L2. A fim de maximizar a margem, está minimizando a norma do vetor de peso. Então, ele está fazendo regularização em sua função objetivo. Então, tecnicamente, algoritmos como o SVM não devem se preocupar com os métodos de seleção de recursos. Mas o relatório ainda diz que fazer a seleção de Recursos Univariados antes que o SVM normal seja mais poderoso.

Alguém com pensamentos?


Uma pergunta que eu colocaria é como a regularização SVM funciona com métodos de kernel? A norma L2 reg baseia-se na entrada de normalizações. No entanto, se você usar um kernel (por exemplo, polinomial), suas entradas efetivas (ou seja, as potências polinomiais) não serão mais normalizadas.
Seanv507

Respostas:


17

A seleção de recursos às vezes melhora o desempenho de modelos regularizados, mas, na minha experiência, geralmente piora o desempenho da generalização. A razão para isso é que, quanto mais escolhas fizermos em relação ao nosso modelo (incluindo os valores dos parâmetros, a escolha dos recursos, a configuração de hiper parâmetros, a escolha do kernel ...), mais dados precisaremos fazer essas escolhas de forma confiável. Geralmente fazemos essas escolhas minimizando algum critério avaliado em um conjunto finito de dados, o que significa que o critério inevitavelmente tem uma variação diferente de zero. Como resultado, se minimizarmos o critério de forma muito agressiva, podemos ajustá-lo em excesso, ou seja, podemos fazer escolhas que minimizem o critério devido a recursos que dependem da amostra específica em que ele é avaliado, e não porque produzirão uma melhoria genuína no desempenho.

Agora, o SVM é uma implementação aproximada de um limite ao desempenho da generalização que não depende da dimensionalidade; portanto, em princípio, podemos esperar um bom desempenho sem a seleção de recursos, desde que os parâmetros de regularização sejam escolhidos corretamente. A maioria dos métodos de seleção de recursos não possui "garantias" de desempenho.

Para os métodos L1, eu certamente não me incomodaria com a seleção de recursos, pois o critério L1 geralmente é eficaz em recursos de corte. A razão pela qual é eficaz é que ela induz uma ordem na qual os recursos entram e saem do modelo, o que reduz o número de opções disponíveis na seleção de recursos e, portanto, é menos propenso a ajustes excessivos.

O melhor motivo para a seleção de recursos é descobrir quais recursos são relevantes / importantes. A pior razão para a seleção de recursos é melhorar o desempenho, para modelos regularizados, geralmente piora as coisas. No entanto, para alguns conjuntos de dados, isso pode fazer uma grande diferença; portanto, a melhor coisa a fazer é experimentá-lo e usar um esquema robusto e imparcial de avaliação de desempenho (por exemplo, validação cruzada aninhada) para descobrir se o seu é um desses conjuntos de dados.


O que você quer dizer com valdiação cruzada aninhada? Aplica validação cruzada k vezes N vezes?
Yasin.yazici

5

jβ^j=.0001β^j=0

No entanto, ainda existem razões para remover completamente uma variável.

  1. Às vezes, o objetivo não é a precisão preditiva, mas a explicação de um fenômeno mundial. Às vezes, você quer saber o que as variáveis ​​afetam e não afetam uma determinada variável dependente. Nesses tipos de situações, um modelo parcimonioso é a maneira preferida de entender e interpretar
  2. β^j
  3. Razões computacionais - um modelo com menos variáveis ​​geralmente roda mais rápido e você não precisa armazenar os dados para essas variáveis ​​estranhas.

2
Olá, TrynnaDoStat, concordo totalmente com o seu ponto 1 e 3. Mas o argumento 2 não chega a esse ponto. Se você selecionar um recurso com o mesmo conjunto de dados, também corre o risco de escolher o conjunto errado. Porque uma variável aleatória pode parecer correlacionada bem com a variável de objetivo nos dados.
precisa saber é o seguinte

β^j

0

Não acho que o sobreajuste seja a razão pela qual precisamos da seleção de recursos em primeiro lugar. De fato, o ajuste excessivo é algo que acontece se não fornecermos dados suficientes ao nosso modelo, e a seleção de recursos reduz ainda mais a quantidade de dados que passamos no nosso algoritmo.

Em vez disso, eu diria que a seleção de recursos é necessária como uma etapa de pré-processamento para modelos que não têm o poder de determinar a importância dos recursos por conta própria ou para algoritmos que ficam muito menos eficientes se tiverem que fazer isso sozinhos. .

Tomemos, por exemplo, um algoritmo k-vizinho mais simples, baseado na distância euclidiana. Ele sempre considerará todos os recursos como tendo o mesmo peso ou importância na classificação final. Portanto, se você fornecer 100 recursos, mas apenas três deles forem relevantes para o seu problema de classificação, todo o ruído desses recursos extras abafará completamente as informações dos três recursos importantes e você não obterá previsões úteis. Se você determinar previamente os recursos críticos e passar apenas os ao classificador, ele funcionará muito melhor (sem mencionar que é muito mais rápido).

Por outro lado, observe um classificador de floresta aleatório. Durante o treinamento, ele determinará automaticamente quais recursos são mais úteis, encontrando uma divisão ideal escolhendo um subconjunto de todos os recursos. Portanto, será muito melhor examinar os 97 recursos inúteis para encontrar os três bons. Obviamente, ele ainda funcionará mais rápido se você fizer a seleção antecipadamente, mas seu poder de classificação geralmente não sofrerá muito, oferecendo muitos recursos extras, mesmo que não sejam relevantes.

Por fim, observe as redes neurais. Novamente, este é um modelo que tem o poder de ignorar recursos irrelevantes, e o treinamento por retropropagação geralmente converge para o uso dos recursos interessantes. No entanto, sabe-se que o algoritmo de treinamento padrão converge muito mais rapidamente se as entradas são "branqueadas", ou seja, escaladas para variação de unidade e com correlação cruzada removida (LeCun et al, 1998) . Portanto, embora você não precise estritamente fazer a seleção de recursos, ele pode pagar em termos puros de desempenho para fazer o pré-processamento dos dados de entrada.

Então, em resumo, eu diria que a seleção de recursos tem menos a ver com o sobreajuste e mais com o aprimoramento do poder de classificação e da eficiência computacional de um método de aprendizado. A quantidade necessária depende muito do método em questão.


3
(1) Não concordo com sua primeira proposição. A seleção de recursos não reduz a quantidade de dados, mas reduz o número de recursos. O número de instâncias (amostras) permanece o mesmo e pode ajudar na adaptação excessiva, pois o classificador precisa de menos parâmetros (se for um modelo paramétrico) para ajustar os dados. Menos parâmetros significam menos poder de representação e, portanto, menor probabilidade de super ajuste. (2) Qual é o tipo de algoritmo de seleção de recurso que você mencionou para usar antes do KNN? Como ele sabe quais recursos serão mais eficazes?
Yasin.yazici

@ yasin.yazici: Digamos que você esteja fazendo uma classificação manuscrita de dígitos e jogue fora todos, exceto o pixel superior esquerdo. Você não acabou de reduzir a quantidade de dados que tinha?
CFH

@chf Não, apenas reduz o número de recursos. Para que o conjunto de dados seja MNIST, existem 784 recursos para cada amostra e 60000 amostras. Se você jogar fora alguma parte de seus recursos, ainda terá 60000 amostras.
Yasin.yazici

@ yasin.yazici: Meu argumento é que o número de amostras não é o mesmo que a quantidade de dados. Os dados são toda a matriz de "amostras x recursos".
CFH

A seleção de recursos pode (e geralmente será) superajustada. Se você está usando alunos regularizados e não se importa com a importância do recurso, a menos que tenha muitos dados e um esquema de validação robusto, não vejo muita utilidade na seleção de recursos.
Firebug

0

Eu acho que se você não tiver um número suficiente de pontos de dados para otimizar robustos os parâmetros, poderá fazer a seleção de recursos para remover algumas variáveis. Mas eu não sugeriria fazer muito disso, pois você pode perder o sinal que deseja modelar.

Além disso, pode haver certos recursos que você não deseja em seus modelos com base no entendimento comercial que você deseja remover.


0

No caso do laço, pré-processar os dados para remover os recursos incômodos é realmente bastante comum. Para um artigo recente que discute maneiras de fazer isso, consulte os testes de triagem de Xiang et al . Para problemas de laço . A motivação comum mencionada nos artigos que vi é reduzir a carga computacional da computação da solução.

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.