その数字、どこから来たのか
表計算のシートに空欄が並んでいて、AIに「埋めておいて」と頼むと、それっぽい数字がすっと入る。アンケートの未回答も、抜けたセンサー値も、違和感のない形で埋まってくれる。便利なんですが、ふと気になることないですか? その数字、誰も測っていないのに、そのまま信じて分析に使っていいのか、と。
「周りから見当をつけている」の先
AIやツールは、埋めたいセルの周りにあるデータや、全体の傾向から見当をつけて数字を入れているわけですが、本当に面白いのはその先です。
同じ「埋める」でも、やり方はいくつもあります。列の平均でざっと埋める。近い行の値を借りる。ほかの列との関係から推定する。どれも空欄は同じように消えます。でも、埋めたあとにグラフを描いたり相関を計算したりすると、埋め方によって結果が変わってきます。空欄を消しただけのはずなのに、なぜ後の分析が動くのか。ここに一つ、常識では説明しきれない不思議があります。
埋め方には「なぜ空いたか」の想定が隠れている
この不思議を、確率の言葉で見られるか、やってみましょう。
鍵になるのは「なぜその欄が空いたのか」です。埋め方を一つ選ぶことは、実は「空欄のでき方」について何かを仮定することとセットになっています。統計では、欠け方をおおよそ三つに分けて考えます。
- 完全にランダムに欠ける。欠けたことと中身が無関係。たとえば通信の不調でランダムに記録が飛んだ場合。
- 観測できている情報で説明がつく。欠けやすさが、埋めたい値そのものではなく、ほかに見えている項目で決まる。たとえば「若い回答者ほど年収欄を空けやすい」なら、年齢という見えている情報で欠けやすさが説明できます。
- 欠けた値そのものが原因。高収入の人ほど年収を書きたがらない、のように、隠したい中身自体が欠測を招く。
どの補完法が妥当かは、この欠け方の仮定に左右されます。列の平均で埋める操作は、観測できた人の平均を欠けた人にもそのまま当てはめます。欠測が完全にランダムでも、後で見るように分散や相関は歪みます。欠けた値そのものが欠測に関わるなら、観測できた平均自体が全体を代表しない可能性まであります。
同じ話が、アンケートにもセンサーにも
この見方は空欄が出るところ全部に効いてきます。顧客アンケートの未記入、工場のセンサーの欠測、医療データの検査漏れ。どれも「なぜ空いたか」を取り違えると、埋めた値が全体を静かに歪めます。
とくに平均で埋める素朴なやり方は、扱いが楽な代わりに副作用があります。埋めた点が全部おなじ値に揃うので、データのばらつきが実際より小さく見え、項目どうしの関係も薄まって見える。埋める前より「きれいに」見えてしまうのが、かえって落とし穴です。
平均で埋めると、ばらつきはどれだけ縮むか
これは式に書き直すと、どれくらい縮むかまで見えます。
全部で $n$ 個のうち、実際に観測できたのが $m$ 個だとします。観測できた値のばらつき、つまり分散は
$$s^2_{\text{obs}} = \frac{1}{m-1}\sum_{i \in \text{観測}}(x_i-\bar{x})^2$$
と書けます。$\bar{x}$ は観測値の平均、和の中身は各値が平均からどれだけ離れているかです。
ここで残りの $n-m$ 個を、すべて平均 $\bar{x}$ で埋めます。埋めた値は平均そのものなので、平均からの離れ(かっこの中)はゼロ。和は一切増えません。それなのに個数だけは $n$ に増えるので、分散を測り直すと
$$s^2_{\text{imp}} = \frac{m-1}{n-1}\, s^2_{\text{obs}}$$
になります。分子は変わらず、割る数だけ $m-1$ から $n-1$ に大きくなる。だから分散は $\frac{m-1}{n-1}$ 倍に縮みます。欠測が多いほど、つまり $m$ が $n$ より小さいほど、この倍率は小さくなり、ばらつきは強く潰れます。半分が欠測なら、この倍率はおよそ半分、つまり分散が半分に縮む計算です。見た目の散らばりの幅(標準偏差)でいえば、およそ0.71倍まで縮みます。直後の散布図で点が寄って見えるのは、この標準偏差の縮みが効いています。
下の図は、右上がりの関係を持つデータに、平均で埋めた点(横一線に並ぶ点)を足したところです。埋めた点は傾きに乗らず平らに並ぶので、全体の関係もぼやけていきます。

ここで見たのは、平均で空欄を埋めると、データそのものの標準偏差が縮む現象です。一方、AIの出来を何回か試して平均を取ると、その平均値のばらつきが $\sigma/\sqrt{n}$ に縮みます。同じおよそ0.71倍が出てきても、縮んでいる対象は別です。

埋めて、測って、また埋める
では、平均のように一つの値で決め打ちせずに埋めると、埋めた数字はどんな姿になるのか。ここも追ってみます。一つの考え方は、「埋める」と「関係を測り直す」を交互に繰り返すやり方です。
まず今わかっている関係を使って空欄を埋めてみる。埋めたデータ全体から、平均やばらつき、項目どうしの関係をもう一度推定し直す。その新しい関係で、また空欄を埋め直す。これを繰り返します。埋める側と、埋めるのに使う推定の側を、お互いに更新し合うイメージです。
ここまで見てきた「平均で埋める」方法と、この「埋めて、関係を測り直す」反復は、いまのAIツールが内部でそのまま動かしている手順そのものではありません。空欄を埋める操作の中で何が起きるのかを見通すための、単純にした模型として眺めています。
この反復を整理したものが、EMアルゴリズムです。ただし実際のEMは、空欄に一つの固定値を入れて確定する手順ではありません。欠けた値を $z$、見えている値を $x$、推定したいモデルの値を $\theta$ とすると、Eステップでは
$$Q(\theta\mid\theta^{(t)}) = E_{z\mid x,\theta^{(t)}}[\log p(x,z\mid\theta)]$$
を計算します。右辺は「今の推定 $\theta^{(t)}$ を使い、欠けた $z$ のあり得る候補を確率で重み付けして、データ全体のもっともらしさを平均する」という意味です。次のMステップでは
$$\theta^{(t+1)} = \mathop{\mathrm{argmax}}_{\theta} Q(\theta\mid\theta^{(t)})$$
として、その平均をもっとも大きくする $\theta$ に更新します。単一の値を決め打ちせず、欠けた部分の不確かさを含めて測り直すところが、平均代入との違いです。
各Mステップでこの最大化を正確に行う標準的なEMなら、観測できたデータの対数尤度、つまりモデルの「もっともらしさ」は反復ごとに下がりません。ただし、到達するのは大域的な最適値とは限らず、初期値によって局所的な山に落ち着くこともあります。下の図は、その単調に落ち着く動きのイメージです。

対数尤度と地続きの「意外さ」を使ってAI文章のクセを見る話は、こちらでも試しています。

埋めた数字を、どれくらい信じるか
そう考えると、空欄を埋めた数字は「答え」ではなく、「なぜ空いたか」という仮定の上に立った推定だと見えてきます。同じデータでも、その仮定を変えれば埋まる数字も、そこから出る結論も変わる。
次にAIが空欄をすっと埋めてくれたとき、「どんな欠け方を想定して、この数字を置いたんだろう?」と一言だけ問い返せるとしたら。埋まった表を鵜呑みにするか、埋めた数字の重みを一段割り引いて読むか、その判断が自分でできるようになるかもしれませんね?
