Seleção de recursos para o modelo "final" ao executar validação cruzada no aprendizado de máquina

76

Estou ficando um pouco confuso sobre a seleção de recursos e o aprendizado de máquina e fiquei imaginando se você poderia me ajudar. Eu tenho um conjunto de dados de microarray que é classificado em dois grupos e possui milhares de recursos. Meu objetivo é obter um pequeno número de genes (meus recursos) (10 a 20) em uma assinatura que, em teoria, poderei aplicar a outros conjuntos de dados para classificar otimamente essas amostras. Como não tenho muitas amostras (<100), não estou usando um conjunto de teste e treinamento, mas usando a validação cruzada Deixe um fora para ajudar a determinar a robustez. Eu li que é preciso executar a seleção de recursos para cada divisão das amostras, ou seja

  1. Selecione uma amostra como o conjunto de teste
  2. Nas amostras restantes, execute a seleção de recursos
  3. Aplique o algoritmo de aprendizado de máquina às amostras restantes usando os recursos selecionados
  4. Teste se o conjunto de testes está classificado corretamente
  5. Vá para 1.

Se você fizer isso, poderá obter genes diferentes a cada vez; então, como obter seu classificador genético ótimo "final"? ou seja, qual é o passo 6.

O que eu quero dizer com ótimo é a coleção de genes que qualquer outro estudo deve usar. Por exemplo, digamos que eu tenho um conjunto de dados de câncer / normal e desejo encontrar os 10 principais genes que classificarão o tipo de tumor de acordo com um SVM. Gostaria de conhecer o conjunto de genes mais os parâmetros SVM que poderiam ser usados ​​em outras experiências para ver se poderiam ser usados ​​como teste de diagnóstico.

danielsbrewer
fonte
Eu deveria dizer para a divulgação completa que eu já postei isso à lista bioconductor
danielsbrewer
Resuma os resultados dos biocondutores aqui?
Shane

Respostas:

39

Essa é uma pergunta muito boa que eu enfrentei ao trabalhar com dados de SNPs ... E não encontrei nenhuma resposta óbvia na literatura.

Independentemente de você usar o CV LOO ou K-fold, você terá recursos diferentes, pois a iteração de validação cruzada deve ser o loop mais externo, como você disse. Você pode pensar em algum tipo de esquema de votação que classificaria os n-vetores de recursos obtidos no seu LOO-CV (não se lembra do artigo, mas vale a pena conferir o trabalho de Harald Binder ou Antoine Cornuéjols ). Na ausência de uma nova amostra de teste, o que geralmente é feito é reaplicar o algoritmo ML a toda a amostra depois que você encontrar seus parâmetros validados cruzados ideais. Mas, procedendo dessa maneira, não é possível garantir que não haja ajuste excessivo (uma vez que a amostra já foi usada para otimização do modelo).

np

  1. Cutler, A., Cutler, DR, e Stevens, JR (2009). Tree-Based Methods, em análise de dados de alta dimensão em Cancer Research , Li, X. e Xu, R. (eds.), Pp. 83-101, Springer.
  2. Saeys, Y., Inza, I. e Larrañaga, P. (2007). Uma revisão das técnicas de seleção de recursos em bioinformática. Bioinformatics , 23 (19) : 2507-2517.
  3. Díaz-Uriarte, R., Alvarez de Andrés, S. (2006). Seleção gênica e classificação de dados de microarranjos usando floresta aleatória. BMC Bioinformtics , 7 : 3.
  4. Diaz-Uriarte, R. (2007). GeneSrF e varSelRF: uma ferramenta baseada na Web e um pacote R para seleção e classificação de genes usando floresta aleatória. BMC Bioinformatics , 8 : 328

Como você está falando do SVM, pode procurar o SVM penalizado .

chl
fonte
Obrigado por isso. Não sou particularmente vendido no SVM, apenas usando isso como exemplo. Então, se você usou árvores aleatórias, não precisa validar cruzadamente? Isso está certo.
Danielsbrewer 02/09/10
7
p
3
É importante que se chame Floresta Aleatória e não Árvores Aleatórias; você pode ter problemas com o Google.
1
+1, boa resposta e aleatória para mim - muito obrigado pelas referências em papel, especialmente pela revisão.
Ars
Com dados suficientes, não seria melhor realizar um conjunto de testes, executar loocv no conjunto de treinamento para otimizar os parâmetros do modelo, ajustar todo o conjunto de trens (chame isso de classificador "final") e avaliar o modelo final no conjunto de teste?
User0
40

Em princípio:

Faça suas previsões usando um único modelo treinado em todo o conjunto de dados (para que haja apenas um conjunto de recursos). A validação cruzada é usada apenas para estimar o desempenho preditivo do modelo único treinado em todo o conjunto de dados. É VITAL ao usar a validação cruzada que, em cada dobra, você repete todo o procedimento usado para ajustar-se ao modelo principal; caso contrário, pode acabar com um viés otimista substancial no desempenho.

Para ver por que isso acontece, considere um problema de classificação binária com 1000 recursos binários, mas apenas 100 casos, onde os casos e os recursos são puramente aleatórios, para que não haja relação estatística entre os recursos e os casos. Se treinarmos um modelo primário no conjunto de dados completo, sempre podemos obter um erro zero no conjunto de treinamento, pois há mais recursos do que casos. Podemos até encontrar um subconjunto de recursos "informativos" (que são correlacionados por acaso). Se, em seguida, executarmos a validação cruzada usando apenas esses recursos, obteremos uma estimativa de desempenho melhor do que a adivinhação aleatória. O motivo é que, em cada dobra do procedimento de validação cruzada, há algumas informações sobre os casos retidos usados ​​para teste, pois os recursos foram escolhidos porque eram bons para prever, todos eles, incluindo aqueles mantidos. Obviamente, a verdadeira taxa de erro será 0,5.

Se adotarmos o procedimento adequado e executar a seleção de recursos em cada dobra, não haverá mais informações sobre os casos retidos na escolha dos recursos usados ​​nessa dobra. Se você usar o procedimento adequado, nesse caso, obterá uma taxa de erro de cerca de 0,5 (embora isso varie um pouco para diferentes realizações do conjunto de dados).

Bons papéis para ler são:

Christophe Ambroise, Geoffrey J. McLachlan, "Viés de seleção na extração de genes com base em dados de expressão de genes de microarray", PNAS http://www.pnas.org/content/99/10/6562.abstract

que é altamente relevante para o PO e

Gavin C. Cawley, Nicola LC Talbot, "Sobre adaptação na seleção de modelos e viés de seleção subsequente na avaliação de desempenho", JMLR 11 (Jul): 2079-2107, 2010 http://jmlr.csail.mit.edu/papers /v11/cawley10a.html

o que demonstra que a mesma coisa pode ocorrer facilmente na seleção de modelos (por exemplo, ajustando os hiperparâmetros de um SVM, que também precisam ser repetidos em cada iteração do procedimento CV).

Na prática:

Eu recomendaria usar o Bagging e o erro fora da bolsa para estimar o desempenho. Você obterá um modelo de comitê usando muitos recursos, mas isso é realmente uma coisa boa. Se você usar apenas um único modelo, será provável que você ajuste demais o critério de seleção de recurso e termine com um modelo que fornece previsões mais ruins do que um modelo que usa um número maior de recursos.

O livro de Alan Millers sobre seleção de subconjuntos em regressão (monografias de Chapman e Hall sobre estatística e probabilidade aplicada, volume 95) fornece um bom conselho (página 221) de que se o desempenho preditivo é a coisa mais importante, não faça nenhuma seleção de recurso , basta usar a regressão de cumeeira. E isso está em um livro sobre seleção de subconjuntos !!! ; o)

Dikran Marsupial
fonte
17

Para adicionar ao chl: Ao usar máquinas de vetores de suporte, um método de penalização altamente recomendado é a rede elástica. Esse método reduzirá os coeficientes em direção a zero e, em teoria, retém os coeficientes mais estáveis ​​do modelo. Inicialmente, era usado em uma estrutura de regressão, mas é facilmente estendido para uso com máquinas de vetores de suporte.

A publicação original : Zou e Hastie (2005): Regularização e seleção de variáveis ​​via rede elástica. JRStatist.Soc. B, 67-2, pp. 301-320

Rede elástica para SVM : Zhu & Zou (2007): Seleção de Variáveis ​​para a Máquina de Vetores de Suporte: Tendências em Computação Neural, capítulo 2 (Editores: Chen e Wang)

melhorias na rede elástica Jun-Tao e Ying-Min (2010): uma rede elástica aprimorada para classificação de câncer e seleção de genes: Acta Automatica Sinica, 36-7, pp.976-981

Joris Meys
fonte
9

Na etapa 6 (ou 0), você executa o algoritmo de detecção de recurso em todo o conjunto de dados.

n1n

Aniko
fonte
Acho que ainda há um problema de generalização ao usar a mesma amostra (1) para avaliar o desempenho da classificação / previsão do classificador enquanto ajusta seus parâmetros (eventualmente, com a seleção de recursos) e (2) usa suas previsões em todo o conjunto de dados. Na verdade, você está quebrando o controle exercido na sobrecapagem que foi elaborada usando a validação cruzada. Hastie et al. forneça uma boa ilustração das armadilhas do currículo, esp. wrt. seleção de características, em seu livro de ESL, § 7.10.2 na 2ª edição.
chl
@chl: quem disse algo sobre parâmetros de ajuste? Se coisas adicionais forem executadas, elas deverão ser repetidas também durante a validação cruzada. Modificar claramente seu algoritmo até obter boas taxas de erro com validação cruzada é "trapaça". BTW, eu concordo que a validação cruzada, especialmente a exclusão única, não é tão boa assim.
Aniko
Não, não é trapaça, já que o CV mostra a aproximação de como o algoritmo se comportará em novos dados. Você só precisa ter certeza de que não optou por algo baseado em todo o conjunto (isso é um vazamento de informações sobre a estrutura do conjunto completo, para que ele possa influenciar imediatamente todas as partes do trem).
@mbq - Ankino está correto, ajustar seu modelo para minimizar uma estatística de CV está "trapaceando" e a estatística de CV do modelo final terá um viés otimista substancial. A razão para isso é que a estatística CV tem uma variação não desprezível (como é avaliada em um conjunto finito de dados) e, portanto, se você otimizar diretamente a estatística CV, poderá ajustá-la em excesso e acabar com um modelo que generaliza menos bem do que o que você começou. Para uma demonstração disso, em um contexto de aprendizado de máquina, consulte jmlr.csail.mit.edu/papers/v11/cawley10a.html Solução: use XVAL aninhado
Dikran Marsupial,
1

É assim que seleciono os recursos. Suponha que, com base em determinado conhecimento, existem dois modelos a serem comparados. O modelo A usa os recursos no.1 a não. 10. O modelo B usa no.11 a não. 20. Vou aplicar o LOO CV ao modelo A para obter seu desempenho fora da amostra. Faça o mesmo no modelo B e compare-os.

FMZ
fonte
-1

Não tenho certeza sobre problemas de classificação, mas, no caso de seleção de recursos para problemas de regressão, Jun Shao mostrou que o CV de licença individual é assintoticamente inconsistente , ou seja, a probabilidade de selecionar o subconjunto adequado de recursos não converge para 1, pois o número de amostras aumenta. Do ponto de vista prático, Shao recomenda uma validação cruzada de Monte-Carlo ou um procedimento de deixar muitos de fora.

shabbychef
fonte
Oh meu, mais uma vez; você leu o título deste artigo?
2
Ok, para deixar claro - não estou dizendo que LOOCV é uma boa idéia para um grande número de objetos; obviamente não é, mas Shao não é aplicável aqui. De fato, na maioria dos casos, as regras para LMs não são válidas para ML.
1
Também é questionável se os resultados assintóticos são úteis quando se olha para conjuntos de dados com um grande número de recursos e comparativamente poucos padrões. Nesse caso, é provável que a variação do procedimento seja de maior importância prática do que viés ou consistência. O principal valor do LOOCV é que, para muitos modelos, ele pode ser implementado com despesa computacional desprezível; portanto, embora tenha uma variação mais alta do que a de bootstrap, pode ser a única abordagem viável dentro do orçamento computacional disponível. É por isso que eu o uso, mas uso outra coisa para avaliar o desempenho!
Dikran Marsupial