グロースハックのための施策テスト設計

PDCAサイクルにおいて、バイアスを除去した効果検証(Check)を行うためにはどのようなPlanningを行う必要があるかをまとめる。 要約 以下のいずれかに該当するようにテストを設計する 施策の対象者の選択(介入)ロジック 指標の予測可否 介入条件の予測可否 介入群と同様なトレンドの群がある 介入を連続値の閾値で決定している 効果検証手法 完全ランダム - - - - 無作為化比較試験 人為的 可 - - - 回帰分析 人為的 不可 可 - - 傾向スコアマッチング 人為的 不可 不可 はい - Causal Impact 人為的 不可 不可 いいえ はい 回帰不連続デザイン a. 無作為化比較試験(A/Bテスト) 適用ケース 無作為に適用される施策であること ex.トップページのデザイン変更 ユーザーアカウントがテスト/コントロール群のどちらに割り振られたかがデータからわかること 特定の条件を満たしたユーザーにのみ影響する施策は選択バイアスを考慮する必要があるためこの手法は使えない。 ex. アンケートに回答したユーザーにクーポンを送付、クーポンの売上への貢献度を調べたい場合など。 アンケートに回答している時点で購入意欲が高く、クーポン有/無のグループの性質が異なっているため比較ができない。 このケースでA/Bテストを適用したければ アンケートに回答したユーザーからランダムでクーポン配布 とすれば選択バイアスを打ち消せるが、サンプル数確保、ユーザー体験、ビジネス機会損失などを考慮する必要がある。 検証手順 施策によって改善される指標を決定 (PdM) ex. 訪問頻度、滞在時間 テスト群の割合、テスト期間の決定(PdM, DS) 施策が適用される人数 (ex. テスト期間中における新トップページのアクセスUU数) が1000人を超えるように見積もる A/Bテストの実施 (Dev) LaunchDarklyなどを用いる 統計的仮説検定 (DS) p-hacking回避のため、2で決めたテスト期間の終了時に一度だけ検定を行う。...

March 4, 2024

AutoMLライブラリ MLJARを使う

MLJARとは MLJARは、自動機械学習(AutoML)フレームワークであり、データの前処理、特徴量生成、モデルの選択、ハイパーパラメータの最適化、アンサンブル学習など、機械学習の一連の流れを自動化することができます。 auto-sklearn、H2O、AutoGluonといった競合に対して高いスコアを誇り、更にモデルの解釈性を高めるための機能も備えています。 触ってみたところ雑にデータを突っ込むだけで分析コンペでもある程度戦えるモデルができてしまいました。 ChatGPTに使い方を聞いても微妙に間違っていたりするのでここにまとめておきます。 インストール 1 pip install mljar-supervised 学習 1 2 3 4 5 6 7 8 9 10 11 import pandas as pd from supervised.automl import AutoML train_df = pd.read_csv("train.csv") X = train_df.drop('target', axis=1) y = train_df['target'] automl = AutoML(ml_task="classification", eval_metric="accuracy", mode="Compete") automl.fit(X_train, y_train) print("score:", automl.score(X, y)) ml_task タスクの種類 auto binary_classification multiclass_classification regression のいずれか eval_metric 評価指標 binary_classification:logloss, auc, f1, average_precision, accuracy multiclass_classification: logloss,f1,accuracy regression: rmse, mse, mae, r2,mape,sperman,pearson mode Explain 解釈性を重視したモデルを選択する Perform バランス重視 Compete 分析コンペ向け Optuna 学習時間を度外視したスコア特化 モデルの解釈 1 automl....

April 26, 2023

Pythonデータ分析チートシート

データのロード CSVファイルのロード 1 2 import pandas as pd pd.read_csv('./data.csv') BigQueryクエリ結果のロード 1 2 3 4 5 6 7 8 9 10 import pydata_google_auth import pydata_google_auth.cache from google.cloud.bigquery import Client credentials = pydata_google_auth.get_user_credentials( scopes = ['https://www.googleapis.com/auth/bigquery'], ) client = Client(project="myprojectname", credentials=credentials) job = client.query("SELECT * FROM mytable;") df = job.to_dataframe() データ仕様の把握 データの中身を見る 1 2 df.head() # 先頭 df.tail() # 末端 スキーマ情報を見る 1 df.info() 1 2 3 4 5 6 7 8 9 <class 'pandas....

December 28, 2022