概要
実装例は沢山あるものの,簡単に使えるWebツール的なものが見当たらなかったため作ってみました.Google Colaboratoryで作ったので「簡単に使える」とは言えないかもしれませんが,CoLabのフォーム機能を使用しつつ使い方を記載しているので,データエンジニアでない方でも使えるかと思います.今回は作ったツールの共有とざっくりとした感想が主です.
以下がそのツール
コード
https://github.com/o93/bayesian-ab
ベイジアンABテストについては過去記事にしています.
難しく考えずにベイジアンABテストを試してみた
前提条件(2022/1/9追記
過去記事も含めて理論的な説明をする記事ではないため(そもそも自分の実力では現状それができない),出てくるワードの意味が間違っているかもしれません.指摘は頂けると有り難いです.最近,個人的に,「役立つなら良いじゃん」,「ちゃんと理解しないと..」という両方の思いがせめぎ合っていますが,詳細を理解せずに使っている人が居てこそ,世の中がより速く発展していけるとも感じています.
使い方
ここにアクセスします
右上の接続ボタンを押します
接続ボタンがあったところにRAM・ディスク
が表示されると,ツールが動作可能になります
使い方
を読んだ上で,入力欄に必要な情報を入力します
初期値が入力されているので,必要に応じて差し替えてください
フォームの左上にある再生ボタンを押します
確率分布のグラフやベイジアンABテストの結果が表示されるかと思います
前回の記事と異なる部分
Google ColaboratoryのUI機能がめっちゃ便利!
値を入力できるフォームを利用しました.デザイン的な制限はありますが,APIやWebサービスを立ち上げなくても簡単なデータ分析機能を提供することができます!計算リソースはそれぞれ使用者のGoogleアカウントに紐づいて使用されるため,提供者がサーバー費用を負担する必要もありません.コード丸見えですけど..
フォームは以下のような記述だけで実装できます.
#@markdown しきい値を入力
threshold = 0.9 #@param {type:"number", min:0.0, max:1.0}
参考: ColabにUIをつける小技集
今回使用していませんが,ボタンは以下のように参考記事よりシンプルに実装できます.
import ipywidgets as widgets
from IPython.display import display
def on_clicked(b):
with output:
print('Click!')
button = widgets.Button(description='Submit')
output = widgets.Output()
button.on_click(on_clicked)
display(button, output)
グラフ表示範囲を大事な箇所に絞る工夫
サンプルデータが極端に少ない場合を除いてCV率の確率分布が0.0
〜1.0
に広がっているとは限らないため,グラフ表示の際に表示データを以下のように絞っています.
# 表示範囲を限定
plot_index = np.where((pa > 0.00001) | (pb > 0.00001))
p_pa = pa[plot_index]
p_pb = pb[plot_index]
極端に確率の値が低い範囲を除外した配列のindex
をnp.where
で取得して適用しています.
感想と今後
最初はStreamlitでCloud Run
にデプロイ,みたいなことを目論んでいましたが,めんどくさくなってCoLabで実装してみたところ,思っていたより汎用的に利用できることが分かりました.簡単なパラメータ調整はフォーム機能があるし,ファイルはドラッグ&ドロップでアップロードできます.UIに拘らなければ色んな検証・分析ツールが作れそうでした!
今後は以下のようなことを考えています,,時間あるときにできたらいいな..
- PyMC3を使用したビジュアライズ
- より汎用的なベイズ推論,因果推論のツール化