Como lidar com a diferença entre a distribuição do conjunto de teste e o conjunto de treinamento?

23

Penso que uma suposição básica de aprendizado de máquina ou estimativa de parâmetros é que os dados invisíveis vêm da mesma distribuição que o conjunto de treinamento. No entanto, em alguns casos práticos, a distribuição do conjunto de testes será quase diferente do conjunto de treinamento.

Digamos um problema de classificação múltipla em larga escala que tenta classificar as descrições de produtos em cerca de 17.000 classes. O conjunto de treinamento terá prévias de classe altamente distorcidas, de modo que algumas turmas possam ter muitos exemplos de treinamento, mas algumas poderão ter apenas alguns. Suponha que recebamos um conjunto de testes com rótulos de classe desconhecidos de um cliente. Tentamos classificar cada produto no conjunto de testes em uma das 17.000 classes, usando o classificador treinado no conjunto de treinamento. O conjunto de testes provavelmente teria distribuições de classes distorcidas, mas provavelmente muito diferentes das do conjunto de treinamento, pois elas podem estar relacionadas a diferentes áreas de negócios. Se as duas distribuições de classe forem muito diferentes, o classificador treinado pode não funcionar bem no conjunto de testes. Isso parece especialmente óbvio com o classificador Naive Bayes.

Existe alguma maneira baseada em princípios para lidar com a diferença entre o conjunto de treinamento e um determinado conjunto de testes para classificadores probabilísticos? Eu ouvi falar que o "SVM transdutivo" faz algo semelhante no SVM. Existem técnicas semelhantes para aprender um classificador com melhor desempenho em um determinado conjunto de testes? Em seguida, podemos treinar novamente o classificador para diferentes conjuntos de testes, conforme permitido neste cenário prático.

Fashandge
fonte

Respostas:

17

Se a diferença estiver apenas nas frequências relativas da classe nos conjuntos de treinamento e teste, eu recomendaria o procedimento EM introduzido neste documento:

Marco Saerens, Patrice Latinne, Christine Decaestecker: ajustando as saídas de um classificador para novas probabilidades a priori: um procedimento simples. Neural Computation 14 (1): 21-41 (2002) ( www )

Eu mesmo o usei e achei que funcionou muito bem (você precisa de um classificador que dê uma probabilidade de pertencer à classe).

Se a distribuição dos padrões dentro de cada classe mudar, o problema é conhecido como "mudança covariável" e há um excelente livro de Sugiyama e Kawanabe . Muitos dos artigos deste grupo estão disponíveis on-line, mas eu recomendo fortemente a leitura do livro também, se você conseguir uma cópia. A idéia básica é ponderar os dados de treinamento de acordo com a diferença de densidade entre o conjunto de treinamento e o conjunto de teste (para os quais não são necessários rótulos). Uma maneira simples de obter a ponderação é usar a regressão logística para prever se um padrão é retirado do conjunto de treinamento ou do conjunto de testes. A parte difícil está na escolha de quanto peso aplicar.

Veja também o belo post de Alex Smola aqui .

Dikran Marsupial
fonte
Muito obrigado por fornecer tantas dicas úteis!
Fashandge
não há problema, esse tipo de situação "fora do padrão" é realmente interessante, e a mudança covariável é uma área de pesquisa particularmente útil.
Dikran Marsupial
1
É bom saber isso. Embora "não padrão", é realista na prática.
Fashandge
1

Encontrei um excelente tutorial sobre adaptação de domínio que pode ajudar a explicar isso com mais detalhes: http://sifaka.cs.uiuc.edu/jiang4/domain_adaptation/survey/da_survey.html A única solução que não foi mencionada aqui é baseada no ADABOOST. Aqui está o link para o artigo original: http://ftp.cse.ust.hk/~qyang/Docs/2007/tradaboost.pdf A idéia básica é usar alguns dos novos dados de teste para atualizar o aprendizado dos dados de trem .Este artigo é a dica do iceburg sobre transferência de aprendizado - onde você pega o que sabe de uma tarefa e aplica-o a outra.

rentreg
fonte
1
Você poderia incluir alguns pontos de resumo principais do primeiro tutorial, em particular, caso o link fique inoperante ou sua localização mude? Temos um problema com "ligação rot" aqui onde o valor de algumas das nossas respostas mais velhos tem devido degradado para ligações de parada de trabalho, por isso é bom se as respostas podem ser tão auto-suficiente quanto possível
Silverfish