Quais técnicas estão disponíveis para recolher (ou agrupar) muitas categorias para algumas, com o objetivo de usá-las como uma entrada (preditora) em um modelo estatístico?
Considere uma variável como estudante universitário (disciplina escolhida por um estudante de graduação). É desordenado e categórico, mas pode potencialmente ter dezenas de níveis distintos. Digamos que eu queira usar major como preditor em um modelo de regressão.
O uso desses níveis como estão na modelagem leva a todos os tipos de problemas, porque existem tantos. Muita precisão estatística seria descartada para usá-los, e os resultados são difíceis de interpretar. Raramente estamos interessados em cursos específicos - é muito mais provável que nos interessemos por categorias amplas (subgrupos) de cursos. Mas nem sempre é claro como dividir os níveis em categorias de nível superior, ou mesmo quantas categorias de nível superior usar.
Para dados típicos, eu ficaria feliz em usar a análise fatorial, fatoração matricial ou uma técnica discreta de modelagem latente. Mas as principais são categorias mutuamente exclusivas, por isso hesito em explorar sua covariância para qualquer coisa.
Além disso, eu não me importo com as principais categorias por conta própria. Preocupo-me com a produção de categorias de nível superior que sejam coerentes em relação ao meu resultado de regressão . No caso de resultado binário, isso me sugere algo como análise discriminante linear (LDA) para gerar categorias de nível superior que maximizam o desempenho discriminativo. Mas o LDA é uma técnica limitada e parece dados sujos para mim. Além disso, qualquer solução contínua será difícil de interpretar.
Enquanto isso, algo baseado em covariâncias, como Análise de Correspondência Múltipla (MCA), parece-me suspeito neste caso, devido à dependência inerente entre variáveis fictícias mutuamente exclusivas - elas são mais adequadas para o estudo de várias variáveis categóricas, em vez de várias categorias do mesma variável.
editar : para ficar claro, trata-se de recolher categorias (não selecioná-las) e as categorias são preditores ou variáveis independentes. Em retrospectiva, esse problema parece ser um momento apropriado para "regularizá-los todos e deixar que Deus os resolva". Fico feliz em ver esta pergunta é interessante para tantas pessoas!
fonte
Respostas:
Se eu entendi corretamente, você imagina um modelo linear em que um dos preditores é categórico (por exemplo, diploma universitário); e você espera que, para alguns subgrupos de seus níveis (subgrupos de categorias), os coeficientes sejam exatamente os mesmos. Então, talvez os coeficientes de regressão para Matemática e Física sejam os mesmos, mas diferentes dos de Química e Biologia.
Em um caso mais simples, você teria um modelo linear de "ANOVA unidirecional" com um único preditor categórico: em codifico o nível da variável categórica (o categoria). Mas você pode preferir uma solução que reduz alguns níveis (categorias), por exemplo,i { α 1 = α 2 , α 3 = α 4 = α 5 .
Isso sugere que se pode tentar usar uma penalidade de regularização que penalizaria soluções com alfas diferentes. Um termo de penalidade que vem à mente imediatamente éIsso se assemelha ao laço e deve impor a dispersão das , que é exatamente o que você deseja: você deseja que muitos deles sejam zero. O parâmetro de regularização deve ser selecionado com validação cruzada.α i - α j ω
Eu nunca lidei com modelos assim e o que foi dito acima é a primeira coisa que me veio à mente. Então eu decidi ver se há algo assim implementado. Eu fiz algumas pesquisas no google e logo percebi que isso se chama fusão de categorias; procurar
lasso fusion categorical
lhe dará muitas referências para ler. Aqui estão alguns que eu olhei brevemente:Gerhard Tutz, Regressão para dados categóricos, ver pp. 175-175 no Google Livros . Tutz menciona os seguintes quatro artigos:
Land e Friedman, 1997, Fusão variável: um novo método de regressão de sinal adaptativo
Bondell e Reich, 2009, Seleção simultânea de fatores e níveis de colapso na ANOVA
Gertheiss e Tutz, 2010, Modelagem esparsa de variáveis explicativas categoriais
Tibshirani et al. 2005, a escassez e a suavidade através do laço fundido são relevantes, mesmo que não sejam exatamente as mesmas (trata-se de variáveis ordinais)
Gertheiss e Tutz 2010, publicado nos Annals of Applied Statistics, parece um artigo recente e muito legível que contém outras referências. Aqui está o seu resumo:
Gosto dos caminhos de solução do tipo Lasso, que mostram como os níveis de duas variáveis categóricas se fundem quando a força da regularização aumenta:
fonte
Eu lutei com isso em um projeto no qual estou trabalhando e, neste momento, decidi que realmente não há uma boa maneira de fundir categorias e, portanto, estou tentando um modelo hierárquico / de efeitos mistos em que meus equivalente ao seu maior é um efeito aleatório.
Além disso, em situações como essa, parece haver realmente duas decisões de fusão a serem tomadas: 1) como fundir as categorias que você possui quando se encaixa no modelo e 2) qual categoria fundida se torna "outra" onde, por padrão, incluirá qualquer novo majores que alguém sonha depois que você se encaixa no seu modelo. (Um efeito aleatório pode lidar com esse segundo caso automaticamente.)
Quando a fusão tem algum julgamento envolvido (em oposição a procedimentos totalmente automatizados), sou cético em relação à categoria "outro", que geralmente é um saco das categorias com poucas coisas nelas, em vez de qualquer tipo de agrupamento de princípios.
Um efeito aleatório lida com muitos níveis, agrupa dinamicamente ("extrai força de") níveis diferentes, pode prever níveis nunca antes vistos, etc. Uma desvantagem pode ser que a distribuição dos níveis quase sempre é considerada normal.
fonte
Existe uma implementação Python na biblioteca category_encoders [2].
Uma variante chamada "codificação de impacto" foi implementada no pacote R Vtreat [3] [4]. O pacote (e a codificação de impacto em si) é descrito em um artigo desses autores de 2016 [5] e em várias postagens de blog [6]. Observe que a implementação atual do R não manipula respostas multinomiais (categóricas com mais de 2 categorias) ou multivariadas (com valor vetorial).
fonte
Se você tiver uma variável independente auxiliar que é lógica para usar como âncora para o preditor categórico, considere o uso do algoritmo de pontuação ótima de Fisher, que está relacionado à sua análise discriminante linear. Suponha que você queira mapear a faculdade em uma única métrica contínua e suponha que uma âncora adequada seja uma pontuação de teste quantitativo de pré-admissão no SAT. Calcule a pontuação quantitativa média de cada major e substitua o major por essa média. Você pode facilmente estender isso para várias âncoras, criando mais de um grau de liberdade com o qual resumir as principais.
Observe que, diferentemente de algumas das sugestões anteriores, a pontuação ideal representa uma abordagem de aprendizado não supervisionada; portanto, os graus de liberdade (número de parâmetros estimados em relação a Y) são poucos e bem definidos, resultando em inferência estatística adequada (se houver erro padrão frequente, preciso, confiança) (compatibilidade) e valores-p).
Gosto muito da sugestão de penalização em https://stats.stackexchange.com/users/28666/amoeba @amoeba.
fonte
O artigo " Um esquema de pré-processamento para atributos categóricos de alta cardinalidade em problemas de classificação e predição " aproveita a estrutura hierárquica nos atributos de categoria em um esquema aninhado de 'Bayes empírico' em cada pool / nível para mapear a variável categórica em uma probabilidade de classe posterior, que pode ser usado diretamente ou como entrada em outros modelos.
fonte
Existem várias perguntas aqui, e algumas delas são feitas e respondidas anteriormente. Se o problema é que a computação está demorando muito: existem vários métodos para lidar com isso, consulte regressão em larga escala com matriz de recursos esparsos e o artigo de Maechler e Bates .
Mas pode ser que o problema esteja relacionado à modelagem, não tenho tanta certeza de que os métodos usuais de tratamento de variáveis preditivas categóricas realmente ofereçam orientação suficiente ao ter variáveis categóricas com muitos níveis, consulte este site para obter a tag
[many-categories]
. Certamente, existem muitas maneiras de tentar, de uma forma (se essa é uma boa ideia para o seu exemplo, não sei, você não nos disse sua aplicação específica), um tipo de variável (s) categórica (s) hierárquica (s), inspirada (s) pelo sistema usado na classificação biológica, consulte https://en.wikipedia.org/wiki/Taxonomy_(biology). Lá, um indivíduo (planta ou animal) é classificado primeiro em Domínio, depois Reino, Filo, Classe, Ordem, Família, Gênero e finalmente Espécie. Portanto, para cada nível da classificação, você pode criar uma variável de fator. Se seus níveis são, digamos, produtos vendidos em um supermercado, você pode criar uma classificação hierárquica começando com [gêneros alimentícios, utensílios de cozinha, outros], então os gêneros alimentícios podem ser classificados como [carne, peixe, legumes, cereais, ...] e em breve. Apenas uma possibilidade, que fornece uma hierarquia anterior, não especificamente relacionada ao resultado.Mas você disse:
Em seguida, você pode tentar o laço fundido , ver outras respostas neste segmento, que podem ser vistas como uma maneira de recolher os níveis em grupos maiores, inteiramente baseados nos dados, e não uma organização prévia dos níveis, como está implícito na minha proposta de hierarquia. organização dos níveis.
fonte