Pular para o conteúdo principal

Exercícios de Machine Learning Supervisionado

Identificar a variável dependente:

Variável dependente é a variável que queremos prever, ou seja, a variável que queremos explicar. Ela é representada por Y.

  1. Variável dependente métrica (aderência dos resíduos a normalidade): Modelos de regressão simples e múltipla MQO;
  2. Variável dependente qualitativa: Modelos de regressão logística binaria e multinomial;
  3. Variável dependente com valores métricos, discretos e não negativos, para dada exposição (contagem): Modelos de regressão para dados de contagem;

MQO: Mínimos quadrados ordinários

Avaliar 3 pressupostos:

  1. Aderência dos resíduos a normalidade;
  2. Multicolinearidade;
  3. Heterocedasticidade (indicio de variáveis omitidas).;

Desejamos, que os resíduos estejam aderentes a função normal, ausência de multicolinearidade e ausência de Heterocedasticidade. Sendo necessário, podemos aplicar a transformação de Box-Cox na variável dependente para normalizar os resíduos e corrigir algum aspecto do modelos.

Avaliando multicolinearidade​

Multiplicação de variáveis independentes, que são correlacionadas, podem causar problemas de multicolinearidade.

Analise do coeficiente de correlação de Pearson entre as variáveis (Matriz de correlação de Pearson);

Se tem variáveis categóricas precisa passar pelo processo de dummizacão.

Avalidando adereência dos resíduos a normalidade​

Utilizamos o teste de Shapiro-Francia para avaliar a aderência dos resíduos a normalidade. Se o p-value for menor que a significância, aceitamos a hipótese nula de que os resíduos são normalmente distribuídos.

from statstests.tests import shapiro_francia
teste_sf = shapiro_francia(reg.resid)
alpha = 0.05 # nível de significância do teste
if teste_sf['p-value'] > alpha:
print('Não se rejeita H0 - Distribuição aderente à normalidade')
else:
print('Rejeita-se H0 - Distribuição não aderente à normalidade')

Para fazer a variável dependente se adequar a normalidade, podemos aplicar a transformação de Box-Cox.

Y_boxcox = (Y_i^λ - 1) / λ

Olhar o p-value de cada variável, se for maior que a significância, precisamos remover essas variares (não possuem significância estatística), para isso podemos utilizar o método stepwise. O método stepwise é um método de seleção de variáveis que seleciona as variáveis que mais contribuem para o modelo, entregando o melhor modelo possível.

Pode acontecer qu mesmo depois de aplicar a transformação de Box-Cox, os resíduos não se adequarem a normalidade. Nesse caso, podemos melhorar a base de dados (maior numero de amostras, mais variáveis preditoras relevantes e etc) ou utilizar outros tipos de modelagem (arvores de decisão, redes neurais, etc).

Avaliando Heterocedasticidade​

Para avaliar a heterocedasticidade, podemos utilizar o teste de Breusch-Pagan. Se o p-value for menor que a significância, aceitamos a hipótese nula de que os resíduos são homocedásticos.

Heterocedasticidade é a variância dos resíduos que não é constante. Fazendo com que os resíduos sejam mais dispersos em uma parte do gráfico e menos dispersos em outra parte (formato de cone).

A transformação de Box-Cox também pode ser utilizada para corrigir a heterocedasticidade.

Com a transformação de Box-Cox, podemos corrigir a heterocedasticidade e a aderência dos resíduos a normalidade.

Modelos de regressão logística binaria​

Modelo de regressão logística binária é utilizado quando a variável dependente é binária (0 ou 1, evento ou não evento).

O cutoff é o ponto de corte que separa as classes da variável dependente em eventos e não eventos. Mudar um cutoff muda a sensitividade, especificidade e acurácia do modelo.

Para avaliar o modelo sem depender do cutoff, podemos utilizar a curva ROC (Receiver Operating Characteristic). A curva ROC é um gráfico que mostra a relação entre a sensitividade e a especificidade do modelo. Para cada cutoff, temos um par de valores de sensitividade e especificidade.

Curva ROC

A área sob a curva ROC (AUC) é um indicador da qualidade do modelo. Quanto maior a AUC, melhor o modelo.

A métrica de avaliação de coeficiente de Gini às vezes é utilizada como uma métrica de avaliação alternativa para a AUC e as duas medidas estão estreitamente relacionadas. O coeficiente de Gini é calculado como o dobro da área entre a curva ROC e a diagonal, ou como Gini = 2AUC – 1.

O odds ratios serve para avaliar a relação entre as variáveis independentes e a variável dependente. O odds ratio é a razão entre a chance de um evento ocorrer e a chance de um evento não ocorrer. Se o odds ratio for maior que 1, a variável independente aumenta a chance do evento ocorrer. Se o odds ratio for menor que 1, a variável independente diminui a chance do evento ocorrer. Podemos saber o quanto a variável independente aumenta ou diminui a chance do evento ocorrer através do odds ratio.

Calculo o predict com todos os valores constantes, exceto em uma categoria, para saber o quanto a variável independente aumenta ou diminui a chance do evento ocorrer através do odds ratio.

chance1 = p1 / (1 - p1)
chance2 = p2 / (1 - p2)
odds_ratio = chance1 / chance2

Então em média a chance de um evento ocorrer é odds_ratio vezes maior ao mudar a variável independente de x para y.

Modelos para dados de contagem​

Modelos para dados de contagem são utilizados quando a variável dependente é uma contagem de eventos. Acidentes por semana, número de vendas por dia, número de ligações por hora, etc.

Modelos para dados de contagem são modelos de regressão que se adéquam a distribuição de Poisson ou binominal negativa. Para saber qual devemos olhar para a superdistensão dos dados. Se a variância for maior que a média, utilizamos a distribuição binomial negativa. Se a variância for igual a média, utilizamos a distribuição de Poisson.

  • Poisson: Média = Variância
  • Binomial Negativa: Variância >> Média

Avaliar também se existe inflação de zeros, que é quando a variável dependente tem muitos zeros. Se a variável dependente tem muitos zeros, podemos utilizar modelos de zero inflado. Para avaliar a inflação de zeros, podemos utilizar a tabela de frequências da variável dependente, para confirmar estaticamente também podemos utilizar o teste de Vuong, que compara o modelo de Poisson com o modelo de zero inflado.

vt = vuong_test(modelo_zip, modelo_poisson)
if vt.pval <= 0.05:
print("H1: Indicates inflation of zeros at 95% confidence level")
else:
print("H0: Indicates no inflation of zeros at 95% confidence level")

Parte dos zeros são estruturais devido ao componente dicotômico da variável dependente, ou seja, a probabilidade de um evento ocorrer ou não o evento.

Separar as variáveis provenientes do componente de contagem e as variáveis provenientes do componente dicotômico.

Comparar o Log-Likelihood de cada modelo, para saber qual é o melhor modelo. Quanto maior o Log-Likelihood, melhor o modelo.

Log-Likelihood

Para saber mais​