オーストラリアで勉強してきたデータサイエンティストの口語自由詩

主に、ベイズ・統計・データ分析・機械学習について自由に書く。

python

Chapter 3 統計モデリングをはじめる前に 3.3〜3.5 - pythonで『StanとRでベイズ統計モデリング』

3.3 背景知識の役割 背景知識を活用することで内部構造がブラックボックスな問題(逆問題: inverse problem)を解く手がかりとなる. 逆問題の回答は何通りもあり得, 答えが一意に定まらない問題は不良設定問題(ill-posed problem)と呼ぶ. データを活用して…

Chapter 3 統計モデリングをはじめる前に 3.1〜3.2 - pythonで『StanとRでベイズ統計モデリング』

3.1 データ解析の前準備 このあたりのデータ前処理(Data Preparation)のプロセスは一般的なものなので特に深入りしない. データの分布を可視化して確認する点は機械学習のEDA(Exploratory Data Analysis)のプロセスでも重要とされているが, 多くの統計モ…

Chapter 2 ベイズ推定の復習 2.4〜2.7 - pythonで『StanとRでベイズ統計モデリング』

2.4 ベイズ推定とMCMC 伝統的な統計学の手法や最尤推定の問題を解決する一つの手法がベイズ推定(Bayesian inference)とマルコフ連鎖モンテカルロ法(MCMC). ベイズ統計 パラメータを確率変数とみなして確率分布を推定する(伝統的な統計学の点推定と異な…

統計モデリング - pythonで『StanとRでベイズ統計モデリング』

はじめに この本はStan(スタン)というソフトウェアとそのR用のパッケージであるRStan(アールスタン)を使って, 統計モデリングを習得する本である イントロで書籍の目的や内容や流れ, 前提知識や対象読者が記載されていたいりするので意外と大事です. ま…

Stan/R - pythonで『StanとRでベイズ統計モデリング』

はじめに この本はStan(スタン)というソフトウェアとそのR用のパッケージであるRStan(アールスタン)を使って, 統計モデリングを習得する本である イントロで書籍の目的や内容や流れ, 前提知識や対象読者が記載されていたいりするので意外と大事です. ま…

『StanとRでベイズ統計モデリング』をpythonでやってみる

TL;DR 今後は以下の書籍を読んで勉強した内容をブログに書いていこうと思います(`・ω・´) StanとRでベイズ統計モデリング (Wonderful R) StanとRでベイズ統計モデリング (Wonderful R)作者: 松浦健太郎,石田基広出版社/メーカー: 共立出版発売日: 2016/10/2…

pymc4の現状整理

ちょっとブログ更新の間があいてたのですが、そろそろ再開したいと思います. pymc4のソースコードリーディングがだいたい完了したので、現状のライブラリの現状を整理します. 現状整理 主な処理はtensorflow probabilityを内部的に使用 可視化はarvizを使用 …

サンプリングのテスト追加と微修正[6717b3e, 007cd06, d896372] - pymc4のソースコード読んでみた

TL;DR 主にサンプリングのテスト追加 コミット 2018/07/06のコミットです. fix pylint error · pymc-devs/pymc4@6717b3e · GitHub add test for sampling · pymc-devs/pymc4@007cd06 · GitHub solve pycodestyle errors · pymc-devs/pymc4@d896372 · GitHub …

対数確率計算用インターセプタ(実装はちょっと怪しい)[f223e4e] - pymc4のソースコード読んでみた

TL;DR 対数確率計算用インターセプタの実装を読んだが, なんだか実装が怪しい気がする. コミット 2018/07/01のコミットです. make target_log_prob_fn to use class based interceptor · pymc-devs/pymc4@f223e4e · GitHub 以下が変更対象ファイルです. pymc…

対数確率関数の計算をインターセプター処理 [f223e4e] - pymc4のソースコード読んでみた

TL;DR 変数に対する処理は基本的にインターセプターで対応する方針のため, 対数確率も同様に対応. コミット 2018/07/01のコミットです. make target_log_prob_fn to use class based interceptor · pymc-devs/pymc4@f223e4e · GitHub 以下が変更対象ファイル…

pycodestyle追加ともろもろ[a7cef9b, bd381b1, 89edc5c, 9f46878] - pymc4のソースコード読んでみた

TL;DR pycodestyle でコードチェックの追加 不要なテストの削除 コミット 2018/07/01のコミットです. remove some tests · pymc-devs/pymc4@a7cef9b · GitHub fix pycodestyle errors · pymc-devs/pymc4@bd381b1 · GitHub remove test_interceptors · pymc-d…

(細かい修正なのであまり重要ではない) [c27e97f, a8e3dae, 4f5382f, e06d946, ca9f334] - pymc4のソースコード読んでみた

TL;DR 細かい修正が多いのであまり重要ではないです. コミット 2018/06/26から2018/06/30の間のコミットです. minor fixes · pymc-devs/pymc4@c27e97f · GitHub add some tests · pymc-devs/pymc4@a8e3dae · GitHub add tests and fix model.configure() · p…

target_log_prob_fn: MCMCサンプリングの実装 [66f95ca, 8aaa0ff, cded7c5] - pymc4のソースコード読んでみた

TL;DR 前回の log_prob_fn と同様に複数の未観測変数の対数確率の合計を計算している様子なので細かい点は省略 コミット 2018/06/21から2018/06/23の間のコミットです. add target_log_prob_fn which works with the tff mcmc sampler · pymc-devs/pymc4@66f…

log_prob_fn: MCMCサンプリングの実装 [66f95ca, 8aaa0ff, cded7c5] - pymc4のソースコード読んでみた

TL;DR 複数の未観測変数の対数確率の合計を計算しています. これがMCMCサンプリングのコアの部分です. コミット 2018/06/21から2018/06/23の間のコミットです. add target_log_prob_fn which works with the tff mcmc sampler · pymc-devs/pymc4@66f95ca · G…

Add model.target_log_prob_fn() sampling [a703c21] - pymc4のソースコード読んでみた

TL;DR ターゲットとなる unobserved(未観測なRandomVariableインスタンス) の対数確率の合計を返すメソッドを実装しています. コミット 2018/06/18のコミットです. Add model.target_log_prob_fn() · pymc-devs/pymc4@a703c21 · GitHub 以下ファイルが修正…

python3.5削除 + pep8対応 [bb4de21] - pymc4のソースコード読んでみた

TL;DR python3.5は対応せず、3.6以上対応の方針 pep8のコードスタイルの修正なので、特に重要な点はなさそうです。今後はlint系のコミットは冗長なので省略するかもしれません。 コミット 2018/06/11のコミットです。 pep8 · pymc-devs/pymc4@bb4de21 · GitH…

テストサンプルの生成 [e334115, d07338e, 93bc07b] - pymc4のソースコード読んでみた

概要 Model クラスのサンプル生成のメソッドを読んでみます。 test_point コミット 2018/06/09から2018/06/11の間のコミットです。 tmp · pymc-devs/pymc4@e334115 · GitHub restructure + test point implementation · pymc-devs/pymc4@d07338e · GitHub fi…

tensorflowのグラフ構造 [e334115, d07338e, 93bc07b] - pymc4のソースコード読んでみた

概要 まずは Model クラスの初期化処理系のメソッドを読んでみます。 _init_variables: 今回はここの self.graph.as_default() の処理を読みます コミット 2018/06/09から2018/06/11の間のコミットです。 tmp · pymc-devs/pymc4@e334115 · GitHub restructur…

edward2のinterception処理 [e334115, d07338e, 93bc07b] - pymc4のソースコード読んでみた

概要 まずは Model クラスの初期化処理系のメソッドを読んでみます。 _init_variables: 今回はここの ed.interception() の処理を読みます コミット 2018/06/09から2018/06/11の間のコミットです。 tmp · pymc-devs/pymc4@e334115 · GitHub restructure + te…

Modelの_init_vatiables内のInterceptor処理 [e334115, d07338e, 93bc07b] - pymc4のソースコード読んでみた

概要 まずは Model クラスの初期化処理系のメソッドを読んでみます。 _init_variables: 今回はここを読みます コミット 2018/06/09から2018/06/11の間のコミットです。 tmp · pymc-devs/pymc4@e334115 · GitHub restructure + test point implementation · p…

Modelクラスの初期化処理 [e334115, d07338e, 93bc07b] - pymc4のソースコード読んでみた

TL;DR まずは Model クラスの初期化処理系のメソッドを読んでみます。 __init__: 初期化処理いろいろ define: self._f を設定して変数初期化しているようですが、今のところテスト用のヘルパー関数に見えます configure: 設定を上書きして変数初期化 _init_v…

なぜPyMC4のバックエンドにTensorFlowが採用されたのか?

TL;DR 以下記事をもとに、PyMC4のバックエンドにtensorflowが採用された経緯をまとめました。 see: Theano, TensorFlow and the Future of PyMC – PyMC Developers – Medium ポイント tensorflowには既に多くのユーザがいること(デファクトスタンダードであ…

biwrapを使用したinline関数 [e334115, d07338e, 93bc07b] - pymc4のソースコード読んでみた

TL;DR biwrap モジュールを使ってアノテーションを使った Model インスタンス生成用のヘルパー関数を作成しています。 コミット 2018/06/09から2018/06/11の間のコミットです。 tmp · pymc-devs/pymc4@e334115 · GitHub restructure + test point implementa…

アーキテクチャをPyMC3からPyMC4へ [e334115, d07338e, 93bc07b] - pymc4のソースコード読んでみた

TL;DR 今までのコミットの Model や RandomVariable は削除され、アーキテクチャも変更されています。削除されたコードはpymc3とほぼ同等だったので、試しに書いたコードだったようです汗。ほとんど0から読み進める感じになるので、焦らず読みやすそうな箇所…

pymc4のソースコード読んでみた - 依存ライブラリの対応やlint [ac77b27, bec2985, ce1d895]

TL;DR 依存ライブラリである tensorflow_probability が原因で requirements.txt の現状の書き方では最新バージョンを上手く取得できない問題があったみたいです。新しいライブラリなので仕方ないですね。 コミット 2018/06/03のコミットです。 Update requi…

pymc4のソースコード読んでみた - “RandomVariable”, Add model tests, fix travis pytest problem [4357d39]

TL;DR treedict クラスの依存性を以前のコミットで削除した代わりに、 RandomVariable クラス内で Model の contexts.stack 全てに値を設定することで、ほぼ同等の動きをしている。 コミット 2018/06/03のコミットです。 Add model tests, fix travis pytest…

pymc4のソースコード読んでみた - Add model tests, fix travis pytest problem [4357d39]

コミット 2018/06/03のコミットです。 Add model tests, fix travis pytest problem · pymc-devs/pymc4@4357d39 · GitHub 以下ファイルが変更されています。 .gitignore .pytest_cache/ を追記 .pylintrc naming convention のlintチェックをdisable: C0103 …

pymc4のソースコード読んでみた - Remove treedict dependency [10ea1aa]

TL;DR model nesting が不要になったので、 treedict が削除されたみたいです。 コミット 2018/05/31のコミットです。 Remove treedict dependency · pymc-devs/pymc4@10ea1aa · GitHub 以前は Model クラスで treedict クラスが使用されていましたが、その…

pymc4のソースコード読んでみた - lintや依存ライブラリ情報の更新などもろもろ [8c1d02a, d932437, a0879d4, 2b5946c, 10ea1aa, 9086d1a, c1ea662]

TL;DR pep8のlint系の対応やrequirements.txtの更新など、雑多なコミットが多かったので、1つの記事にまとめました。途中で jupyter notebook で test.ipynb を起動してもライブラリが無いとか、そもそもシンタックスエラー等があるので、コミット c1ea662 …

pymc4のソースコード読んでみた - “Model”の動作確認, Initial Model Class, sampling and random variable [aafa32d]

コミット 2018/05/30のコミットです。 Initial Model Class, sampling and random variable · pymc-devs/pymc4@aafa32d · GitHub 主に、pymc4の根幹となる Model と RandomVariable クラスが作成されています。 Model クラスの動作を確認してみます。 Model …