理論と実験|研究の問い・新規性・検証

このページはプロモーション(広告)を含みます。

研究の問い・新規性・検証(中級・読む30分+演習35分)

この授業のゴール

仕事でどう使うか

研究の主張を支える証拠は、大きく理論と実験の2種類です。理論は「この仮定のもとでは必ずこうなる」を示し、実験は「この条件で調べたらこうだった」を示します。どちらか一方だけでは、主張の範囲が限られます。

路線 この授業の使いどころ
DS(データサイエンティスト) 分析結果を「式から言えること」と「データで観測したこと」に分けて報告する。式の前提(独立性など)が自社データで成り立つかを確認する
ML(機械学習エンジニア) 手法の理論的な性質(例:データが増えれば誤差が減る)と、自社データでの実測を比べ、食い違いから不具合や前提の崩れを見つける
DX(DX推進・AI企画) 「理論上は効果がある」という説明を、実際の業務データでの検証とは別物として扱い、PoCで確かめる項目を決める
RS(研究者) 論文で、定理・導出(理論)とシミュレーション・実データ実験を組み合わせ、それぞれが支える主張を書き分ける

この授業では、森さんの研究の「類似商品の情報を借りると、どの条件で誤差が減るか」を、まず式で予想し、次にシミュレーションで確かめます。

前提

次の言葉を使います。不安があれば先に戻ってください。

この授業では、Pythonの numpy(数値計算のライブラリ)で乱数を使ったシミュレーションを実行します。コードは画面内で実行できます。

身近な状況:「借りたほうがいい」はいつ成り立つ?

森さんの手元には、問いと仮説 の実験結果があります。履歴が短い商品群では、類似商品の情報を混ぜる提案法のほうが誤差が小さく、履歴が長くなると逆転していました。

履歴 1週 2週 3週 4週 8週 12週
相対削減率(%) 17.7 13.6 10.0 5.4 −1.7 −5.8

青井先生は聞きました。「なぜ履歴が長くなると逆転するのか、説明できる? 説明できれば、他の店でもどこで逆転するか予想できる。」

森さんは考えました。

つまり、「自商品の平均のばらつき」と「類似商品とのずれ」のどちらが大きいかで、良い方が決まりそうです。この直感を式にするのが理論、本当にそうなるかをデータで確かめるのが実験です。

直感的な説明:理論は「地図の作図」、実験は「現地の測量」

理論と実験の違いを、地図で考えます。

研究では、両方を組み合わせます。

  1. 理論で「どこで何が起きるか」を予想する。
  2. 実験で予想どおりかを確かめる。
  3. 食い違ったら、理論の前提のどれが現地で崩れているかを調べる。

その中間にあるのがシミュレーション(模擬実験)です。コンピュータの中に「理論の前提どおりの世界」を作って測ります。シミュレーションで予想どおりになれば、計算(導出)に誤りがないことは確かめられます。しかし、現実が前提どおりかは分かりません。

注意:「理論的に正しい」は「現実でも必ずそうなる」という意味ではありません。「この前提が成り立つなら」という条件つきの正しさです。逆に、「実験でうまくいった」は「調べた条件では」という範囲つきの事実です。

正確な定義:誤差の式から「逆転する履歴の長さ」を導く

理論(theory):明示した仮定から、論理と計算で結論を導いたもの。仮定を満たすすべての場合に結論が成り立つ。
実験(experiment):条件を決めてデータを観測し、結果を測ったもの。調べた条件の範囲で結論が成り立つ。
シミュレーション(simulation):仮定どおりにデータを人工的に生成して行う実験。導出の確認や、条件を細かく変えた予想に使う。

ここから森さんの理論です。まず仮定を明示します。

自商品の平均($n$ 週分の平均)のMSEは、統計学でよく知られた結果から

$$\text{MSE}_{\text{自}} = \frac{\sigma^2}{n}$$

です(平均をとると、ばらつきの二乗が $n$ 分の1になる)。類似商品の平均をそのまま使うと、誤差は毎回 $\Delta$ なので

$$\text{MSE}_{\text{借}} = \Delta^2$$

です。借りるほうが良いのは $\Delta^2 < \sigma^2 / n$、つまり

$$n < \frac{\sigma^2}{\Delta^2}$$

のときです。右辺を逆転点 $n^*$ と呼ぶことにします。

数値を代入します。$\sigma = 10$ 個、$\Delta = 4$ 個なら、$n^* = 100 \div 16 = 6.25$ 週です。

履歴 $n$ $\text{MSE}_{\text{自}} = 100/n$ $\text{MSE}_{\text{借}} = 16$ 良い方
4週 25 16 借りる
6週 約16.7 16 借りる(僅差)
8週 12.5 16 自商品

理論の予測:履歴が6週以下なら借りるほうが良く、7週以上なら自商品の平均が良い。ずれ $\Delta$ が大きい(似ていない)ほど、逆転点は早く来る。例えば $\Delta = 8$ なら $n^* = 100 \div 64 \approx 1.6$ 週で、2週目からもう借りないほうが良い。

これは、L02の表で「履歴が長いと逆転した」現象を説明し、さらに「似ていない商品ほど早く逆転する」という新しい予測を生みます。

段階付き例題:シミュレーションで導出を確かめる

入力:仮定1〜3どおりの世界を作ります。本当の週平均 $\mu = 50$ 個、類似商品の平均 $m = 54$ 個($\Delta = 4$)、$\sigma = 10$ 個。

ステップ1:仮想の商品を作る。rng.normal(mu, sigma, size=(reps, n)) は、平均 mu・標準偏差 sigma の正規分布(左右対称の山形の分布)から乱数を reps 行 × n 列生成する関数です。1行が「1つの仮想商品の n 週分の販売数」です。

ステップ2:2つの推定を計算する。y.mean(axis=1) で行ごとの平均(自商品の平均)を出します。類似商品の平均は毎回 m です。

ステップ3:MSEを測り、理論値と比べる。

import numpy as np
rng = np.random.default_rng(0)
mu, m, sigma = 50.0, 54.0, 10.0      # 本当の週平均、類似商品の平均、ばらつき(個)
delta = m - mu
reps = 20000                          # 仮想の商品を何回作るか
print(' n  自商品MSE(実験) 理論  | 借用MSE(実験) 理論 | 良い方')
for n in [2, 4, 6, 8, 12]:
    y = rng.normal(mu, sigma, size=(reps, n))   # n週分の販売数を reps 回生成
    own = y.mean(axis=1)                         # 自商品の平均
    mse_own = np.mean((own - mu) ** 2)
    mse_pool = np.mean((m - mu) ** 2)            # 類似商品の平均は毎回同じ値
    better = '借用' if mse_pool < mse_own else '自商品'
    print(f'{n:>2}  {mse_own:8.2f}  {sigma**2/n:8.2f}  | {mse_pool:8.2f}  {delta**2:6.2f} | {better}')

ステップ4:出力を読む(乱数を固定しているので毎回同じ値です)。

n 自商品MSE(実験) 理論 $100/n$ 借用MSE 良い方
2 49.75 50.00 16.00 借用
4 25.14 25.00 16.00 借用
6 16.74 16.67 16.00 借用
8 12.42 12.50 16.00 自商品
12 8.27 8.33 16.00 自商品

実験値は理論値とほぼ一致し、逆転は6週と8週の間で起きています。理論の逆転点6.25週と矛盾しません。

ステップ5:意味を確認する。このシミュレーションで分かったのは、「仮定1〜3が成り立つ世界では、導出した式は正しい」ことです。みなと屋の現実の商品で成り立つかは、まだ分かりません。それを確かめるのが実データ実験です。実データでは、販売数の週ごとのばらつきが独立でない(売れた週の翌週も売れやすい)、$\sigma$ が商品ごとに違う、などの理由で、逆転点がずれる可能性があります。

操作して理解する:仮定を変えて予測を動かす

上のコードの数値を書き換えて、理論の予測がどう変わるかを確かめましょう。実行する前に、式 $n^* = \sigma^2 / \Delta^2$ で予想してから試すのがコツです。

試すこと 書き換え 予想(理論)
(1) 似ていない類似商品 m = 58.0($\Delta = 8$) $n^* = 100/64 \approx 1.6$。n=2 から自商品が良い
(2) ばらつきの大きい商品 sigma = 20.0($\Delta = 4$) $n^* = 400/16 = 25$。表のすべての n で借用が良い
(3) 完全に同じ売れ行き m = 50.0($\Delta = 0$) 借用のMSEは0。どの n でも借用が良い

(3)は、理論の極端な場合の確認です。$\Delta = 0$ のとき式の分母が0になり、$n^*$ は無限大です。「似ている商品の平均が本当の平均と同じなら、いつでも借りるほうが良い」という意味で、直感と一致します。式の端の場合を確かめることは、導出の誤りを見つける有効な方法です。

考えてみましょう:現実には $\Delta$ は分かりません($\mu$ が分からないから予測しているのです)。では、この理論は役に立たないのでしょうか。

答え:役に立ちます。$\Delta$ の代わりに、商品の類似度が高いほど $\Delta$ が小さい傾向があると考えれば、「類似度が低い商品ほど早く逆転する」という、実データで確かめられる予測が得られます。森さんの研究計画では、類似度別に逆転点を測ることが、理論を現実で検証する実験になります。

混ぜる方法について:実際の提案法は「借りるか、借りないか」ではなく、重み $w$ で混ぜます($w \times$ 自商品の平均 $+ (1-w) \times m$)。仮定1〜3のもとでは MSE は $w^2\sigma^2/n + (1-w)^2\Delta^2$ となり、$n=4$、$w=0.5$ なら $0.25 \times 25 + 0.25 \times 16 = 10.25$ と、どちらか一方だけ(25 または 16)より小さくなります。

発展:指標が変わると理論の予測も変わる、証明と実験の役割分担

理論は、仮定3(MSEで測る)に依存しています。森さんの実データ実験は MAE(平均絶対誤差)で評価していました。仮定1が正規分布の場合、自商品の平均の MAE は $\sqrt{2/\pi}\,\sigma/\sqrt{n} \approx 0.798\,\sigma/\sqrt{n}$、類似商品の平均の MAE は $|\Delta|$ です。逆転点は

$$n^*_{\text{MAE}} = \frac{2}{\pi} \cdot \frac{\sigma^2}{\Delta^2} \approx 0.637 \times 6.25 \approx 3.98$$

週となり、MSE の 6.25 週より早く来ます。例えば $n=5$ では、MSE なら自商品20 > 借用16で「借りる」、MAE なら自商品 $0.798 \times 10/\sqrt{5} \approx 3.57$ < 借用4 で「借りない」。同じ仮定でも、評価指標が違えば結論が逆になることがあります。理論と実験を比べるときは、指標をそろえます。

証明と実験は代わりにならない:

理論(証明・導出) 実験(シミュレーション・実データ)
保証する範囲 仮定を満たすすべての場合 調べた条件だけ
弱点 仮定が現実と合わないと外れる 調べていない条件については何も言えない
誤りの見つけ方 仮定の確認、端の場合、数値例 再実行、条件の変更、他のデータ

数値例でうまくいっても、一般の命題の証明にはなりません(「数値例と一般命題」(有料版))。逆に、証明があっても、仮定が成り立たない現実のデータでは外れます。論文では「定理1(仮定A・Bのもとで)」「実験(データD1〜D3で)」のように、主張ごとに根拠の種類と範囲を書き分けます。

理論の役割は説明と予測:理論は、実験で見えた現象(履歴が長いと逆転する)の理由を説明し、まだ調べていない条件(類似度が低いと早く逆転する)の予測を生みます。予測が実験で外れたときに、どの仮定が崩れたかを調べることが、次の研究になります。統計的学習理論の詳しい扱いは 「経験損失と汎化」(有料版)、理論と実測の比較は 「理論と実測の比較」(有料版) で学びます。

よくある失敗

失敗1:シミュレーションの結果を「現実で確かめた」と書く

誤った例:「シミュレーションの結果、類似商品の情報を借りると履歴6週以下でMSEが小さくなることが実証された。したがって、みなと屋でも6週以下では借りるべきである。」

なぜ誤りか:シミュレーションは、仮定1〜3どおりにデータを作った世界での実験です。確かめられたのは「導出に誤りがない」ことで、みなと屋の現実の商品が仮定を満たすかは確かめていません。

直し方:

「仮定1〜3のもとで導いた逆転点(6.25週)は、シミュレーションの結果と一致した(導出の確認)。みなと屋の商品で同じ逆転点が成り立つかは、実データで別途検証する。」

失敗2:仮定を書かずに理論の結論だけを書く

誤った例:「理論的には、履歴が $\sigma^2/\Delta^2$ 週未満なら類似商品の平均を使うほうが良い。」

なぜ誤りか:この結論は、週ごとのばらつきが独立(仮定1)、類似商品の平均にばらつきがない(仮定2)、MSEで測る(仮定3)という前提に依存します。例えば、売れた週の翌週も売れやすい(独立でない)場合、自商品の平均のばらつきは $\sigma^2/n$ より大きくなり、逆転点は遅くなります。仮定なしの結論は、読み手が「いつでも成り立つ」と誤解します。

直し方:結論の前に仮定を列挙し、「仮定1〜3のもとで」と明記します。実データで仮定がどの程度成り立つか(例:翌週との相関)も確認して報告します。

失敗3:式の計算で $n$ の扱いを間違える

誤った計算:$\sigma = 10$、$n = 4$ のとき、自商品の平均のMSEを

$$\frac{\sigma}{n} = \frac{10}{4} = 2.5$$

と計算し、借用のMSE $\Delta^2 = 16$ より小さいので「自商品が良い」と判断する。

なぜ誤りか:MSEは誤差の二乗の平均なので、$\sigma$ も二乗します。正しくは $\sigma^2 / n = 100 / 4 = 25$ で、16より大きいので「借りるほうが良い」が正解です。単位で確かめると、$\sigma/n$ は「個」、$\Delta^2$ は「個²」で、単位が合わないものを比べていたことに気づけます。

直し方:式に代入する前に、両辺の単位がそろっているかを確認します。比べる量は両方とも個²(MSE)か、両方とも個(MAE や標準偏差)にします。

失敗4:理論と実験が食い違ったとき、実験のほうを捨てる

誤った例:理論では逆転点が6.25週なのに、みなと屋の実データでは4週で逆転していた。森さんは「理論的には6週まで借りるほうが良いはずなので、実データの結果は誤差だろう」として、4週の結果を報告から外そうとした。

なぜ誤りか:食い違いは、理論の仮定のどれかが現実で崩れているサインかもしれません。実際、発展で見たように、実データは MAE で評価しており、MAE の逆転点は約4週です。指標の違いだけで説明できる可能性があります。結果を外すと、この重要な手がかりを失います。

直し方:食い違いを報告し、原因の候補(指標の違い、独立性の崩れ、$\sigma$ の商品差、$\Delta$ の推定誤差)を列挙して、1つずつ確かめる追加実験を計画します。

まとめ

用語

理論(theory)

明示した仮定から、論理と計算で結論を導いたもの。仮定を満たすすべての場合に結論が成り立つ。

実験(experiment)

条件を決めてデータを観測し、結果を測ったもの。調べた条件の範囲で結論が成り立つ。

シミュレーション(simulation)

仮定どおりにデータを人工的に生成して行う実験。導出の確認や条件を変えた予想に使う。

平均二乗誤差(MSE)(mean squared error)

誤差の二乗の平均。単位は元の値の二乗。大きな誤差を強く罰する。

仮定(assumption)

理論の結論を導くために、成り立つと置いた前提。結論はこれに依存する。

よくある質問

理論がなくても、実験だけで研究はできますか?

できます。多くの実証研究は実験中心です。ただし、理論(または少なくとも仕組みの説明)があると、まだ調べていない条件での予測が立ち、実験の結果がなぜそうなったかを説明できます。実験だけの研究では、結論を調べた条件の範囲に限定して書くことが特に重要です。

シミュレーションは何のために行うのですか?

主に3つです。(1)導出に計算の誤りがないかを確かめる、(2)理論では解けない複雑な条件で、何が起きるかを予想する、(3)実データ実験の前に、必要なデータ量や比較方法を検討する。どれも「仮定どおりの世界」での結果であることを忘れないでください。

仮定が現実と合わない理論は、意味がないのですか?

意味があります。仮定は現実の単純化で、完全に一致することはまずありません。大切なのは、どの仮定が結論に強く効くかを知り、現実でその仮定がどの程度成り立つかを確かめることです。外れ方から、より現実に近い理論を作るのも研究です。

数値例をいくつか計算して正しかったら、証明したことになりますか?

なりません。数値例は、特定の値で成り立つことを示すだけです。一般の命題(すべての n で成り立つ)を示すには、仮定から論理で導く証明が必要です。ただし、数値例は証明の誤りを見つけたり、命題の意味を理解したりするのに役立ちます(「数値例と一般命題」(有料版))。

論文では、理論と実験をどう書き分けますか?

理論は「仮定」「命題(定理)」「導出(証明)」の形で書き、実験は「データ」「条件」「結果」の形で書きます。結論の文でも「定理1より(仮定A・Bのもとで)」「実験(データD1〜D3)では」と根拠の種類を明示します。読み手が、どの主張がどの根拠で支えられているかを追えるようにします。

実務で「理論上は効果がある」と言われたら、どう判断しますか?

「どんな仮定のもとで」を確認し、その仮定が自社の業務・データで成り立つかを調べます。成り立つか分からなければ、小さな範囲で実データ実験(PoC)を行います。理論は期待の根拠にはなりますが、導入判断の根拠には実測が必要です。

確認問題

問1 理論(仮定からの導出)が保証する範囲として、正しいものはどれか。

  1. ① 現実のすべてのデータで結論が成り立つ
  2. ② 明示した仮定を満たすすべての場合に結論が成り立つ
  3. ③ 実験で調べた条件だけで結論が成り立つ
  4. ④ シミュレーションで確かめた場合だけ結論が成り立つ
解答と解説

正解:②

理論は条件つきの正しさです。仮定を満たす限りすべての場合に成り立ちますが、現実が仮定を満たすかは別に確かめます。

問2 σ=10個、Δ=5個のとき、仮定1〜3のもとでの逆転点 n* はいくつか。

  1. ① 2週
  2. ② 20週
  3. ③ 5週
  4. ④ 4週
解答と解説

正解:④

n* = σ²/Δ² = 100/25 = 4週です。

問3 仮定どおりに人工データを作ったシミュレーションで、理論値と実験値が一致した。ここから言えることとして最も適切なのはどれか。

  1. ① 導出(計算)に誤りがないことが確かめられたが、現実で成り立つかは別に検証が必要
  2. ② 現実の商品でも理論どおりになることが実証された
  3. ③ 理論は不要になった
  4. ④ 実データでの実験は不要になった
解答と解説

正解:①

シミュレーションは仮定どおりの世界での実験です。導出の確認にはなりますが、現実が仮定を満たすかは分かりません。

問4 類似商品とのずれ Δ が大きくなると、理論の逆転点 n* はどう変わるか(σは一定)。

  1. ① 大きくなる(逆転が遅くなる)
  2. ② 変わらない
  3. ③ 小さくなる(逆転が早くなる)
  4. ④ 必ず0になる
解答と解説

正解:③

n = σ²/Δ² なので、Δが大きいほど n は小さくなります。似ていない商品ほど、早く自商品の平均のほうが良くなります。

問5 理論の逆転点は6.25週なのに、実データでは約4週で逆転した。最も適切な対応はどれか。

  1. ① 実データの結果を誤差とみなして報告から外す
  2. ② 食い違いを報告し、指標の違いや独立性の崩れなど、崩れた可能性のある仮定を列挙して追加実験で確かめる
  3. ③ 理論が誤りだったと結論し、理論を報告から外す
  4. ④ 逆転点の定義を実データに合わせて書き換える
解答と解説

正解:②

食い違いは、仮定のどれが現実で崩れているかを知る手がかりです。片方を捨てず、原因を切り分けます。

問6 理論をMSE(平均二乗誤差)で導き、実験をMAE(平均絶対誤差)で評価した。注意すべきこととして正しいのはどれか。

  1. ① MSEとMAEは常に同じ結論を与えるので問題ない
  2. ② MAEのほうが常に正しい指標なので、理論は無視してよい
  3. ③ 指標が違うと逆転点などの結論が変わることがあるため、比べるときは指標をそろえる
  4. ④ MSEは単位が個なので、MAEと直接比べてよい
解答と解説

正解:③

正規分布の仮定のもとでも、逆転点はMSEで6.25週、MAEで約4週と異なります。理論と実験の指標をそろえて比べます。

次に学ぶこと

次の 反証と反例 では、理論や実験で立てた主張が誤りだと分かる条件(反証条件)と反例を、研究の最初から考える方法を学びます。森さんの「借りると良くなる」という主張は、どんな結果が出たら否定されるのでしょうか。

関連:証明と数値例の関係は 「数値例と一般命題」(有料版)、統計的学習理論の入口は 「経験損失と汎化」(有料版)、理論と実測の比較は 「理論と実測の比較」(有料版) で扱います。

キャリア学習:データサイエンティスト・機械学習エンジニア・DX推進・研究者を目指す人の学習アプリ。164モジュール・984授業を、ブラウザで動くSQLとPythonの演習で。基礎と各分野の最初のモジュールは無料。全部は2,980円の買い切り。

アプリを無料で開く有料版と無料版の違い