Target encoder
TLDR
Também conhecido como "mean encoding" ou "impact encoding", esta técnica é uma técnica de codifocação de variáveis qualitativas que utiliza estatísticas em relação a tal variável e a variável alvo (target) afim de reter o poder de predição.
Originalmente introduzido em 2001, por Daniele Micci-Barreca1 e melhorado por Florian Pargent et al. 2, este método de codificação se baseia no cômputo de estatística descritiva da variável alvo (target) condicionada ao valor de uma variável qualitativa (categórica). Ele pode ser utilizado para variáveis alvo do tipo qualitativa (binárias ou multiclasse) e do tipo quantitativa. Este tipo de codificação é bastante útil para variáveis com alto grau de cardinalidade. Isso resolve o problema existente no one-hot encoding, em que o número de vairáveis cresce linearmente ao número de valores possíveis da variável.
Variáveis alvo qualitativas (categóricas)
Variáveis alvo binárias
Para variáveis alvo binárias, a variável é codificada utilizando a seguinte equação:
em que S_i é a codificação para a categoria i, n_{iY} é o número de observações com Y=1 e categoria i, n_i é o número de observações com categoria i, n_Y é o número de observações com Y=1, n é o número de observações e \lambda_i é um fator de encolhimento para a categoria i, dado por:
em que m é um fator de suavização. Grandes valores para o fator de suavização darão mais peso para a média global.
Variáveis alvo multiclasse
Para variáveis alvo com mais de duas possíveis categorias, a variável é codificada de maneira similar a binária:
em que S_{ij} é a codificação para a categoria i e classe j, n_{iY_j} é o número de observações com Y=j e categoria i, n_i é o número de observações com categoria i, n_{Y_j} é o número de observações com Y=j, n é o número de observações e \lambda_i é um fator de encolhimento para a categoria i.
Variáveis quantitativas contínuas
Para variáveis alvo contínuas, a formuilação também é similar a da codificação para variáveis alvo binárias:
em que L_i é o conjunto de observações com a categoria i e n_i é o número de observações da categoria i.
Utilização da classe TargetEncoder no scikit-learn?
A implementação do TargetEncoder tem a seguinte assinatura:
Os argumentos mais importantes são:
categories: é a lista de categorias da variável a ser codificada. O valor padrão é'alto'. Nesse caso as categorias são determinadas de acordo com os dados de treinamento. Também pode-se inserir manualmente a lista de categorias.target_type: é o tipo da variável alvo. O valor padrão é'alto', em que o tipo é inferido de acordo com a variável de saída (y). Os valores possíveis são'continuous','binary','multiclass'.smooth: é o fator de suavização. O valor padrão é 'alto'. Neste caso osmooté determinado através de um estimador empírico de bayes.
Como a implementação do scikit-klearn internamente utiliza um esquema de ajuste cruzado para evitar que informações da função alvo vazem para a representação em tempo de treinamento, também temos o parâmetros cv, shuffle e random_state. Para mais informações, por favor, visite a documentação oficial.
A utilização desta classe é igual a outras classes de codificação do scikit-learn. Cria se um objeto de transformação, ajustam-se aos dados e depois temos um objeto ajustado que pode ser utilizado para transformar novos dados. A única diferença neste caso é que usar fit(X, y).transform(X) não é igual a fit_transform(X, y) porque um esquema de ajuste cruzado é usado no fit_transform para codificação. Se você utiliza-o dentro de um Pipeline ou dentro de um ColumnTransformer, não precisa se preocupar com isto.
Notas
- A implementação do
scikit-learnconsidera valores faltantes como uma nova categoria e utiliza as equações para cômputo da mesma forma que outras categorias. - Categorias não vistas no processo de treinamento são codificadas como a média da variável alvo.
-
Daniele Micci-Barreca. A preprocessing scheme for high-cardinality categorical attributes in classification and prediction problems. SIGKDD Explor. Newsl., 3(1):27–32, July 2001. URL: https://doi.org/10.1145/507533.507538, doi:10.1145/507533.507538. ↩
-
Florian Pargent, Florian Pfisterer, Janek Thomas, and Bernd Bischl. Regularized target encoding outperforms traditional methods in supervised machine learning with high cardinality features. Comput. Stat., 37(5):2671–2692, 2022. URL: https://doi.org/10.1007/s00180-022-01207-6, doi:10.1007/S00180-022-01207-6. ↩
Se você notar erros ou enganos nesta publicação, não hesite em me contatar pelo e-mail madsonddias@gmail.com e terei o maior prazer em corrigi-los imediatamente!