SlideShare a Scribd company logo
1 of 20
Download to read offline
glmnet
第48回 勉強会@東京(#TokyoR)
@teramonagi
5分でわかるかもしれない
誰や?
俺や
• ID: @teramonagi
• 職種:データ分析おじさん
• 業務:ブカーの育成&会議&翻訳
• 言語:/R/F#/Ruby/Python/C++/
• 特技:早起き・根回し
3
優秀な新人怖い
glmnetとは
glmnet = glm+愛の鞭
4
※glm:一般化線形モデル(用の関数)
※一般化線形モデルの解説はしない
glmnetとは
• 愛の鞭(正則化)を一般化線形モデル
(GLM)に適用できるパッケージ
• 愛の鞭(正則化)の種類
–Lasso (ラッソ, L1正則化)
–Ridge(リッジ , L2正則化)
–Elastic-net(L1+L2正則化)
• カバーされているGLMなモデル
–線形、(多項 or 多クラス)ロジス
ティック、ポアソン、コックスモデル
5
モデルの目的関数
6
ラッソリッジ
尤度関数(モデル依存) 愛の鞭(正則化)
Elastic-Net
※パラメーター推計の際には
これが最小化される
パラメータ計算
• パラメーター推定のアルゴリズム
–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
早速、使ってみる
8
#パッケージをインストールして読み込む
install.packages("glmnet")
library(glmnet)
データの取得
• 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)
glmとの比較(2クラス分類)
10
#statsパッケージのglm(説明変数は適当)
wine_glm <- glm(
quality ~ residual.sugar+sulphates+alcohol,
data=wine, family=binomial)
#質(quality)の予測(確率が0.5以上ならクラス1)
quality_glm <- predict(wine_glm, wine, type='response')
table(wine$quality, round(quality_glm))
※glmでの答え(混同行列)
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と一致
glmnetのクロスバリデーション
• クロスバリデーションで愛の鞭の痛さを調整できます
12
#CVで最適な"お仕置き"を決定して計算
wine_cv <-
cv.glmnet(x, y, family="binomial", type.measure="class")
quality_cv <-
predict(wine_cv, newx=x, type="class", s="lambda.min")
table(wine$quality, quality_cv)
※正解率が改善
多クラスロジスティック回帰
• glmnetは多クラスロジステック回帰できる
– 分類すべきクラス数が2ではなく複数
– 一対他分類器 ではない!!!
• 他にもこれができるパッケージある
– VGAMのvglm関数(2015年更新確認)
– mlogitのmlogit関数(2013年更新停止)
– nnetのmultinom関数(2015年更新確認)
• でも、愛の鞭(正則化)があるし、あと開発者ら
が「統計的学習の基礎」の著者らなんで、
glmnetでいきたい…(ちなみにnnetはRのコア
メンバーBrian Ripley氏が開発されています)
13
多クラスロジスティック回帰
• family=“multinomial”とするだけ
• ワインデータはワイン全種類のも
のを使用(複数クラスなんで)
14
x <- df %>%
select(residual.sugar, sulphates, alcohol) %>%
as.matrix
y <- df %>% select(quality) %>% unlist
wine_cv <-
cv.glmnet(x, y, family="multinomial", type.measure="class")
quality_cv <-
predict(wine_cv, newx=x, type="class", s="lambda.min")
多クラスロジスティック回帰
15
table(df$quality, quality_cv)
• 結果を表示
みんな大好き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)
みんな大好きirisで
正解 予測値
17
ここがイケてないよglmnet
• 引数(x, y)が行列限定
• 引数(x)が”数値”限定で、因子不可
• ガンガン使うようだったら、使い
やすいように修正したパッケージ
作っちゃった方が楽かも?
18
参考
• 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
Enjoy!!20

More Related Content

What's hot

階層ベイズによるワンToワンマーケティング入門
階層ベイズによるワンToワンマーケティング入門階層ベイズによるワンToワンマーケティング入門
階層ベイズによるワンToワンマーケティング入門
shima o
 
Rで階層ベイズモデル
Rで階層ベイズモデルRで階層ベイズモデル
Rで階層ベイズモデル
Yohei Sato
 
相関と因果について考える:統計的因果推論、その(不)可能性の中心
相関と因果について考える:統計的因果推論、その(不)可能性の中心相関と因果について考える:統計的因果推論、その(不)可能性の中心
相関と因果について考える:統計的因果推論、その(不)可能性の中心
takehikoihayashi
 
組合せ最適化入門:線形計画から整数計画まで
組合せ最適化入門:線形計画から整数計画まで組合せ最適化入門:線形計画から整数計画まで
組合せ最適化入門:線形計画から整数計画まで
Shunji Umetani
 

What's hot (20)

機械学習モデルのハイパパラメータ最適化
機械学習モデルのハイパパラメータ最適化機械学習モデルのハイパパラメータ最適化
機械学習モデルのハイパパラメータ最適化
 
【解説】 一般逆行列
【解説】 一般逆行列【解説】 一般逆行列
【解説】 一般逆行列
 
階層ベイズによるワンToワンマーケティング入門
階層ベイズによるワンToワンマーケティング入門階層ベイズによるワンToワンマーケティング入門
階層ベイズによるワンToワンマーケティング入門
 
一般化線形モデル (GLM) & 一般化加法モデル(GAM)
一般化線形モデル (GLM) & 一般化加法モデル(GAM) 一般化線形モデル (GLM) & 一般化加法モデル(GAM)
一般化線形モデル (GLM) & 一般化加法モデル(GAM)
 
Optimizer入門&最新動向
Optimizer入門&最新動向Optimizer入門&最新動向
Optimizer入門&最新動向
 
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
 
StanとRでベイズ統計モデリング読書会 Chapter 7(7.6-7.9) 回帰分析の悩みどころ ~統計の力で歌うまになりたい~
StanとRでベイズ統計モデリング読書会 Chapter 7(7.6-7.9) 回帰分析の悩みどころ ~統計の力で歌うまになりたい~StanとRでベイズ統計モデリング読書会 Chapter 7(7.6-7.9) 回帰分析の悩みどころ ~統計の力で歌うまになりたい~
StanとRでベイズ統計モデリング読書会 Chapter 7(7.6-7.9) 回帰分析の悩みどころ ~統計の力で歌うまになりたい~
 
2 6.ゼロ切断・過剰モデル
2 6.ゼロ切断・過剰モデル2 6.ゼロ切断・過剰モデル
2 6.ゼロ切断・過剰モデル
 
時系列予測にTransformerを使うのは有効か?
時系列予測にTransformerを使うのは有効か?時系列予測にTransformerを使うのは有効か?
時系列予測にTransformerを使うのは有効か?
 
階層モデルの分散パラメータの事前分布について
階層モデルの分散パラメータの事前分布について階層モデルの分散パラメータの事前分布について
階層モデルの分散パラメータの事前分布について
 
cvpaper.challenge 研究効率化 Tips
cvpaper.challenge 研究効率化 Tipscvpaper.challenge 研究効率化 Tips
cvpaper.challenge 研究効率化 Tips
 
2 3.GLMの基礎
2 3.GLMの基礎2 3.GLMの基礎
2 3.GLMの基礎
 
Rで階層ベイズモデル
Rで階層ベイズモデルRで階層ベイズモデル
Rで階層ベイズモデル
 
相関と因果について考える:統計的因果推論、その(不)可能性の中心
相関と因果について考える:統計的因果推論、その(不)可能性の中心相関と因果について考える:統計的因果推論、その(不)可能性の中心
相関と因果について考える:統計的因果推論、その(不)可能性の中心
 
組合せ最適化入門:線形計画から整数計画まで
組合せ最適化入門:線形計画から整数計画まで組合せ最適化入門:線形計画から整数計画まで
組合せ最適化入門:線形計画から整数計画まで
 
Stanの便利な事後処理関数
Stanの便利な事後処理関数Stanの便利な事後処理関数
Stanの便利な事後処理関数
 
因果探索: 基本から最近の発展までを概説
因果探索: 基本から最近の発展までを概説因果探索: 基本から最近の発展までを概説
因果探索: 基本から最近の発展までを概説
 
グラフィカル Lasso を用いた異常検知
グラフィカル Lasso を用いた異常検知グラフィカル Lasso を用いた異常検知
グラフィカル Lasso を用いた異常検知
 
MCMCでマルチレベルモデル
MCMCでマルチレベルモデルMCMCでマルチレベルモデル
MCMCでマルチレベルモデル
 
ベータ分布の謎に迫る
ベータ分布の謎に迫るベータ分布の謎に迫る
ベータ分布の謎に迫る
 

Viewers also liked (8)

機械学習によるデータ分析まわりのお話
機械学習によるデータ分析まわりのお話機械学習によるデータ分析まわりのお話
機械学習によるデータ分析まわりのお話
 
Data assim r
Data assim rData assim r
Data assim r
 
機械の代わりに人間が学習入門
機械の代わりに人間が学習入門機械の代わりに人間が学習入門
機械の代わりに人間が学習入門
 
MCMCによる回帰分析@ベイズセミナー
MCMCによる回帰分析@ベイズセミナーMCMCによる回帰分析@ベイズセミナー
MCMCによる回帰分析@ベイズセミナー
 
Ml ch7
Ml ch7Ml ch7
Ml ch7
 
カルマンフィルタについて
カルマンフィルタについてカルマンフィルタについて
カルマンフィルタについて
 
状態空間モデルの実行方法と実行環境の比較
状態空間モデルの実行方法と実行環境の比較状態空間モデルの実行方法と実行環境の比較
状態空間モデルの実行方法と実行環境の比較
 
スパースモデリング、スパースコーディングとその数理(第11回WBA若手の会)
スパースモデリング、スパースコーディングとその数理(第11回WBA若手の会)スパースモデリング、スパースコーディングとその数理(第11回WBA若手の会)
スパースモデリング、スパースコーディングとその数理(第11回WBA若手の会)
 

More from Nagi Teramo

healthplanetパッケージで 体組成データを手に入れて 健康な体も手に入れる
healthplanetパッケージで体組成データを手に入れて健康な体も手に入れるhealthplanetパッケージで体組成データを手に入れて健康な体も手に入れる
healthplanetパッケージで 体組成データを手に入れて 健康な体も手に入れる
Nagi Teramo
 
続わかりやすいパターン認識11章(11.1 - 11.4)
続わかりやすいパターン認識11章(11.1 - 11.4)続わかりやすいパターン認識11章(11.1 - 11.4)
続わかりやすいパターン認識11章(11.1 - 11.4)
Nagi Teramo
 
東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法
東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法
東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法
Nagi Teramo
 

More from Nagi Teramo (20)

第86回R勉強会@東京 LT資料
第86回R勉強会@東京 LT資料第86回R勉強会@東京 LT資料
第86回R勉強会@東京 LT資料
 
Rでを作る
Rでを作るRでを作る
Rでを作る
 
Reproducebility 100倍 Dockerマン
Reproducebility 100倍 DockerマンReproducebility 100倍 Dockerマン
Reproducebility 100倍 Dockerマン
 
healthplanetパッケージで 体組成データを手に入れて 健康な体も手に入れる
healthplanetパッケージで体組成データを手に入れて健康な体も手に入れるhealthplanetパッケージで体組成データを手に入れて健康な体も手に入れる
healthplanetパッケージで 体組成データを手に入れて 健康な体も手に入れる
 
闇と向き合う
闇と向き合う闇と向き合う
闇と向き合う
 
機械の体を手に入れるのよ、 鉄郎!!!
機械の体を手に入れるのよ、鉄郎!!!機械の体を手に入れるのよ、鉄郎!!!
機械の体を手に入れるのよ、 鉄郎!!!
 
続わかりやすいパターン認識11章(11.1 - 11.4)
続わかりやすいパターン認識11章(11.1 - 11.4)続わかりやすいパターン認識11章(11.1 - 11.4)
続わかりやすいパターン認識11章(11.1 - 11.4)
 
Ultra Lightning Talk × 3
Ultra Lightning Talk × 3Ultra Lightning Talk × 3
Ultra Lightning Talk × 3
 
F#談話室(17)
F#談話室(17)F#談話室(17)
F#談話室(17)
 
RFinanceJはじめました
RFinanceJはじめましたRFinanceJはじめました
RFinanceJはじめました
 
東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法
東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法
東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法
 
お前の逐モン、GETだぜ!
お前の逐モン、GETだぜ!お前の逐モン、GETだぜ!
お前の逐モン、GETだぜ!
 
Trading volume mapping R in recent environment
Trading volume mapping R in recent environment Trading volume mapping R in recent environment
Trading volume mapping R in recent environment
 
~knitr+pandocではじめる~『R MarkdownでReproducible Research』
~knitr+pandocではじめる~『R MarkdownでReproducible Research』~knitr+pandocではじめる~『R MarkdownでReproducible Research』
~knitr+pandocではじめる~『R MarkdownでReproducible Research』
 
とある金融屋の統計技師が時系列解析してみた
とある金融屋の統計技師が時系列解析してみたとある金融屋の統計技師が時系列解析してみた
とある金融屋の統計技師が時系列解析してみた
 
可視化周辺の進化がヤヴァイ~rChartsを中心として~
可視化周辺の進化がヤヴァイ~rChartsを中心として~可視化周辺の進化がヤヴァイ~rChartsを中心として~
可視化周辺の進化がヤヴァイ~rChartsを中心として~
 
「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」
「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」
「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」
 
Tokyo.R 白熱教室「これからのRcppの話をしよう」
Tokyo.R 白熱教室「これからのRcppの話をしよう」Tokyo.R 白熱教室「これからのRcppの話をしよう」
Tokyo.R 白熱教室「これからのRcppの話をしよう」
 
レプリカ交換モンテカルロ法で乱数の生成
レプリカ交換モンテカルロ法で乱数の生成レプリカ交換モンテカルロ法で乱数の生成
レプリカ交換モンテカルロ法で乱数の生成
 
Rで学ぶ逆変換(逆関数)法
Rで学ぶ逆変換(逆関数)法Rで学ぶ逆変換(逆関数)法
Rで学ぶ逆変換(逆関数)法
 

Recently uploaded

Recently uploaded (11)

論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 

5分でわかるかもしれないglmnet