黒木玄 Gen Kuroki
- いいね数 389,756/311,170
- フォロー 995 フォロワー 14,556 ツイート 293,980
- 現在地 (^-^)/
- Web https://genkuroki.github.io/documents/
- 自己紹介 私については https://twilog.org/genkuroki と https://genkuroki.github.io と https://github.com/genkuroki と https://github.com/genkuroki/public を見て下さい。
2017年11月12日(日)
#統計 最尤法で最も気軽に使える情報量規準はAICとBICの2つなのですが、それらのベイズ推定法版のWAICとWBICを実装したつもりの #JuliaLang Jupyter notebook が次のリンク先にあります。
nbviewer.jupyter.org/gist/genkuroki...
posted at 00:39:42
#統計 すでにこの発言が繋がるスレッドの中で述べたように、確率密度函数は「測度」の「次元」を持つので、確率密度函数 p(x) のサンプル X_1,…,X_n の尤度 p(X_1)…p(X_n) は座標系 x に依存します。しかし、尤度比は座標系によらない量になる。続く
twitter.com/h_okumura/stat...
タグ: 統計
posted at 01:25:14
#JuliaLang でもScikitLearnで簡単に遊べるんですね。実際に試してみたら本当に簡単でした。一部のコードは使用パッケージの側がまだ0.6に対応してなくて、0.5.2でしか動きませんでしたが。ほとんどの例はそのまま動いた。
github.com/cstjean/Scikit...
タグ: JuliaLang
posted at 01:34:12
ICYMI, 🌈 Incredible animations! "Sorting Algorithms Revisualized" buff.ly/2zWsW2X #visualization pic.twitter.com/UOp9gEB0qH
タグ: visualization
posted at 04:46:05
みなさんタイラップって買った時に袋の上を開封して、工具箱の中で全部出ちゃってたりいちいち開封口をテープで留めたり面倒な事してません??
タイラップの袋の便利な開封方法はこうです。 これなら勝手に袋から飛び出る事なく、必要なだけ取り出せて、工具箱のなかでも散らかりません! pic.twitter.com/yWNiyhJD9j
タグ:
posted at 11:32:13
#JuliaLang whichマクロが便利過ぎ。{at}which hoge(x) で実際に実行される函数 hoge(x) のソースコードのありかを教えてくれる。Julia言語ではhoge(x)の中身はxの型に依存して変わることが多いので、これ結構必須かも。
タグ: JuliaLang
posted at 11:49:22
#JuliaLang #統計
nbviewer.jupyter.org/gist/genkuroki...
t-distribution linear regression by Mamba
にLOOCVの計算も追加した。WAIC, LOOCV, WBIC の簡単な計算例。計算法の解説付き。確率モデルp(x|w)、入力のサンプルX_k、事後分布のサンプルw_lに関する log p(X_k|w_l) から全部計算できる。
posted at 11:59:24
#JuliaLang #統計 MCMCをやってくれるパッケージには、確率モデルp(x|w)、入力のサンプルX_k、事後分布のサンプルw_lに関する
log p(X_k|w_l)
を自動的に計算してくれる機能が欲しいよな。これはあまりにも基本的な量なので、ユーザーに自前で計算させるようなものではないと思う。
posted at 12:04:58
#JuliaLang #統計 最尤法の計算のコードが一ヶ所バグっていたので直した。ついでにGadflyじゃなくて、自前でPyPlotを使ってプロットするように書き換えた。
nbviewer.jupyter.org/gist/genkuroki...
t-distribution linear regression by Mamba
Julia言語でNUTSでMCMC。WAIC、LOOCV、WBICの計算。
posted at 15:48:31
#JuliaLang まだ
nbviewer.jupyter.org/gist/genkuroki...
の方には反映されていないが、
gist.github.com/genkuroki/1c9f...
の方はもう置き換わっている。
Julia言語でNUTSでMCMC。WAIC、LOOCV、WBICの計算。MCMCの結果を初期条件として使って最尤法。AICとBICの計算。
タグ: JuliaLang
posted at 15:51:58
中華3Dプリンタ、思ってたよりはしっかりしてる
必要工具やら日本用電源全部ついてくるし動画付きの説明書だし、この梱包の綺麗さ
こんなのが二万円代とか勝ち目ないな…と思って組み立て中悲しくなった pic.twitter.com/Od2NrSZB8D
タグ:
posted at 17:59:30
#JuliaLang 自由エネルギーを数値積分で直接計算する函数を追加した。WBICは逆温度1/log(n)での被∫函数の値で積分を近似したものである。これで正しいかについてまだ確信はない。
gist.github.com/genkuroki/1c9f...
nbviewer.jupyter.org/gist/genkuroki... pic.twitter.com/LLtBtXe7wF
タグ: JuliaLang
posted at 20:17:52
2017年11月13日(月)
とにぃAntonio Camillo @Antonio_Camillo
すごいもんですねぇ
匠の技ですな @Limportant_fr
pic.twitter.com/KtCdkGjeoX
タグ:
posted at 01:50:46
Matthew Wingate @WingateMatthewB
Just read this at link below. Funny cuz it's true [tho I'm still learning]. #JuliaLang ucidatascienceinitiative.github.io/IntroToJulia/H... pic.twitter.com/dZOMVYSY9g
タグ: JuliaLang
posted at 03:44:14
ネタ再掲 #統計
www.jstage.jst.go.jp/article/butsur...
エントロピーとモデルの尤度
赤池 弘次
で赤池さんは
AIC (an information criterion の略記)
と書いていて、それに編集委員会が脚注を付けている(笑)。 pic.twitter.com/e6v49w9jlC
ismrepo.ism.ac.jp/?action=pages_...
もおすすめ。
タグ: 統計
posted at 10:46:59
#統計 赤池弘次さんの論説
ismrepo.ism.ac.jp/?action=pages_...
統計的推論のパラダイムの変遷について
www.jstage.jst.go.jp/article/butsur...
エントロピーとモデルの尤度
「尤度ってどうしてもっともらしさなの?」「客観確率 vs. 主観確率という対立図式はおかしいよね?」のような疑問を持つ人達には特におすすめ。
タグ: 統計
posted at 10:48:27
Hiroki MORI (森 裕紀) モ @HirokiMori
@HirokiSayama 佐山先生、この前言っていた話です。 twitter.com/genkuroki/stat...
タグ:
posted at 10:50:45
#統計 以上は
twitter.com/genkuroki/stat...
の一部分の再掲。
「尤度をもっともらしさだ」と言いながらその理由を説明しないとか、ベイズ統計について「客観確率 vs. 主観確率」という対立図式に基いて説明したりする人達は「反赤池の立場」に立っていることになる。それって相当に怖いことだと思う。
タグ: 統計
posted at 10:52:07
#統計 WBICの原論文の定理3の証明中にある定積分で自由エネルギーを表示する公式で自由エネルギーを計算しても、1変数函数の数値積分なので待ち時間はほとんどありません。添付画像は #JuliaLang での実装例。
nbviewer.jupyter.org/gist/genkuroki... pic.twitter.com/oHhoDkTMni
posted at 12:12:21
#統計 #JuliaLang 被積分函数は E2nLn(β)=2E^β_w[nL_n] (2倍してあるのはBICの伝統的なスケールに合わせるため)で、quadgkが数値積分の函数。被積分函数の計算には逆温度βでの事後分布は必要なくて、逆温度1の通常の事後分布だけで十分です。
nbviewer.jupyter.org/gist/genkuroki...
にも解説があります。
posted at 12:15:44
弱かろうと将棋ソフトをフルスクラッチで書いている学生さんとかが本当のガチ勢であって、ライブラリ使ってお手軽に勝つことを目指しているのはエンジョイ勢だと私は思う。前者の人達が大会で「二週間で出来ますた!」みたいなライブラリ勢のソフトにボコボコにされて「自分エンジョイ勢なんで…」と…
タグ:
posted at 13:17:24
エクスキューズしてる姿に私は心を痛めている。「君たちこそが、本当のガチ勢なんだよ。もっと胸を張っていいんだよ。」と言ってやりたいが、やねうら王ライブラリ勢の親玉だと思われている私が言っても「何言ってんだ、こいつ」みたくなるので言わないし、言えない。
タグ:
posted at 13:23:45
非公開
タグ:
posted at xx:xx:xx
斉藤ひでみ・現職教師(西村祐二) @kimamanigo0815
【教員記者会見の映像公開】
11/6に行ないました、現職審議会による記者会見を、ほぼノーカットで公開しました。
現場の教員による訴えを、どうか聴いて下さい。
僕たちは引き続き、中教審・文科省等に働きかけを続けます。
www.kyodo-bukatsu.net/gs/kaiken/
※前半もですが、後半の質疑応答も見所です pic.twitter.com/JQqWRKLRw9
タグ:
posted at 17:29:23
内田良:新刊『だれが校則を決めるのか』 @RyoUchida_RIRIS
どゎゎゎ・・・
伝説の記者会見,動画公開に踏み切った・・・
国の審議会が始まる直前に,隣の会議室で,現職の声をアピール。
しかも,迅速に動画を編集,審議会の議事録をアップロードと,すごすぎる。 twitter.com/kimamanigo0815...
タグ:
posted at 18:08:26
#統計 loglik[l,i]=log p(X_i|w_l)です(X_iは真の分布が生成したサンプル、w_lは逆温度1の普通の事後分布のサンプル)。WBICや0から1までの定積分による自由エネルギーの計算には、逆温度βの事後分布のサンプルをMCMCで作る必要はないです。
nbviewer.jupyter.org/gist/genkuroki...
pic.twitter.com/oHhoDkTMni
タグ: 統計
posted at 19:38:06
#統計 #JuliaLang pic.twitter.com/oHhoDkTMni
loglik[l,i]=log p(X_i|w_l)でsize(loglik)[1]=size(loglik,1)はlの個数(右辺のように書くべきだったか)。
sum(loglik,2)=Σ_i loglik[:,i]
E2nLn(β)=E^β_w[nL_n]は逆温度1の事後分布のサンプルを使って逆温度βでの平均を計算する函数。
posted at 19:42:18
#統計 #JuliaLang {at}sum マクロは for ループで和を取るためのマクロです。Julia言語では for ループで「ダサく」和を取った方がメモリが節約されてかつ計算も速いことが結構あります。E2nLn(β)はβで数値積分するので繰り返し何度も呼ばれるのでforループで和を取って計算することにしました。
posted at 19:45:22
#統計 #JuliaLang 以上のような方法である場合に計算したFreeEnergyはWBICより少し小さな値になってかつ、MCMCのサンプルの取り方に関する分散も小さいです。私はWBICを使うよりももっと素朴に数値積分した方がメリットがあるのではないかと思っているのですが、まだ確証はありません。
posted at 19:47:26
自己相関関数やらケプストラムやらの図を作るのにJulia(とPyPlot)を使っていたら、それらの関数がどんどん蓄積されてゆく。車輪の再発明だしオレオレ分析関数ばかりになるけど、使いやすくなっていくなぁ。 #JuliaLang
タグ: JuliaLang
posted at 20:55:01
#JuliaLang
using KernelDensity
function makefunc_pdfkde(X)
local ik = InterpKDE(kde(X))
local pdfkde(x) = pdf(ik, x)
return pdfkde
end
1次元のサンプルXからKDEで推定した確率密度函数を返す函数
使い方:
kde_sample = makefunc_pdfkde(sample)
kde_sample(1.5)
タグ: JuliaLang
posted at 21:29:22
#JuliaLang これを以下のように「短く」しては**いけない!**
using KernelDensity
function makefunc_pdfkde(X)
local pdfkde(x) = pdf(InterpKDE(kde(X)), x)
return pdfkde
end
こうやって作った確率密度函数は激遅になる。ik = InterpKDE(kde(X))を1回計算して使い回さないとダメ。
タグ: JuliaLang
posted at 21:31:29
#JuliaLang KDEは離散的なサンプルから連続的なプロットを行うときによく使われる。サンプル(配列)が二次元(2個)の場合には
function makefunc_pdfkde(X,Y)
local ik = InterpKDE(kde((X,Y)))
local pdfkde(x, y) = pdf(ik, x, y)
return pdfkde
end
密度による色付けによく使っている。
タグ: JuliaLang
posted at 21:34:08
#JuliaLang 以上の準備のもとで
import PyPlot; plt=PyPlot
n=10^3
X,Y=randn(n),2randn(n)
X,Y=X+Y,X-Y
f=makefunc_pdfkde(X,Y)
plt.scatter(X,Y,c=f.(X,Y),s=5,cmap="CMRmap")
plt.axes()[:set_facecolor]("k")
plt.axes()[:set_aspect]("equal")
using PyPlotすればplt.は不要になる。 pic.twitter.com/vks0QcUfZ7
タグ: JuliaLang
posted at 21:55:08
#JuliaLang Plotsパッケージじゃなくて、PyPlotパッケージを使うようになってしまいました。Python情報が大量に出回っているのでそれを「真似」すればいいので楽。ただし、axes()[:set_aspect]("equal")のような使い方ができないとPython→Juliaの翻訳は困難。
タグ: JuliaLang
posted at 21:59:47
#JuliaLang Julia経由でPythonのmatplotlib.pyplotを使うときに、日本語フォントを使う方法のまとめが次のリンク先にあります。
gist.github.com/genkuroki/e748...
日本語フォントをPyPlotで使用する方法
この手の「数学」と無関係なところで時間がかかってしまう。
タグ: JuliaLang
posted at 22:04:17
#JuliaLang の確率分布パッケージDistributions.jlの考え方は色々素直でいいです。例えば、ガンマ分布に従う乱数の100個生成は
d=Gamma(25,0.04)
X=rand(d,100)
だし、確率密度函数や累積確率函数は
pdf(d,x)
cdf(d,x)
です。確率分布dを各種確率がらみの函数に代入すると欲しい結果が得られる。
タグ: JuliaLang
posted at 22:09:43
#JuliaLang 混合正規分布のような混合分布もDistributionsパッケージで定義できます。後、結構最近のことなのですが、1次元の確率分布を平行移動とスケール変換してできる確率分布を定義する仕組みも整備されました。
タグ: JuliaLang
posted at 22:11:18
#JuliaLang 自分で確率分布を定義することも簡単です。自分で定義した確率分布dの乱数の発生はquantile()を実装しておけばquantile(d,rand())で勝手にやってくれるようです。もちろんより高速なrandを直接実装してもよい。ソースコードを見れば大抵のことがわかります。
タグ: JuliaLang
posted at 22:13:51
#JuliaLang を使うときに、最初に覚えた方がよいことは「重い計算はすべて函数の中に入れること」です。函数の外にナマで書くと非常に遅くなります。
あと、zero(x)とかone(x)のような書き方。xと同じ型の0や1です。xと同じ型の最大値もしくは無限大はtypemax(x)です。続く
タグ: JuliaLang
posted at 22:20:12
#JuliaLang では函数に何かを代入して計算させようとすると、代入したものの型に応じて、可能な限り適切にすぐさまコンパイルして実行してくれます。様々な型のものを代入しても高速に計算してくれる可能性を高くするためにはone(x)とかzero(x)のような書き方をしておくといいかも。
タグ: JuliaLang
posted at 22:21:49
#JuliaLang 私が非常に感心したのは、そのようなスタイルで書かれた連分数展開を利用させた数値計算用の函数に「文字変数」を代入してLaTeX的に綺麗に成形された連分数の式を出力させることができることを知ったときです。数値計算のコードはまず「紙の上で」最適化するものだと思っていました。続く
タグ: JuliaLang
posted at 22:23:37
#JuliaLang 続き。考え方が古過ぎだった。数値計算用の最適化されたコードの生成は高級言語の各種マクロを使って自動化した方がよい。以前にも紹介しましたが、そういう講義がMITではあるようです。以下のリンク先にJupyter notebookがあります。
nbviewer.jupyter.org/github/steveng...
タグ: JuliaLang
posted at 22:26:33
#JuliaLang の魅力は、言語そのものの魅力だけではなく、その周辺で様々な解説をしてくれる人達の解説が非常に面白いところにもあると思います。Julia言語使いの人の解説は面白いことが多いです。
例えば、次のリンク先には単純な多項式計算の高速化を扱っています。
nemocas.org/benchmarks.html
タグ: JuliaLang
posted at 22:30:14
#JuliaLang nemocas.org/benchmarks.html を見ると、Julia言語で書かれたNemo.jlの多項式計算が全般的に速そうなことがわかります。巨大多項式の高速計算がもしも必要になったら、試してみる価値があると思います。高速多項式計算で困難に出会ったら、解決してくれそうな雰囲気もあるように思える。
タグ: JuliaLang
posted at 22:32:24
#JuliaLang で函数fをf.(x',y)の形式で使うとどうなるか?x,yは単純な1次元の配列(縦ベクトル扱い)だとします。x'はxの転置(中身が複素数なら複素共役もとる)です。f.(x',y)はf(x[j],y[i])を(i,j)成分とする2次元配列になります。PyPlotで
pcolormesh(x,y,f.(x',y))
のような使い方をします。 pic.twitter.com/B5nWomKqnH
タグ: JuliaLang
posted at 22:53:00