Conteúdo do Curso
Regressão Linear com Python
Regressão Linear com Python
Escolhendo as Variáveis
Em muitas tarefas, pode haver diversos atributos cuja utilidade é desconhecida. Felizmente, é possível treinar um modelo com todos eles, analisar quais não têm impacto significativo e, em seguida, re-treinar o modelo utilizando apenas os atributos relevantes.
Por que remover atributos do modelo?
Ao adicionar um atributo ao modelo que não possui relação com o alvo, ruído é introduzido, prejudicando a previsão. Quando há muitos atributos inúteis, o ruído se acumula, reduzindo ainda mais o desempenho do modelo.
Como saber se os atributos são bons ou ruins?
Como já mencionado, durante o treinamento, a classe OLS também calcula informações estatísticas. Entre outras análises, é realizado um teste t para determinar se cada atributo tem impacto significativo sobre o alvo. Os resultados do teste podem ser encontrados na tabela summary()
conforme mostrado abaixo:
import pandas as pd import statsmodels.api as sm file_link='https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/heights_two_feature.csv' df = pd.read_csv(file_link) # Open the file X,y = df[['Father', 'Mother']], df['Height'] # Assign the variables X_tilde = sm.add_constant(X) # Create X_tilde regression_model = sm.OLS(y, X_tilde).fit() # Initialize and train an OLS object print(regression_model.summary()) #Get the summary
O que nos interessa é o valor-p para cada variável.
Em resumo, quanto menor o valor-p, maior a confiança de que a variável é relevante.
Em estatística, é necessário definir o limite do valor de p, chamado de nível de significância. Geralmente, este valor é definido como 0,05 e, uma vez que o valor de p seja maior que esse nível de significância, considera-se que a variável não é impactante.
No entanto, na prática, variáveis com valor de p um pouco acima de 0,05 geralmente também melhoram o modelo. Portanto, é melhor testar o modelo com e sem essa variável, em vez de removê-la imediatamente, a menos que ela tenha um valor de p realmente alto (>0,4). Nesse caso, a variável pode ser removida com segurança.
O valor de p varia de 0 a 1, portanto, quando falamos de valor de p baixo, significa menor que 0,05, e valor de p alto geralmente significa maior que 0,3-0,5.
No nosso exemplo, obtivemos valores de p para a altura da mãe e para a constante de 0,087 e 0,051. Se removermos as variáveis com valor de p > 0,05, teremos o resultado abaixo (à esquerda).
Mesmo visualmente, podemos perceber que o modelo com a constante (à direita) é melhor, portanto, é preferível não removê-la do modelo.
É comum obter valores de p relativamente altos (0,05 a 0,2) para variáveis relevantes quando o conjunto de dados é pequeno. O valor de p indica o grau de confiança de que a variável é relevante, e é natural que, quanto mais instâncias tivermos, mais fácil será distinguir variáveis relevantes de irrelevantes. Suponha que você tenha dados mostrando que 9/10 das pessoas altas que você conhece comeram maçãs diariamente. Você pode ter certeza de que isso está relacionado? Mas e se fossem 9000/10000? Isso aumentaria sua confiança.
Como remover características indesejadas?
Basta remover a coluna relacionada à característica de X_tilde
. Isso pode ser feito com o seguinte código:
X_tilde = X_tilde.drop(___, axis=1)
Por exemplo, para remover as colunas 'const' e 'Mother', utilize:
X_tilde = X_tilde.drop(['Mother', 'const'], axis=1)
Em seguida, crie um novo objeto OLS utilizando o X_tilde
atualizado:
regression_model=sm.OLS(y, X_tilde)
1. Quais das variáveis você deve MANTER?
2. Escolha a afirmação INCORRETA.
Obrigado pelo seu feedback!