Posts for: #Python

WAIC

かなり前に「渡辺澄夫ベイズ理論100問 with R/Stan」を読み終わったのもあり、忘れないうちにWAICを自分なりにまとめておきます.

WAIC

WAICの適用範囲

情報量基準のAICやTICは正則性を仮定していますが、実際には正則性が成り立たないケースが多いです.
WAICは正則性を仮定せずとも利用できる情報量基準になっていて、適用範囲が広いです.ただし、どんなケースでもOKかといえばそうではなく、次の条件を満たしている必要があります(「渡辺澄夫ベイズ理論100問 with R/Stan」の(1.21)).

magma-nvimで理想に近いVimでのJupyter環境を作る

magma-nvimで理想に近いVimでのJupyter環境を作る

vimで開発しているとブラウザからJupyterを触るのが嫌になってきます。

  • 開発中にターミナルとブラウザへ移動が面倒
  • vimで使っているformatterとかlinterをそのまま使いたい
  • Jupyter上でもvimキーバインドを設定しているけど、ブラウザのキーバインドと被る
  • vimからIPython上に実行結果を表示する方法もあるが、残念ながらめんどくさかったりで運用面があわない
  • PyCharmやVSCodeを使えばいいじゃんという声が聞こえてきますが、とりあえずPyCharmは気になるところが多くて疲れました…

前々からvimで完結するようにしたいなぁと思っていたのですが、ようやくそれがある程度実現されてきたので紹介していきます。

FastAPI + uvicornの構成のサーバーで時間経過でメモリ使用量が増えるとき

FastAPI + uvicornの構成のサーバーで時間経過でメモリ使用量が増えるとき

問題発生時の状況

AWSのECS上にFastAPI + uvicornの構成でのサーバーをたてました。内容的には普通のREST APIです。
とりあえずは順調に動作していたのですが、たまにコンテナが再起動しているっぽいけどなんだろうと思って調べていたところ、メモリ使用量が次のようになっていました。
メモリ使用量

m3u8ファイルとtsファイルのdownload

ライブストリーミングや動画の配信するためにm3u8とtsファイルを利用するケースがあります。 tsファイルは細切れになった小さい動画になっており、m3u8ファイルはそれらの情報をもっているプレイリストになります。

Sum Treeで重みにそってサンプリングする(Python実装)

Sum Treeで重みにそってサンプリングする(Python実装)

問題設定

次のような設定でサンプリングをしたいことはよくあると思います。

3つのデータがあり、それぞれに重みがつけられているとする。
それぞれ、データ1の重みは10、データ2の重みは20、データ3の重みは30である。
このときに各データの重みと全体の重みの和の比を確率としてサンプリングをしたい。
つまり、データ1は10/60、データ2は20/60、データ3は30/60の確率でサンプリングすることになる。

シンプルな方法

さきほどの問題設定のとき、簡単にサンプリングする方法は正規化された重みの和を順に足していき、一様分布からサンプリングした乱数がその和を超えたときのデータを取得するという方法です。 手順は次のようになります。

KL divergenceに与える分布を入れ替えることの意味をまじめに考えたことあります?

KL divergenceに与える分布を入れ替えることの意味をまじめに考えたことあります?

本記事はQrunchからの転載です。


みんながよく使うKL(Kullback–Leibler) divergenceの話題です。 KL divergenceといえば2つの確率分布の違いを計算できるやつですね。 KL divergenceは対称性というものがなく、与えられた2つの分布を入れ替えるとKL divergenceの値が変わります。 今回は、この入れ替えたときの影響を最小化問題を例としてまじめに考えます。