Hitters é uma base de dados que se refere a temporada entre 1986 e 1987, da liga principal de baseball dos Estados Unidos.Os dados são divididos em 20 tipos de informações sobre 322 jogadores.O interesse é saber quais das variáveis coletadas influenciam no salário de um jogador de baseball.
Poderiamos usar regressão Linear simples para resolver este problema, mas como a quantidade de variáveis é muito maior que o número de observações, a técnica de mínimos quadrados nesta situação pode não predizer com precisão e nem possuir uma interpretação ideal pro modelo.
Isso significa que muitas variáveis seriam ajustadas e o modelo ficaria super estimado, com uma variância infinita , sendo inviável o método dos mínimos quadrados, pois resultaria em um modelo inútil para a representação da realidade, apenas resultando em predições de seu próprio conjunto de dados.Com simples técnicas de restringir ou reduzir os coeficientes, resulta na redução significante da variância e assim em predições mais precisas, além disso o modelo resultante é mais facilmente interpretável.Quando o problema há o problema p>n existe tres métodos que podemos utilizar:
Seleção de um subconjunto de coeficientes: Identificar um conjunto de variáveis que possuem uma certa relação com a resposta e assim usar o método de mínimos quadrados.
Reduzir o valor dos coeficientes: Ajustamos o modelo com todas as variáveis, porém os coeficientes tendem a zero, reduzindo assim a variância dos dados. Esse método também é conhecido como regularização, e dependendo de qual tipo é usado, certos coeficientes podem chegar a zero.
Reduzir a dimensão: Ajustamos vários modelos com diferentes coeficiente mas com dimensão menor, aplicando o método de mínimos quadrados.
O foco do nosso trabalho é utilizar a Regularização, um método onde colocamos um determinado peso sobre nossos coeficientes, conseguindo minimizalos para encontrar um modelo adequado, por isso é natural que quanto maior o peso dado, menor os coeficientes.Existe tres tipos de regularização:Ridge, Lasso eHorseshoe.
library(ISLR)
library(glmnet)
Hitters<-na.omit(Hitters)
x<-model.matrix(Salary~., Hitters)[,-1]
y<-Hitters$Salary
grid<-10^seq(10, -2, length=100)
ridge.mod<-glmnet(x,y,alpha=0, lambda=grid)
plot(ridge.mod)
Escolhendo alguns lambdas como exemplo, esperamos que um lambda maior resulte em coeficientes menores.
ridge.mod$lambda[50]
## [1] 11497.57
coef(ridge.mod)[,50]
## (Intercept) AtBat Hits HmRun Runs
## 407.356050200 0.036957182 0.138180344 0.524629976 0.230701523
## RBI Walks Years CAtBat CHits
## 0.239841459 0.289618741 1.107702929 0.003131815 0.011653637
## CHmRun CRuns CRBI CWalks LeagueN
## 0.087545670 0.023379882 0.024138320 0.025015421 0.085028114
## DivisionW PutOuts Assists Errors NewLeagueN
## -6.215440973 0.016482577 0.002612988 -0.020502690 0.301433531
ridge.mod$lambda[60]
## [1] 705.4802
coef(ridge.mod)[,60]
## (Intercept) AtBat Hits HmRun Runs
## 54.32519950 0.11211115 0.65622409 1.17980910 0.93769713
## RBI Walks Years CAtBat CHits
## 0.84718546 1.31987948 2.59640425 0.01083413 0.04674557
## CHmRun CRuns CRBI CWalks LeagueN
## 0.33777318 0.09355528 0.09780402 0.07189612 13.68370191
## DivisionW PutOuts Assists Errors NewLeagueN
## -54.65877750 0.11852289 0.01606037 -0.70358655 8.61181213
lasso.mod<-glmnet(x,y,alpha=1, lambda=grid)
plot(lasso.mod)