📚

「ウェブ最適化ではじめる機械学習」を読んだので内容をまとめてみる

2024/08/07に公開

はじめに

はじめまして。地方でデータサイエンティストとして働いているミヤと言います。
以前通読したウェブ最適化ではじめる機械学習という書籍について、内容をメモ書きしつつ学習をしていましたので、改めてブログ記事という形で内容をまとめ直し、投稿しようと思います。
この書籍は、ウェブサイトを運用する上で、ウェブページ設計における候補が複数ある場合に、どの設計のページがユーザーに興味を持ってもらえるか、定量的に評価する手法を説明した書籍となっています。UI/UX改善業務に従事するようなウェブ業界で働くデータ分析者にとって有用な書籍となるでしょう。
本書では、PyMCによるMCMCサンプリングを行いますが、サンプルコードが古く動作しない場合があります。
以前私が作成したブログに対処法をまとめていますので、併せて参考にされてください。


https://www.oreilly.co.jp//books/9784873119168/

前提知識

本書はデータ分析の基礎を抑えている中級者向けの内容となっています。
下記のような前提知識があると、より深く内容を理解できると思われます。

  • Python: 基本構文、Numpy, Matplotlib, PyMC
  • 確率・統計: 仮説検定、MCMCシミュレーションなど
  • 線形代数: ベクトル、行列
  • 最適化手法

各領域において深い知識は要求されないので、基本的な理解があれば十分だと思われます。

対象読者

この本は下記のような方にお勧めです。

  • 統計学もしくは機械学習を活用したいと考えているWebエンジニア
    • 普段はWebサイトのフロントエンド開発もしくはサーバーサイド開発を中心にしているが、業務で直接機械学習に触れる機会があまりないエンジニア
  • Webマーケティングに携わる担当者、Webマーケター
    • 普段からWebサイトの訪問者数拡大や収益率向上に向けて施策を考え、実行している担当者・マーケター
  • より分析の幅を拡げるたいデータサイエンティスト/アナリスト

内容

本書は、ウェブ最適化の分野において、ユーザーの行動分析機械学習を用いることの重要性を説いたものです。
Webサイトへの変更は、良かれと思って行ったことでも、ユーザーによっては逆効果になってしまうことがあります。これは開発者の視点とユーザーのニーズが必ずしも一致するとは限らないことに起因しています。そこで、ユーザーの行動を観察し、データに基づいてWebサイトを改善していくことが重要になります。

そのための有効な手段として、A/B テストや多腕バンディット問題、ベイズ最適化といった統計学や機械学習の手法が紹介されています。これらの手法を用いることで、ユーザーの反応を見ながら、より効果的なデザインや機能を効率的に見つけることが可能になります。

1章 A/Bテストからはじめよう: ベイズ統計による仮説検定入門

この章では、Webサイト最適化の入門として、A/Bテストとベイズ統計を用いた仮説検定の基本的な考え方を解説しています。

  • A/Bテストのインパクト: シンプルなA/Bテストが、ビジネスに大きな影響を与えることができることを、2008年のアメリカ合衆国大統領選挙におけるオバマ陣営のWebサイト事例を通して説明している。
  • A/Bテストにおけるデータ生成プロセス: 架空のA/Bテストのレポートを例に、デザイン案とクリック率の関係を、クリック率を表す確率変数θクリックの有無を表す確率変数rを用いて説明している。そして、これらの確率変数の関係を図示することで、データ生成プロセスを可視化している。
  • 確率分布: 確率変数が取る値と、その確率の関係を表す確率分布について、離散値と連続値の場合に分けて解説している。
    • 離散値の確率分布: サイコロの例を用いて、一様分布について説明。 また、商店街の福引の例を用いて、カテゴリカル分布について説明。
    • 連続値の確率分布: 身長の例を用いて、連続値の場合の確率分布の表現方法について説明。 また、連続一様分布と確率密度関数について解説し、確率密度関数を離散化することで確率質量関数に近似する方法を説明している。
  • ベイズの定理: 条件付き確率の概念から、**データを観測する前のパラメータの信念(事前分布)**と、**データを観測した後のパラメータの信念(事後分布)**の関係を表す。
  • ベイズの定理を用いたクリック率の推論: A/Bテストのレポートを例に、事前分布として一様分布を仮定し、尤度関数としてベルヌーイ分布を用いることで、ベイズの定理に基づいてクリック率の事後分布を計算する方法を説明している。 また、複数のデータが得られた場合に、ベイズの定理を繰り返し適用することで事後分布を更新していくベイズ更新についても触れている。
  • 事後分布に基づいた意思決定: 事後分布を解釈し、意思決定に役立てるための方法として、要約統計量事後分布からのサンプリングがある。
    • 要約統計量: 期待値、最頻値、中央値、分散、標準偏差、パーセンタイル、四分位数などの指標。これらの指標を用いて事後分布の特徴を要約する方法を示している。
    • 事後分布からのサンプリング: 事後分布から得られたサンプルを用いて、関心のある指標の分布を推定する方法を説明。具体的には、クリック率の差の分布をヒストグラムで可視化し、その期待値が0より大きくなる確率を計算することで、A/Bテストの結果を評価する。
  • ベイズ統計を用いたA/Bテストの実装: これまで説明してきたA/Bテストのデータ生成プロセス、ベイズの定理、事後分布に基づいた意思決定を、Pythonのコードを用いて実装する方法を解説。

2章 確率的プログラミング: コンピュータの助けを借りる

この章では、1章で説明されたベイズ推論をより複雑な問題に適用するために、確率的プログラミングのアプローチを紹介しています。

  • 複雑な計算の課題: 1章では、ベルヌーイ試行を通じてベイズ推論を適用し、事後分布を計算した。しかし、データの種類やモデルが複雑になると、事後分布を手計算で導出することは困難になる。
  • 確率的プログラミングの導入: この章では、PythonのライブラリであるPyMCを用いて、統計モデルをプログラムとして記述し、コンピュータの助けを借りて事後分布を推論する
  • MCMCによるサンプリング: PyMCでは、**マルコフ連鎖モンテカルロ法(MCMC)**と呼ばれるアルゴリズムを用いて、事後分布からのサンプルを生成する。これにより、複雑な計算を直接行うことなく、事後分布の特徴を把握することができる。
  • 確率的プログラミングの適用例: 具体的な例として、レビュースコアの真の分布の推定と、Webサイト滞在時間のA/Bテストを扱っている。
    • レビュースコアの真の分布の推定: 5段階評価のレビュースコアを例に、各評価値が生成される確率を表現するカテゴリカル分布と、その事前分布として用いるディリクレ分布を用いて統計モデルを構築。そして、PyMCを用いて事後分布を推論し、各評価値の確率や平均レビュースコアの分布を可視化。
    • Webサイト滞在時間のA/Bテスト: ユーザのWebサイト滞在時間を指数分布を用いてモデル化し、PyMCを用いて各デザイン案における平均滞在時間の事後分布を推論している。そして、事後分布の可視化や95% HDIを用いた比較を通して、デザイン案の効果を検証。
  • ベイズ推論と従来の統計的仮説検定: 従来の統計的仮説検定(NHST)と比較して、ベイズ推論はより柔軟で解釈しやすい仮説検定を可能にする点が強調されている。具体的には、事後分布から様々な統計量を計算できることや、関心のある仮説に応じて柔軟に検定を設計できることが利点として挙げられる。

3章 組合せのあるテスト: 要素に分解して考える

この章では、Webサイトのように複数の要素の組合せから成る対象に対して、効果的なA/Bテストを設計・分析する方法を解説しています。

  • 要素の組合せによるテストの課題: Webサイトのデザインのように、複数の要素を同時に変更する必要がある場合、考えられる組合せは膨大になり、一つずつテストすることは現実的ではない。
  • 要素の効果に着目したモデリング: この章では、個々のデザイン案を比較するのではなく、それぞれの要素がもたらす効果を分析するアプローチを提案していく。具体的に、ヒーロー画像とCTAボタンの種類という2つの要素を例に、それぞれの要素がクリック率に与える影響を統計モデルで表現する。
    • ダミー変数の導入: 要素の種類を0と1の値で表すダミー変数を導入することで、要素の効果を統計モデルに組み込む。
    • 線形モデルとロジスティック関数: 各要素の効果を線形結合で表現し、さらにロジスティック関数を適用することで、クリック率として適切な0から1の範囲の値に変換する。
    • 正規分布を用いた事前分布: 各要素の効果を表すパラメータに対して、正規分布を事前分布として設定する。
  • 交互作用: 要素を組合せることで、個々の要素の主効果に加えて、組合せによる効果(交互作用)が生じる可能性がある。
    • 交互作用の例: サンプル写真と「詳しく見る」ボタンの組合せのように、個々の要素では良い効果が期待されても、組合せによってクリック率が低下するケースが紹介されている。
    • 交互作用を考慮したモデル: 交互作用項を導入することで、要素の組合せによる効果を統計モデルに組み込むことができる。
  • モデル選択: 複数の統計モデルから、最適なものを選択するプロセスについて解説している。
    • モデルの解釈性: 交互作用項を含まないシンプルなモデルは解釈しやすいという利点がある。
    • データへの適合度: 交互作用がデータに顕著に現れている場合は、交互作用項を含むモデルの方がより適切にデータを表現できる。
  • 直交計画: 要素の組合せを効率的に評価するための実験計画法として直交計画を紹介している。
    • 組合せ数の削減: 直交計画を用いることで、テストする必要がある組合せの数を減らすことができる。
    • ウェブ最適化における適用: Webサイトでは、比較的容易にさまざまな組合せをテストできるため、直交計画の利点は薄まる。

4章 メタヒューリスティクス: 統計モデルを使わない最適化手法

この章では、Webサイトの最適化において、統計モデルを仮定せずに、より良いデザイン案を効率的に探索する手法であるメタヒューリスティクスについて解説しています。

  • 統計モデルに基づく手法との違い: これまでの章では、統計モデルを構築し、そのパラメータを推定することで、デザイン要素の効果や最適な組合せを分析してきた。一方、メタヒューリスティクスは、モデルの推定を介さずに、より良い解を探索するアプローチを採用している。
  • 山登り法: メタヒューリスティクスの基礎となる探索アルゴリズム
    • アルゴリズム: 現状解の近傍にある解を評価し、より良い解があれば現状解を更新することを繰り返す、シンプルなアルゴリズム。
    • 局所最適解の問題: 山登り法は、解空間全体の中で最も良い解(大域的最適解)ではなく、その近傍でのみ最も良い解(局所最適解)に陥ってしまう可能性がある。
    • 「順々に」要素を決定するテストとの関係: 要素を一つずつ順番に決定していくテストは、山登り法の一種と解釈できる。そのため、局所最適解に陥り、全体として最適な組合せを見逃してしまう可能性がある。
  • 局所最適解からの脱出: 山登り法の局所最適解の問題を克服するために、乱数を導入した探索手法がある。
    • 乱択山登り法: 近傍解をランダムに選択することで、局所最適解から抜け出す可能性を高める。
    • 焼きなまし法: ランダムに選択した近傍解が現状解よりも悪くても、ある確率で受理することで、局所最適解からの脱出を可能にする。
  • 遺伝的アルゴリズム: 生物進化の過程に着想を得たメタヒューリスティクスとして、遺伝的アルゴリズムがある。
    • アルゴリズム: 複数の解を「個体」として表現し、淘汰、交叉、突然変異といった操作を繰り返すことで、より良い解を探索する。
    • 淘汰: 評価値の高い解を優先的に選択することで、より良い解が生き残りやすくなるようにする。
    • 交叉: 解の特徴を組み合わせることで、新たな解を生成する。
    • 突然変異: 解にランダムな変化を加えることで、解の多様性を保ち、探索範囲を広げる。
  • メタヒューリスティクスの利点:
    • 問題に対する事前知識がなくても適用できる。
    • 複雑な目的関数に対しても、比較的良い解を効率的に探索できる。
    • 人間の感性を評価関数とするような問題にも適用できる。

遺伝的アルゴリズムは手法は聞いたことがあったがコードを動かすことは初めてで勉強になった。ただしこの領域では使いどころは限られるように感じた

5章 バンディットアルゴリズム: テスト中の損失にも向き合う

この章では、A/Bテストのように新しい施策を試す際に生じる可能性のあるテスト中の損失を考慮した枠組みとして、確率的バンディット問題と、その解決策となるバンディットアルゴリズムについて解説されています。

  • A/Bテストにおける損失の問題: これまでの章では、事前に収集したデータに基づいて、複数のデザイン案の中から最適なものを選ぶ方法を検討してきた。しかし、新しいデザイン案を試す際には、そのデザイン案が現在のデザインよりも悪い結果をもたらす可能性があり、テスト期間中に損失が発生することが考えられる。
  • 探索と活用のジレンマ: 確率的バンディット問題は、限られた試行回数の中で、複数の選択肢(腕)から最良のものを選択する問題となる。この問題設定では、新しい選択肢を試すことで情報を得る探索と、過去の情報に基づいて最良と思われる選択肢を選ぶことで報酬を最大化する活用のバランスが重要になる。
  • 確率的バンディット問題:
    • 複数の選択肢があり、それぞれの選択肢は固有の報酬の期待値を持っていると仮定する。
    • エージェントは、試行ごとに選択肢を選び、その選択肢に対応する報酬を受け取る。
    • エージェントの目標は、試行回数全体で得られる累積報酬を最大化すること。
  • バンディットアルゴリズム: 確率的バンディット問題を解くためのアルゴリズムとして、次のようなものがある。
    • ε-greedy アルゴリズム: ある小さな確率 ε でランダムに選択肢を選び(探索)、それ以外の確率 (1 - ε) で報酬の標本平均が最大となる選択肢を選ぶ(活用)。
    • 焼きなまし ε-greedy アルゴリズム: ε-greedy アルゴリズムの探索確率 ε を時間経過とともに減衰させることで、探索と活用のバランスを調整する。
    • ソフトマックスアルゴリズム: 各選択肢が選ばれる確率を、その選択肢の報酬期待値に基づいて計算する。
    • トンプソン抽出: 各選択肢の報酬期待値の事後分布からサンプルを生成し、最も高いサンプル値を持つ選択肢を選ぶ。
    • UCBアルゴリズム: 各選択肢の報酬期待値の信頼区間の上限値を計算し、最も上限値が高い選択肢を選ぶ。
  • バンディットアルゴリズムの利点:
    • テスト期間中の損失を考慮しながら、最適な選択肢を効率的に探索できる。
    • Webサイトのデザイン最適化だけでなく、ゲームデザインや推薦システムなど、さまざまな分野に応用できる。

6章 組合せのバンディット: バンディットアルゴリズムと統計モデルの出会い

この章では、選択肢が複数の要素の組合せで表される場合に、効率的に最適な組合せを見つけ出す方法として、文脈付きバンディット問題と、その解決策となる組合せバンディットアルゴリズムについて解説されています。

  • 組合せ構造を持つ問題への対応: 第3章では、Webサイトのデザインのように、選択肢が複数の要素の組合せで表される場合に、統計モデルを用いることで効率的に最適な組合せを見つけ出す方法を学んだ。本章では、この考え方をバンディット問題に応用する。
  • 文脈付きバンディット問題:
    • 選択肢が、色や形などの特徴量の組合せで表現される。
    • それぞれの選択肢は、その特徴量に基づいて決定される固有の報酬期待値を持っている。
    • エージェントは、試行ごとに選択肢を選び、その選択肢に対応する報酬を受け取る。
    • エージェントの目標は、試行回数全体で得られる累積報酬を最大化すること。
  • 線形モデルと一般化線形モデル: 特徴量の組合せと報酬期待値の関係を表現する方法として、線形モデル一般化線形モデルがある。
    • 線形モデル: 報酬期待値を、特徴量とパラメータの線形結合で表現する。
    • 一般化線形モデル: 線形モデルを拡張し、ロジスティック関数などのリンク関数を用いることで、より複雑な関係を表現できるようにしたもの。
  • MCMCをバンディットにつかう: 統計モデルのパラメータを推定する方法として、**マルコフ連鎖モンテカルロ法(MCMC)**を用いることができる。しかし、MCMCは計算コストが高いため、バンディットアルゴリズムのように逐次的にパラメータを更新する必要がある場合には適していない。
  • ベイズ線形回帰モデル: 線形モデルのパラメータを効率的に推論する方法として、ベイズ線形回帰モデルが紹介されている。このモデルでは、パラメータの事後分布を閉じた形で求めることができる。
  • LinUCBアルゴリズム: ベイズ線形回帰モデルとUCBアルゴリズムを組み合わせたアルゴリズム。各選択肢の報酬期待値をベイズ線形回帰モデルで推定し、その値と不確かさ(分散)に基づいてUCB値を計算する。そして、UCB値が最大となる選択肢を逐次的に選択する。

7章 ベイズ最適化: 連続値の解空間に挑む」の内容

この章では、リンクテキストの色のように、選択肢が色の組み合わせなど、連続値で表される場合に、最適な解を見つけ出す方法として、ベイズ最適化について解説されています。

  • 連続値で定義される解空間への対応: これまでの章では、選択肢が離散値で表される場合を扱ってきましたが、本章では、Webサイトのデザイン要素のように、選択肢が連続値で表される場合を扱う。
  • ベイズ最適化: 未知の関数 f(x) を最大化する x^* を、評価値が限られた状況で効率的に探索する手法。 特に、評価値を得るのにコストがかかる場合に有効。
    • ガウス過程: 未知の関数 f(x) に対する信念を表現するために用いられる。 ガウス過程は、関数 f を確率変数とみなした確率分布であり、その分布が多次元正規分布で表されるものとなる。
      • カーネル関数: 入力空間における2つの変数の近さを、特徴空間における内積を用いて表現する。 カーネル関数を用いることで、特徴量を明示的に計算することなく、高次元空間における内積を計算することができる。
      • カーネルトリック: 特徴量を明示的に計算することなく、カーネル関数のみを用いてガウス過程の計算を行うことができるというアイデア。
    • 獲得関数: 次にどの点を評価すべきかを判断するために用いられる。 獲得関数は、探索と活用のバランスを取るように設計される。
    • GP-UCBアルゴリズム: ガウス過程を用いて報酬の期待値と不確かさを推定し、UCB値が最大となる解を逐次的に選択するアルゴリズム。 期待値が高いほど、不確かさが低いほど、UCB値は大きくなる。
    • GP-TSアルゴリズム: ガウス過程を用いて報酬の期待値の事後分布を推定し、その分布からサンプリングした値に基づいて解を逐次的に選択するアルゴリズム。 期待値の事後分布から大きい値がサンプルされやすいという性質を利用して、探索と活用のバランスを取っている。
  • 解空間のデザイン: ベイズ最適化を適用する際には、解空間を適切に設計することが重要になる。 解空間が適切に設計されていない場合、最適化がうまくいかないことがある。 例えば、解空間として表現力の高いものを採用すると、多様な解を探索できる一方で、探索の難易度が高くなるというトレードオフが存在する。

8章 これからのウェブ最適化

この章では、従来のウェブ最適化手法の限界を再検討し、新たな課題とその解決策を提案しています。

  • 短期的・長期的評価のバランス

    • これまでの最適化は、クリック率や滞在時間など短期的な反応に焦点を当てていた。しかし、長期的なユーザー体験を考慮しない場合、収益減につながるリスクがある。
    • 長期的な指標(リピート率、離脱率)も考慮し、機械学習で予測するアプローチが提案されている。
  • 解空間のデザイン

    • 解空間のデザインは、最適化の成否を左右される。
    • 人間による設計には限界があり、柔軟な解空間を採用することで革新的な解を見つける可能性があるが、探索の難易度が上がる。
  • 変分オートエンコーダの利用

    • 変分オートエンコーダにより、高次元データを低次元の特徴空間に圧縮し、効率的な最適化が可能。
    • 例として、MNISTの手書き数字データの探索が挙げられる。
  • Webサイト以外への応用

    • ウェブ最適化の方法論は、インターネット接続製品など他分野にも応用可能。
    • 即時変更可能でユーザーの反応を計測できるサービスに適用できる。

おわりに

今回は「ウェブ最適化ではじめる機械学習」の内容をまとめさせていただきました。
Webページの適切な最適化を達成することにより、自社製品をより認知されることに繋がり、上手くいけば売上向上に寄与します。
シミュレーションや強化学習のような応用的な手法が紹介されていますが、実際の業務においては複雑な状況下で様々な要因を加味しつつ実装することになると思われます。
しっかりと現実の状況と向き合いつつ、どのような手法が適切か考察することも重要であると感じました。

私もまだまだ勉強中ですので、引き続き学習を進め実践的な場に対応できるようなスキルを養っていきます。

Discussion