Estou tentando entender como posso codificar variáveis categóricas usando estimativa de probabilidade, mas até agora tive pouco sucesso.
Todas as sugestões serão muito apreciadas.
feature-engineering
anão pequeno
fonte
fonte
Respostas:
Eu também estava aprendendo esse tópico, e foi o que encontrei:
Esse tipo de codificação é chamado de codificação de probabilidade , codificação de impacto ou codificação de destino
A ideia é codificar sua variável categórica com o uso da variável de destino (contínua ou categórica, dependendo da tarefa). Por exemplo, se você tiver uma tarefa de regressão, poderá codificar sua variável categórica com a média do destino. Para cada categoria, você calcula a média correspondente da meta (entre essa categoria) e substitui o valor de uma categoria por essa média.
Se você tiver uma tarefa de classificação, calcula a frequência relativa do seu objetivo em relação a cada valor de categoria.
Do ponto de vista matemático, essa codificação significa uma probabilidade do seu destino, condicional ao valor de cada categoria.
Se você fizer isso de uma maneira simples, como descrevi acima, provavelmente obterá uma estimativa tendenciosa. É por isso que na comunidade Kaggle eles costumam usar 2 níveis de validação cruzada. Leia este comentário por raddar aqui . O caderno correspondente está aqui .
A citação:
Outra implementação dessa codificação está aqui .
Na biblioteca R vtreat, eles implementam a codificação de impacto. Veja este post .
Na biblioteca CatBoost , existem várias opções para codificação de variável categórica, incluindo codificação de destino.
Ainda não existe essa codificação no sklearn.
fonte
A codificação de destino está agora disponível no sklearn através do pacote category_encoders.
Como observado por Josh no comentário acima.
fonte
A codificação de probabilidade ainda não está disponível no scikit learn. Você pode fazer isso criando um dicionário e, em seguida, execute uma função de substituição.
fonte