Rにおける代表的な一般化線形モデル(GLM)の実装ライブラリまとめ

一般化線形モデル(GLM)は統計解析のフレームワークとしてとにかく便利。Rでもビルトインの関数から拡張までさまざまなライブラリから提供されている機能だが、さまざまなライブラリがありすぎてどれを使えばいいのかわかりにくいのと、さらに一般化線形モデル(GLM)自体にもいろいろな亜種があるため、どの手法をどのライブラリの関数で実装すればいいかわからなくなる。 そこでRに実装されている代表的なGLM系の関数と特徴についてまとめてみた。 一般化線形モデルのおさらい 一般化線形モデルとは $$ y = g^{-1}(\alpha + \beta_1 x_1 + \beta_2 x_2 + … …

続きを読む →

BigQueryでGA4/Firebaseのログを使って機械学習

使うデータセット Firebaseのパブリックデータが以下にあるのでこれを使う。 firebase-public-project.analytics_153293282.events_* 0612~1003の114日分のデータ 基本集計(EDA) イベントの数の種類別カウント select event_name, count(0) from `firebase-public-project.analytics_153293282.events_20181003` group by 1 order by 2 desc; スクリーンビューのスクリーン別カウント select (select ep….

続きを読む →

Google BigQueryでお手軽機械学習(BQML)

BigQuery ML(BQML)では 線形回帰 ロジスティック回帰 k-meansクラスタリング AutoML Tables XGBoost DNN 時系列(ARIMA) が使える。当初は線形回帰とロジスティック回帰だけだったが今では実用的な手法が増えた。何よりもXGBoostが使えるようになったのが大きい。 XGBoostのメリット XGBoostは語弊を恐れずに言うと特に何も考えなくてもそれなりの精度が出る、素人でもそこそこのアウトプットを出せてしまう手法である。これまでの線形回帰やロジスティック回帰は前提条件が扱いが難しい手法だった。 XGBoostがお手軽というのは、 正規化不要 カ…

続きを読む →

BigQueryで列可変のテーブルからcos類似度を計算する

BigQueryはビッグデータを扱える高速安価なデータウェアハウスとして知られているが、 あまりに高速であるためにDWH(つまりデータベース)としての使い方にとどまらず、 さまざまな数学的な計算処理に使われることがある。 一般的に数学的な処理をする場合、普通はBigQueryでは基本的な集計までにとどめ、 あとはPythonやRなどの言語からBigQueryのデータを読み込んで計算処理をすることが多い。 Rなどは計算処理専門の言語なので、BigQueryより関数も充実している。 しかしBigQueryだけでそういった処理を完結できるならそれは望ましい。 プログラミング言語を使おうとすると、それ…

続きを読む →

Google ColaboratoryでRを使う

無料でPythonの実行環境を使わせてもらえるGoogle Colaboratory。しかもGPUと12GBのメモリ、350GBのディスクまで使える環境であり、手元のPCよりハイスペックな人も多いだろう。 RユーザにとってはPythonだけでなくRでも使えたらいいのにと思うところである。そこで、この記事ではこの環境でRを使う方法を解説する。 Rを使う4つの方法 実はGoogle ColaboratoryのインスタンスにはRの環境(RのバイナリとJupyter Kernel)がインストールされており、わずかな手順で使えるようになるのである。 参考までにインストールされているKernelの一覧はマ…

続きを読む →

Javascriptで正規分布の実装まとめ(乱数、累積分布関数など)

Javascriptで正規分布の乱数発生(rnorm)、確率密度関数(dnorm)、累積分布関数(pnorm)、累積分布の逆関数(qnorm)を実装する(逆関数は参照で)。すべて標準正規分布を想定。 Javascriptに限らず使えるアルゴリズムだが、日本語でまとまっている情報があまりないのと、ブラウザ上でA/Bテストなど有意性をみる検定などできたら面白いということでJSでやってみる。 正規乱数の生成(rnorm) 1行でBox-Muller法で。 Box-Muller法とは? $$X_1, X_2 \stackrel{i.i.d.}{\sim} {\rm Unif} (0, 1) $$ とす…

続きを読む →

Rのdata.tableパッケージの使える関数一覧

Rのdata.tableはデータフレームを高速に扱えるように改良した形式だが、この機能を提供するdata.tableパッケージには添え字を使ったdata.tableの処理機能だけでなく、さまざまな関数が実装されている。 中にはdata.table以外の形式にも使える関数もあり、 dt[,col1:=関数()] の形式で使えるdata.table用の関数にも一般的に知られていない便利なものが数多くある。 特に高速化を意識しているものが多く、知っていると処理時間を短縮できる。 data.tableはdplyrとセットで使われることも多いが、dplyr自体はdata.tableの高速仕様にのっとった…

続きを読む →

Rのおすすめパッケージ2019年版

Rのおすすめパッケージをアップデートしてまとめた。定番の分析手法をはじめ、可視化やデータ処理に便利なものなど、幅広く紹介した。中にはマストというものもあるし、意外と知られていないがインストールしておくと便利なものまで、使い方の例も挙げて説明している。 ミドルウェア的なレイヤーのライブラリ(must) curl ファイルをwebからダウンロードするときに使う。 データファイルやパッケージのダウンロードが発生する処理で内部的に使われるライブラリで、他のパッケージのインストールの際に同時にインストールされることが多く、意識されることは少ないパッケージ。たまに依存関係の問題でも解決されずに未インストー…

続きを読む →

Rを使ったXGBoostの高度なパラメータチューニングと細かいノウハウ

XGBoostは機械学習手法として 比較的簡単に扱える 目的変数や損失関数の自由度が高い(欠損値を扱える) 高精度の予測をできることが多い ドキュメントが豊富(日本語の記事も多い) ということで大変便利。 ただチューニングとアウトプットの解釈については解説が少ないので、このあたりについて説明する。 XGBoostとは? 勾配ブースティングのとある実装ライブラリ(C++で書かれた)。イメージ的にはランダムフォレストを賢くした(誤答への学習を重視する)アルゴリズム。RとPythonでライブラリがあるが、ここではRライブラリとしてのXGBoostについて説明する。 XGBoostのアルゴリズム自体の…

続きを読む →

Rで時系列分析の簡単なまとめ

時系列のアプローチ 単系列 ざっと見る 定常性の確認 ARIMA/SARIMAモデルをあてはめる 複数系列の関係→VAR(ベクトル自己回帰)モデル その他の変数がある(時系列+回帰)→状態空間モデル (単なるラグ変数回帰→目的変数自体の時系列性が反映されない) ライブラリ{forecast}を使う 以下、データはy.tsとする 時系列のデータ形式 時系列データにはいくつかの形式がある。 ts: Rの基本の時系列オブジェクト。ほとんどの時系列ライブラリはこの形式の時系列データを扱う xts: データフレームとtsの間に位置づけられる、時系列データを便利に扱えるようにした形式 zoo: データフレ…

続きを読む →