More Related Content More from Nagi Teramo (20) 5分でわかるかもしれないglmnet7. パラメータ計算
• パラメーター推定のアルゴリズム
–Coordinate Descent
• 詳細
–Friedman, J., Hastie, T. and Tibshirani,
R. (2008) Regularization Paths for
Generalized Linear Models via
Coordinate Descent, Journal of
Statistical Software, Vol. 33(1), 1-22
Feb 2010
–http://www.jstatsoft.org/v33/i01/
7
9. データの取得
• irisじゃつまらないので、 UCI machine learning
repositoryからワインデータ取得
9
library(dplyr)
#ワインデータの読み込み(ダウンロード)
URL <- "http://archive.ics.uci.edu/ml/machine-learning-
databases/wine-quality/winequality-white.csv"
df <- read.csv(URL, sep = ";", stringsAsFactor=FALSE)
#ワインの質(quality)が5, 6のものだけ残して,0,1化する
wine <- df %>%
filter(quality==5|quality==6) %>%
mutate(quality=quality-5)
11. glmとの比較(2クラス分類)
11
#いちいち行列に変換する必要がある
x <- wine %>%
select(residual.sugar, sulphates, alcohol) %>%
as.matrix
y <- wine %>% select(quality) %>% unlist
#glmと同じ結果を出させる
#lambda単一の値は非推奨(らしい)が動く…
#lamdbaに複数入れておいて、predictの引数をs=0にするでもOK
wine_glmnet <- glmnet(x, y, family=“binomial”, lambda=0)
quality_glmnet <- predict(wine_glmnet, newx=x, type=“class”)
table(wine$quality, quality_glmnet)
※glmnetでの答え(混同行列)
※愛の鞭なしでglmと一致
16. みんな大好きirisで
16
x <- as.matrix(iris[,-5])
y <- iris[,5]
iris_cv <-
cv.glmnet(x, y, family="multinomial", type.measure="class")
species_cv <-
predict(iris_cv, newx=x, type="class", s="lambda.min")
table(y, species_cv)
19. 参考
• glmnetパッケージのvignette
– http://web.stanford.edu/~hastie/glmnet/glmnet_alpha.html
• Friedman, J., Hastie, T. and Tibshirani, R. (2008) Regularization
Paths for Generalized Linear Models via Coordinate Descent,
Journal of Statistical Software, Vol. 33(1), 1-22 Feb 2010
– http://www.jstatsoft.org/v33/i01/
• LASSO and Ridge regression
– http://d.hatena.ne.jp/isseing333/20110309/1299675311
• リッジ/Ridge回帰、Lasso回帰、Elastic Net (R - glmnet)
– http://highschoolstudent.hatenablog.com/entry/2015/02/08/142354
• RでL1 / L2正則化を実践する
– http://tjo.hatenablog.com/entry/2015/03/03/190000
19