Maneira básica de colapsar variáveis ​​categóricas com muitos níveis?


58

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!


2
No meu comentário em stats.stackexchange.com/questions/230636/… , tenho uma longa lista de perguntas semelhantes aqui! Dê uma olhada ... Além disso, pesquise neste site com as palavras-chave "muitos níveis"; você encontrará muitas perguntas semelhantes, poucas boas respostas.
Kjetil b halvorsen

3
Voltarei a isso quando tiver tempo ... Enquanto isso, é um artigo muito relevante que parece responder à pergunta, em parte: epub.ub.uni-muenchen.de/12164/1/petry_etal_TR102_2011. pdf
kjetil b halvorsen

2
Eu acho que não entendi a pergunta, meu impulso natural seria realmente adicionar mais variáveis ​​fictícias para codificar as hierarquias (sem dúvida tantas hierarquias diferentes quanto você pode imaginar) e depois usar a regularização L1 / L2 para garantir que as categorias de nível superior são selecionados em vez das categorias de nível mais fino. o problema com majors etc é que há, obviamente, nenhuma similaridade (quando representado como um dummy) de modo a obter um bom modelo (que permite a generalização), você precisa fornecer essa similaridade
seanv507

11
@ssdecontrol, sim, meu exemplo prototípico é de números de telefone (ou outros IDs). Basicamente, a resposta correta quando perguntada sobre como modelar usando isso é - não!
Seanv507

2
Se você deseja inferir hierarquias, pode procurar esquemas de incorporação de redes neurais. Essencialmente, eles usam um conjunto reduzido de neurônios entre categorias e o restante do modelo, para que o modelo encontre projeções lineares de categorias semelhantes na solução. É essencialmente uma versão não linearizada de máquinas de fatoração. tensorflow.org/guide/embedding
seanv507

Respostas:


41

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 .

yij=μ+αi+ϵij,
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 ω

L=ωi<j|αiαj|.
α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 categoricallhe dará muitas referências para ler. Aqui estão alguns que eu olhei brevemente:

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:

Os métodos de redução na análise de regressão geralmente são projetados para preditores de métricas. Neste artigo, no entanto, métodos de encolhimento para preditores categoriais são propostos. Como aplicação, consideramos os dados do padrão de aluguel de Munique, onde, por exemplo, os distritos urbanos são tratados como um preditor categorial. Se variáveis ​​independentes são categoriais, são necessárias algumas modificações nos procedimentos de encolhimento usuais. Dois métodos baseados na para seleção de fatores e agrupamento de categorias são apresentados e investigados. A primeira abordagem é projetada para níveis nominais de escala, a segunda para preditores ordinais. Além de aplicá-los ao padrão de aluguel de Munique, os métodos são ilustrados e comparados em estudos de simulação.L1

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:

Gertheiss e Tutz 2010


11
E só depois de escrever tudo o que percebi que o @Kjetil deu um link para um dos artigos de Tutz já há uma semana ...
ameba diz Reinstate Monica

11
Obrigado por investigar a literatura sobre isso! Este é definitivamente um bom ponto de partida, especialmente tendo um nome para esta técnica ( "fusion") que eu possa procurar
shadowtalker

10

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.


11
Você já olhou para usar uma matriz de proximidade como matriz de distância para agrupar? stats.stackexchange.com/questions/270201/… ?
Keith

7

Zz1,...,zKYZImpact(Z)

Impact(zk)=E(Y | Z=zk)E(Y)

YYlogitEE

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).

  1. Daniele Micci-Barreca (2001). Um esquema de pré-processamento para atributos categóricos de alta cardinalidade em problemas de classificação e previsão. Boletim informativo da ACM SIGKDD Explorations , volume 3, edição 1, julho de 2001, páginas 27-32. https://doi.org/10.1145/507533.507538
  2. Codificadores de categoria. http://contrib.scikit-learn.org/categorical-encoding/index.html
  3. John Mount e Nina Zumel (2017). vtreat: um processador / condicionador 'data.frame' estatisticamente correto. Versão do pacote R 0.5.32. https://CRAN.R-project.org/package=vtreat
  4. Vetor de vitória (2017). vtreat. Repositório do GitHub em https://github.com/WinVector/vtreat
  5. Zumel, Nina e Mount, John (2016). vtreat: um processador data.frame para modelagem preditiva. 1611.09477v3, impressões eletrônicas ArXiv . Disponível em https://arxiv.org/abs/1611.09477v3 .
  6. http://www.win-vector.com/blog/tag/vtreat/

O que é o logit E? Você poderia compartilhar a fórmula?
Optimus Prime

@OptimusPrime logit E é o logit da expectativa
shadowtalker

OK. Portanto, nesse caso, Impacto (zk) = log (E (Y | Z = zk) -E (Y)) OU Impacto (zk) = log (E (Y | Z = zk)) - log (E (Y) )?
Optimus Prime

2
Esta é aprendizado supervisionado e terá ajustes complexos para reconhecer o número de graus de liberdade que estão sendo "roubados" de Y.
Frank Harrell

3
Com certeza - qualquer método que use Y para orientar como as categorias são tratadas para o preditor categórico estará sujeito a super adaptação e será difícil obter intervalos de incerteza com largura suficiente para serem precisos. Eu estava focado no aprendizado não supervisionado para que esses problemas não ocorram.
Frank Harrell

6

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.


Você gostaria de dar uma olhada na minha pergunta stats.stackexchange.com/q/383887/44368 ? Obrigado.
Hans

A pontuação ideal é o método descrito no slide 15 desta palestra ? É um pouco difícil procurar por esses termos, todos comuns em outros contextos.
shadowtalker

11
Eu tenho 0,85 de certeza que é #
Frank Harrell

Parece uma versão (melhor) da idéia de codificação de destino do aprendizado de máquina, por exemplo: stats.stackexchange.com/questions/398903/…
kjetil b halvorsen

2

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.


Isso é basicamente o que o @Wayne sugeriu (modelos de efeitos mistos ~ versão freqüentista dos modelos hierárquicos bayesianos) e o que eu sugeri no comentário para questionar. No entanto, o OP deseja inferir hierarquias.
seanv507

1

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:

Preocupo-me com a produção de categorias de nível superior que sejam coerentes com o meu resultado de regressão.

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.

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.