Como lidar com fatores com níveis raros na validação cruzada?

9

Suponha que, em uma análise de regressão em R, eu tenha uma variável independente do tipo de fator com 3 níveis no meu conjunto de dados de trem. Mas no conjunto de dados de teste essa mesma variável de fator tem 5 níveis. Portanto, não posso prever os valores de resposta para o conjunto de dados de teste. O que deve ser feito neste caso?

JRK
fonte
1
Isso não é principalmente sobre como usar R. e, se fosse apenas sobre como usar R, seria fora de tópico aqui. Há uma boa pergunta estatística aqui, no entanto.
gung - Restabelece Monica
1
Você pode adicionar alguns dados de amostra? Será mais fácil abordar dessa maneira.
Andrew Owens

Respostas:

8

Como um primeiro pensamento, isso significa que pelo menos o seu conjunto de treinamento não é representativo para os dados do aplicativo. Se o conjunto de testes é representativo é uma pergunta que você deve IMHO pensar com muito cuidado. Nesse contexto, também é importante descobrir se essas classes ausentes são um problema do conjunto de treinamento específico muito pequeno ou se essa é uma característica geral do problema / tarefa / aplicativo. Ou seja, se novas classes que nunca foram encontradas antes aparecerão o tempo todo.

Em princípio, vejo duas possibilidades de lidar com essa situação:

  • Diga que o conjunto de treinamento com certeza não é representativo e solicite mais dados, particularmente dados das classes ausentes. Isso faz sentido caso você chegue à conclusão de que o problema está no conjunto de treinamento específico, não nas características gerais do aplicativo.

  • De qualquer forma, sabendo que os dados de treinamento perdem aulas, considero usar um classificador de uma classe. Ou seja, um classificador que trata cada classe independentemente de qualquer outra classe possível. Idealmente, um classificador de uma classe deve retornar "classe desconhecida" para os casos de teste de classes que não estão disponíveis para treinamento. Para classificadores de uma classe, testar essa "rejeição" de casos pertencentes a classes verdadeiramente desconhecidas realmente faz sentido.


editar o comentário de wrt @ gung: Suponho que a divisão de trem / teste seja corrigida por algum motivo que se espera que seja bom .

cbeleites descontentes com o SX
fonte
Faria sentido particionar seus dados em cada nível e depois combiná-los nas dobras? Por exemplo, X1 tem 2 níveis com 90 e 10 dados; você poderia particionar os 10 em 10 singletons e os 90 em 10 conjuntos de 9, depois combinaria um conjunto de cada um para formar cada uma das suas 10 dobras para o CV. Foi isso que me veio à mente quando li o Q, mas não parece que você esteja sugerindo isso. Esta é uma solução válida? (Eu poderia perguntar como um novo Q, se você preferir.)
gung - Restabelecer Monica
@ung: Acho que logicamente é uma pergunta separada, sim. Também vejo uma grande diferença principal entre o conjunto de treinamento que não abrange todas as classes e garante que todas as classes de um determinado conjunto de dados pequeno apareçam nas divisões de treinamento e teste (= estratificação).
cbeleites descontente com SX