機械学習 PR

【統計モデリング】scikit-learnが一般化線形モデル(GLM)をサポートしたので使ってみた

sklearnで一般化線形モデル(GLM)
記事内に商品プロモーションを含む場合があります

こんにちは。

現役エンジニアの”はやぶさ”@Cpp_Learningです。仕事でもプライベートでも機械学習で色々やってます。

先日 scikit-learn 0.23 がリリースされ、魅力的な機能が増えました。

今回は追加された機能の一つ、一般化線形モデル(GLM:Generalized Linear Model)を試してみます。

一般化線形モデル(GLM:Generalized Linear Model)とは

一般化線形モデル(GLM)については、以下の記事で丁寧に解説しているので、本記事では実践のみをします。

統計モデリング入門
【統計モデリング入門 】一般化線形モデル(GLM)を基礎から学ぶ -Pythonによる実践あり-統計モデリング(statistical modelling)の入門記事を書きました。線形モデル(Linear Model)と一般化線形モデル(Generalized Linear Model)の理論から実践まで学べます。Pythonライブラリ statsmodels によるソースコードも公開中です。...

実践!scikit-learnで一般化線形モデル(GLM)

この記事と同じタスク会計総額からチップ額を予測に一般化線形モデル(GLM)を使います。

Import

まずはimportから

データ可視化

データセットをダウンロードして、データを可視化します。

可視化

データの型変換と分割

扱えるデータの型に合わせて変換します。あとでスコア確認できるように、データ分割もしておきます。

今回は説明変数に会計総額(total_bill)の1つしか使いませんが、説明変数が複数ある場合、例えば説明変数が3つある場合は以下のような型変換が必要です。

X = [[1, 2, 3], [2, 3, 4], [3, 4, 5]]

統計モデリング

タスクが回帰、かつ確率分布:ポアソン分布、リンク関数:対数リンク関数を採用する場合、PoissonRegressor を使います。

モデルの良し悪しは置いといて、この記事と同じモデルを設計するため、デフォルトではなく上記のパラメータを採用しました。

あとはfitで推論(機械学習でいう学習)をすればOKです。scoreも簡単に算出できます。

予測結果の可視化

設計したモデルを使って予測をしてみます。

GLMによる予測

簡単にポアソン回帰ができました。

スポンサーリンク

実践!scikit-learnで統計モデリング

TweedieRegressorを使えば、もっと柔軟な統計モデリングができます。

ポアソン回帰モデル

例えば、確率分布やリンク関数を任意に変更できます。

上記のようにすれば、先程と同じ確率分布:ポアソン分布、リンク関数:対数リンク関数を採用できます。

予測結果を可視化すると以下の通りです。

GLMによる予測

PoissonRegressor を使ったときと同じ結果が得られます。

線形回帰モデル

確率分布:正規分布、リンク関数:恒等リンク関数にすれば、線形回帰モデルを設計できます。

予測結果を可視化すると以下の通りです。

GLMによる予測

2020/05/15時点 TweedieRegressor がサポートしている確率分布は以下の通りです。

Power Distribution
0 Normal
1 Poisson
(1,2) Compound Poisson Gamma
2 Gamma
3 Inverse Gaussian

リンク関数は本記事でも採用した ‘identity‘ と ‘log’ をサポートしています。

今後のアップデートでサポートが充実してくると嬉しいですね。

まとめ

scikit-learnが一般化線形モデル(GLM)をサポートしたので、さっそく使ってみましたが、さすがscikit-learnです。とても簡単に統計モデリングができました。

一方で…

統計モデリングって簡単じゃん!
よく分からないけどscikit-learnのデフォルト設定でイイ感じ!

と思う人がいれば少し心配です。統計モデリングは奥が深いので、ちゃんと理解した上で使うのが理想的だと考えています。

くるる
くるる
ぼくは以下の記事で統計モデリング入門したよー
「統計モデリングの入り口」に立つための知識を学べます
統計モデリング入門
【統計モデリング入門 】一般化線形モデル(GLM)を基礎から学ぶ -Pythonによる実践あり-統計モデリング(statistical modelling)の入門記事を書きました。線形モデル(Linear Model)と一般化線形モデル(Generalized Linear Model)の理論から実践まで学べます。Pythonライブラリ statsmodels によるソースコードも公開中です。...

微力ながら本ブログで「統計モデリング入門」の記事を公開していますので、良ければ参考にしてください。

はやぶさ
はやぶさ
統計モデリングに関する情報共有をしながら、一緒に成長できると嬉しいです。よろしくお願いします。

以下の本で勉強してます。どれも素晴らしい本です。

PICK UP BOOKS

  • 数理モデル入門
    数理モデル
  • Jetoson Nano 超入門
    Jetoson Nano
  • 図解速習DEEP LEARNING
    DEEP LEARNING
  • Pythonによる因果分析
    Python