• Português
  • English
  • Español
  • KS, AUC e H-measure: uma comparação no contexto de crédito

    Por: em 21 de dezembro de 2017

    Existem vários cenários que desejamos determinar a ocorrência de um evento binário em determinadas circunstâncias, por exemplo, podemos estar interessados em saber se uma pessoa possui diabetes com base em seus sintomas, ou se uma pessoa irá comprar um produto numa loja online dado seu histórico de consumo. Várias situações podem se encaixar nessa estrutura e o que deseja-se fazer é desenvolver um modelo que seja capaz de prever o estado desse evento.

    Um exemplo clássico de evento binário é o de previsão de bons e maus pagadores, assunto central no mercado de crédito. Basicamente queremos construir uma função de score, uma função que ordene os requerentes de crédito em termos do seu risco de entrar em default. Bons pagadores possuem pontuação mais alta que pagadores ruins, e existe um valor $\tau$ (threshold) que separa os dois grupos.

    As medidas mais convencionais para determinar a qualidade desses classificadores são o teste de Komogrov-Smirnov e a AUC. O problema com essas medidas é que tipicamente é difícil de se estabelecer um peso de classificação incorreta para cada uma das classes, ou só sabemos o verdadeiro peso após a própria classificação. Ainda quando é possível estabelecer esse peso, ele não é válido para comparação entre classificadores. O que vamos trabalhar nessa postagem é uma alternativa denominada medida H [4] desenvolvida por David J. Hand.

    A medida H permite que se estabeleça uma incerteza nos pesos de classificação incorreta, uma distribuição com mais ou menos peso nas regiões mais interessantes. Além disso a medida H se torna independente da performance individual de cada classificador estabelecendo um patamar de comparação.

    Teste de Kolmogorov-Smirnov (KS)

    O teste de Kolmogorov-Smirnov, mais conhecido como KS, é uma medida de quão boa é a discriminação de seu modelo, isto é, quão fácil seu modelo consegue separar as distribuições de bons e maus. Como normalmente estamos tentando construir uma função de score que possua um threshold ótimo o KS fornece um valor de quão distantes está a CDF (cumulative distribution function) empírica da CDF real.
    A CDF empírica é definida como [1, 2]
    $$ F_n(x) = \frac{1}{n} \sum^{n}_{i=1} I_{[-\infty, x]}(X_i) $$

    Em que $ I_{[-\infty, x]}(X_i)$ é a função indicadora.

    $$ I_{[a, b]}(x) = \left\{ \begin{array}{ll} 1 & \mbox{se } x \in [a,b] \\ 0 & \mbox{se } x \notin [a,b] \end{array} \right. $$

    Se escrevemos a CDF real como $F(x)$ a distância KS é definida como
    $$ D_n =\operatorname*{sup}_{x} |F_n(x) – F(x)|$$

    O teste de Komogorov-Smirnov é uma alternativa extremamente simples e rápida porém não distingui os erros em cada uma das classes.

    Área sob a Receiver operating characteristic curve (AUC)

    A AUC (area under the curve) também é uma medida de discriminação entre as classes porém ela leva em conta as taxa de verdadeiros positivos e falsos positivos.

    Denominando nossa função de score como $f(x)$, podemos estabelecer um threshold $\tau$ em que classificamos todos os exemplo abaixo do threshold como maus e acima como bons. A taxa de verdadeiros positivos (TP para true positive) é a razão entre os exemplos corretamente classificados como bons e o total real de bons exemplos, a taxa de falsos positivos (FP para false positive) é a razão entre a o número de exemplos incorretamente classificados com bons e o total real de exemplos negativos.

    Podemos representar essas duas quantidades como funções do threshold: $TPR(\tau)$ (true positive rate) e $FPR(\tau)$ (false positive rate) [5].

    A curva ROC é o gráfico de $TPR(\tau) \times FPR(\tau)$ parametrizado por $\tau \in (-\infty, \infty)$.

    Intuitivamente podemos definir a AUC como

    $$ AUC = \int^{\infty}_{-\infty} TPR(\tau)FPR(\tau) d\tau $$

    Um exemplo as respectivas curvas ROC e AUC para regressão logística e random forest são mostradas abaixo.

    Um exemplo de ROC e AUC que podemos fazer é ajustar uma regressão logística. Utilizamos aqui o conjunto de dados Give me some credit [3]

    IMAGEM:(roclr.png)

    A linha pontilhada vermelha representa um classificador completamente aleatório que possui exatamente as mesma taxas de verdadeiros positivos e falsos positivos para qualquer valor de $\tau$. Qualquer modelo que se sobrepõe a essa linha pontilhada é tão ruim quanto o lançamento de uma moeda honesta. A linha azul é a própria ROC cuja a área sob foi definida acima.

    H-measure

    Vamos novamente definir nossa função de score como $f(x)$ e a taxa de falsos negativos como $FNR(\tau)$. Para a medida H é necessário também estabelecer os priors de cada classe $\pi_0$ e $\pi_1$ em que os subscritos 0 e 1 indicam, no nosso, exemplo maus e bons pagadores respectivamente.

    Para essa análise utilizamos os priors empíricos, que são exatamente as frações de exemplos em cada classe no conjunto de treinamento.

    Utilizaremos $c_0$ e $c_1$ para os custos de cada classe, vamos supor também que $c_0, c_1 \in ℝ^+$.

    A partir das definições acima podemos definir uma função custo $Q$ que representa a penalidade de todas as classificações incorretas.

    $$ Q(\tau, c_0, c_1) = c_0\pi_0FNR(\tau) + c_1 \pi_1 FPR(\tau)$$
    $$ Q(\tau, c_0, c_1) = c_0\pi_0(1- TPR(\tau)) + c_1 \pi_1 FPR(\tau)$$

    O motivo pelo qual escrevemos a função custo como função do $TPR$ é para utilizar a mesma estrutura da curva ROC.

    Obviamente não faz sentido colocar o threshold nem muito alto nem muito baixo, dessa forma muitos exemplos são classificados incorretamente. Existe, então, uma escolha ótima de threshold que minimiza a função $Q$ ponderando os custos para cada classe. Esse threshold ótimo pode ser escrito como

    $$ T(c_0, c_1) =\operatorname*{arg\,min}_{\tau} (c_0\pi_0FNR(\tau) + c_1 \pi_1 FPR(\tau))$$

    Como a determinação do threshold ótimo é o mesmo para qualquer par de valores na forma $(kc_0, kc_1)$ é conveniente realizar uma mudança de variáveis de forma que $T$ dependa apenas da razão entre os custos. Veremos nas próximas seções que podemos relacionar essa grandeza com o spread e o LGD de uma típica operação no contexto de crédito.

    Fazendo

    $$ c=\frac{c_0}{c_0 + c_1} \quad, \quad b = c_0 + c_1$$

    $T$ só depende de c:

    $$T(c) =\operatorname*{arg\,min}_{\tau} (c\pi_0FNR(\tau) + (1-c)\pi_1 FPR(\tau)) $$

    A função custo passa a ser

    $$ Q(\tau, c, b) = [c\pi_0(1- TPR(\tau)) + (1-c)\pi_1 FPR(\tau)]b$$

    Até então todo esse procedimento não fornece nenhum ganho substancial em relação às outras medidas, inclusive porque a função $Q$ tem os custos de classificação definidos.

    A etapa que distingui a medida H das outras é introduzindo uma função peso $u(c)$, dessa forma podemos integrar a função custo ponderando pelas regiões em que desejamos que tenha mais peso. Tipicamente utilizaremos distribuições de probabilidade no intervalo $[0,1]$.
    Olhando com mais atenção para as variáveis $c$ e $b$ vemos que
    $$ \operatorname*{lim}_{c_0 \rightarrow \infty} c = \operatorname*{lim}_{c_0 \rightarrow \infty} \frac{c_0}{c_0 + c_1} = 1$$

    $$ \operatorname*{lim}_{c_1 \rightarrow \infty} c = \operatorname*{lim}_{c_1 \rightarrow \infty} \frac{c_0}{c_0 + c_1} = 0$$

    A partir disso podemos ver que o intervalo $[0,0.5]$ representa a região em que os custo classificação incorreta da classe 1 é maior que o da classe 0, no intervalo $[0.5,1]$ a situação se inverte, classificar incorretamente um exemplo da classe 0 é pior que o da classe 1.

    Como exemplo podemos utilizar a distribuição Beta como função custo. A distribuição Beta é particularmente interessante por dois motivos: sua CDF é fácil de ser calculada e os seus parâmetros a e b poderão ser relacionados diretamente com a razão dos custos de classificação.

    IMAGEM(betacusto.png)

    A partir da função peso e da função custo podemos definir o custo de geral de classificação incorreta L.

    $$ L = \int^1_0 Q(T(c), b, c)u(c)dc $$

    Notemos que a função custo é calculada sempre no threshold ótimo para cada peso. Como a função $Q$ pode possuir um valor arbitrário é interessante normalizar o valor de $L$.

    $$L_{MAX} = \pi_0 \int^{\pi_1}_0 cu(c)dc + \pi_1 \int^{1}_{\pi_1} (1-c)u(c)dc $$

    A medida H pode, então, ser definida como

    $$ H = 1 – \frac{L}{L_{MAX}}$$

    A subtração de 1 é porque esperamos que classificadores muito bons tenham uma medida H alta, porém, exatamente por essa característica, eles possuem custos de classificação incorreta muito baixos.

    Exemplo de crédito

    A medida H é particularmente interessante para o cenário de crédito pelo fato de que classificar um mau pagador incorretamente é muito mais custoso que não fornecer crédito para um bom pagador.

    Podemos estabelecer uma razão de cobertura, isto é, quantos bons exemplos são necessários para suprir um mau, dessa forma podemos estabelecer nossa razão entre os pesos. Essa razão pode ser aproximada fazendo o mesmo raciocínio para o spread e o LGD, utilizando $\frac{spread}{LGD}$ como uma primeira estimativa.

    Como na medida H não estabelecemos custos bem definidos essa razão fica traduzida na massa das distribuições contidas nos intervalos $[0,0.5]$ e $[0.5,1]$. Se ainda assim for necessário que a razão entre os pesos seja bem definida podemos utilizar como função de peso por uma distribuição delta.

    Conclusão

    Tanto o teste de Kolmogorov-Smirnov quanto a AUC são medidas interessantes por serem amplamente difundidas e podem ser usadas, com certa validade, para comparar diversos modelos dada sua popularidade. Porém, a medida H introduz uma nova forma de olhar para classificadores binários e permite uma análise de performance muito mais voltada para o contexto de cada problema, claramente é muito mais problemático errar o diagnóstico de uma determinada doença ou permitir a aprovação de um mau pagador do que diagnosticar alguém sem a doença ou não fornecer crédito.

    Esses exemplos mostram como a medida H pode melhorar a comparação entre classificadores especificando em que cenário eles melhores se aplicam. A discussão completa sobre as vantagens e comparações da medida H podem ser encontradas no artigo original [4].

    Referências

    [1] Teste Kolmogorov-Smirnov, https://pt.wikipedia.org/wiki/Teste_Kolmogorov-Smirnov, 19 de Dezembro de 2017.

    [2] Teste Kolmogorov-Smirnov, http://www.portalaction.com.br/inferencia/62-teste-de-kolmogorov-smirnov, 19 de Dezembro de 2017.

    [3] Give me some credit, https://www.kaggle.com/c/GiveMeSomeCredit, 19 de Dezembro de 2017.

    [4] Hand, D.J. Mach Learn (2009) 77: 103. https://doi.org/10.1007/s10994-009-5119-5

    [5] Murphy, K. P. (2012). ROC curves and all that in Machine learning: a probabilistic perspective. MIT press.

    21 de dezembro de 2017

    Filtre por mês

    Filtre por autor