渋谷駅前で働くデータサイエンティストのブログ

元祖「六本木で働くデータサイエンティスト」です / 道玄坂→銀座→東京→六本木→渋谷駅前

実務において回帰分析を行うに当たっての注意点を改めて挙げてみる

先日のことですが、以下のニュースが統計的学習モデル界隈で話題になっていました。

肝心の箇所が会員限定コンテンツなので簡潔にまとめると、従来モデルよりも説明変数に入れる海域の数を増やした上で、Lasso(L1正則化)回帰で多重共線性を抑えつつ汎化性能を高めるというアプローチを取った、というお話です*1。これは回帰分析という基本に立ち返った、昨今の「猫も杓子も生成AI」という流れからは一線を画した試みで、いかにも玄人好みという感があるなと僕も感じた次第です。


一方で、僕が身を置く広告・マーケティング業界でもMMM (Media/Marketing Mix Models)を初めとして様々なタイプの回帰分析が広く行われていますが、個人的に見聞する範囲では冗談でなく本当にピンキリで、中には「そんなデタラメな回帰分析で本当に役員会の意思決定に使っているんですか???」みたいなケースも珍しくありません。そういったケースでは、そもそも回帰分析の基本のきが(ステークホルダーから)全く理解されておらず、単に「RやPythonにかければ自動的に欲しい結果が出てくる便利なツール」ぐらいに思われているような印象があります。


ということで、今回の記事ではネタ切れで尚且つ書評も間に合ってないのでそんな回帰分析を実務において実践するに当たっての注意点を、改めてあげつらってみようと思います。なお、きちんとした解説書が欲しいという方にはいつもながらですが佐和本をお薦めしておきます。

初版刊行は1979年と古い本ですが、45年が経った今でも十二分に通用する内容が満載です。

そもそも回帰分析に適したデータセットか否か


まず大前提として「そのデータセットに対して回帰分析をやって良いのか」という点を考慮する必要があります。というのは、特に広告・マーケティング領域の実務において扱われるデータの少なからぬ割合が、一般的な統計学や計量経済学のテキストが想定しているケースに適合しないからです。


例えばあるあるを通り越して鉄板ネタなのが「キャンペーンのたびに毎回全ての施策が同時に打たれては全ての施策が同時に打ち終わる」即ち全変数が同時に上がり下がりするというタイプのマーケティングデータです。上記の過去記事でも示した通りですが、下図のような感じになることが多いはずです。

このようなデータに対しては、そもそも本質的に多重共線性を解決できない(ほぼ全変数がシンクロしてしまっているので)ことが多く、どうあがいても回帰分析のしようがない……という事態に陥りがちです。こういう場合は回帰分析自体を避け、例えば消費者パネル調査のような個票データの分析で施策ごとの態度変容効果を推定するといった別のアプローチを取るべきでしょう。


近年はDXブームの浸透もあり、どこの企業でも「データだけならある」という状況が到来しており、自然と「データがあるなら分析してみれば何かが分かるかもしれない」という期待感がどこでも高まっているように見受けられます。なればこそ「回帰分析という手法でできること・できないこと」をしっかりと分ける必要があるものと考えております。


「説明」したいのか、「予測」したいのか


ビジネス実務で用いられる回帰分析にあるあるなのが、「説明」「予測」どちらの側面を重視したいかが曖昧である、という問題です。よく聞くのが「上層部からは需要『予測』モデルを作ってほしいと言われているが、実際には『どの変数が効いているかが知りたい』ということで『説明』の方が求められていた」というケース。そういう場合、「予測」により適した機械学習系の手法で回帰分析を行ったは良いものの、どうしてもブラックボックス的な要素が強い手法を使うことが多いため、いざ「説明」を求められて窮してしまう……ということになりがちです。


勿論、SHAPのような解釈性手法を用いて「説明」に充てるということもできなくはないと思いますが、説明する相手が非専門家であることが多いという実態を踏まえるとやはりしんどいのではないでしょうか。そういう事態にならないように、事前に「説明」「予測」のどちらを重視したいかをステークホルダーに確認しておくことが重要です。もっとも、ビジネス実務上は線形回帰モデル族で事足りることが大半だと思われますが……。


過学習を避け、汎化性能を意識する


概して、ビジネス実務における回帰分析に対しては「完璧さ」「網羅性」が求められがちな印象があります。それはMMMに限らず、もっと包括的な需要予測モデルのようなケースでは顕著で、事によっては「とにかく自社データも全てかき集めてデータ提供会社のデータも買える限り買い集めて『完璧な』『真の』モデルを作りたい」みたいな話になることも全く珍しくないようです。自社の需要予測モデルについて「ありとあらゆるマーケティング施策全ての効果が分かります」「R^2 > 0.95もあるんです」と勝ち誇ってみせる、みたいな話も何度か実際に見聞したことがあります。


しかし、そういった「完璧で」「網羅的な」回帰分析が陥りがちな罠がある、ということは賢明な読者の皆さんならすぐお分かりでしょう。そう、過学習です。とにかく説明変数をどんどん加えていく、そしてひたすら全データ*2への当てはまりばかりを重んじる……ということをしていれば、どうなるかは自明の理です。以前にも指摘したことがありますが、そういった過学習している回帰モデルではパラメータ(回帰係数)の推定結果にもバイアスが強くかかってしまうため*3、仮にそのような回帰モデルのパラメータの大小で施策の優先順位を定めた場合、間違った結果になってしまうことが殆どです。


よって、基本的には回帰分析を行う際は過学習を避ける&汎化性能を意識することが不可欠です。即ち、適切にデータを分割して交差検証を行い、過学習に陥っているモデルは排除し、汎化性能のより優れたモデルを選ぶ、ということですね。特に、R^2 > 0.95(対学習データ)のような「あまりにも学習データへの当てはまりが良過ぎる」回帰モデルは過学習に陥っている可能性が高いので、注意する必要があります。


巷ではよく「『説明』に適したモデルと『予測』に適したモデルは別物」と言われがちですが、少なくとも「説明」で得られた結果(パラメータ推定値の大小関係など)に基づいて何かしらの将来のアクションを決めるというケースでは、より汎化性能(予測精度)に優れたモデルを用いるべきだと思われます。それもまた、一種の「予測」に他ならないからです。


多重共線性と変数選択には最適解はあれども正解はない


これはまさに冒頭に挙げた「L1正則化で多重共線性を抑えて汎化性能を向上させた回帰モデル」の話題そのものですね。一般に、「手持ちのデータ全てをとりあえず突っ込みました」というタイプの回帰分析においては、説明変数同士の相関が高過ぎることによってパラメータ推定値が歪んでしまう、いわゆる多重共線性という問題が発生しがちです。


多重共線性を抑える方策としては大きく分けて「変数選択を行なって不要な変数を削る」「パラメータ推定値を調整して全体のバランスを取る」の2つのアプローチがあり、前者の代表例が情報量規準などに基づくステップワイズ法やL1正則化(Lasso)、後者の代表例がL2正則化(Ridge)ということは皆さんもご存知の通りかと思います。


ただし、いずれが良いかはケースバイケースであり、銀の弾丸はないということに留意しなければなりません。例えば上記リンクのCross Validatedでの問答にもあるように、概してL2正則化の方が回帰モデルの汎化性能が高くなるケースは多いものの、真のパラメータがゼロ*4という説明変数が複数混じっているケースではL1正則化の方が汎化性能が高くなることがあります*5。


また、これもシミュレーションしてみると分かりますが、多重共線性が生じている状況下でL1正則化で正しく「不要な変数」が削られるという保証はありません。場合によっては真に残すべき変数が削られて、その変数とたまたま相関が高く不要と思われる変数の方が残ることがあります。さらに、L2正則化は確かに全パラメータ推定値を均衡させて多重共線性を緩和してくれますが、その推定値には当然ですがバイアスがかかります(全ての変数を残すためにバランスを無理やり取っているのと同じことなので)。これらはパラメータ推定値の大小に基づく「説明」が主目的のモデルでは、深刻な問題になり得ます。


よって、多重共線性が生じていて変数選択が求められる場合は、「予測」が主目的のモデルであればL1/L2正則化で交差検証しながら汎化性能が最も良くなるモデルを選べば良いと思われますが、「説明」が主目的のモデルであれば例えばVIF統計量などで個々の変数ごとの多重共線性への影響度を出した上で、ドメイン知識に基づいて取捨選択する方が無難でしょう。


必要に応じて適切な因果推論を行う


概して、マーケティング領域など実社会から得られるデータセットに対して回帰分析を行おうとすると、程度問題ながら多かれ少なかれ何かしらのバイアスがかかってくるものです。よって、必要に応じて適切な因果推論を実施し、バイアスを補正する必要があります。


例えばこちらの論文ではMMMで検索広告を説明変数に入れるに当たって、DAGで見るとその「上流」に検索ボリュームが来ることから、MMMの回帰式に対して調整変数として検索ボリュームを追加するべきだというポイントが指摘されています*6。


ただし、因果推論は強力なアプローチではあるものの、万能というわけではない点にも注意が必要です。特にマーケティング領域では、一般的なユーザージャーニー的な構図*7は知られているものの、大半のメディア同士が複雑に相互に影響し合っていることは火を見るよりも明らかです。また、生活者集団全体の態度変容のトレンド(うねり)といった、事実上観測不可能な変数も大きく関わってくることがあります。この点で、ドメイン知識に基づいてDAGをどれほど色々描いてみたところで、「真のモデル」を定めることはほぼ不可能といっても良いでしょう。


それ故、回帰モデルの妥当性はある程度常識的な範囲の因果推論を行った上で、「汎化性能の高低」で定めるのがビジネス実務面では穏当であろう、と個人的には考えています。言い方を変えると、完璧にバイアスを補正し切ろうとするよりは、ほどほどにバイアスを補正したら後は汎化性能と有用性に基づいてモデル選択をするべきだということですね。即ち、All models are wrong; but some are useful*8の精神です。


時系列データを回帰するなら可能な限りベイズ構造時系列モデルで


最後に、時系列データのお話です。これはマーケティング領域のデータ分析を手掛けている人なら良くご存知かと思いますが、一般にマーケティング関係のデータセットというと消費者パネル調査のような個票データを除くと、大半が事前集計済みのエコノメトリックな時系列データだったりします。


となると、これを回帰分析するとなると当然そのまま漫然とモデリングするわけにはいきません。何故なら、それらの時系列データはほぼ例外なくトレンドや季節調整さらには遅延効果といった系列相関を伴っており、これに適切に対処しない限り回帰分析を行なっても誤った結論に至る可能性が高いからです。MMMなどはその代表例であり、幾つもの系列相関を引き起こす非線形要素が重なり合っているデータセットゆえ、殊に注意を要します。


そういった非線形要素が複雑に絡み合うことの多い時系列データを回帰分析するなら、多少面倒でもやはりベイズ構造時系列モデルを用いた方が良いと個人的には考えています。理由は簡単で、MCMCサンプリングを用いた階層ベイズモデルであれば、それらの非線形要素同士のパラメータ推定の相互のバランスを取りつつ、回帰モデルのパラメータ推定値もバランス良く求められるからです。


余談ですが、時系列データの回帰分析に触れたついでに時系列データの交差検証についてもコメントしておきます。一般に交差検証といった場合は全データをtrain / devにランダムに分割することが多いですが、時系列データに対してそれをやってしまうと系列相関によるバイアスが残ってしまうので不適切です*9。

そのような事態を防ぐため、時系列データの交差検証では過去方向にtrain / 未来方向にdevと分割するのが通例です。これをもっと確実にするためにsliding windowにするやり方もありますが、いずれにせよ系列相関によるバイアスが直接乗ってしまわないように注意する必要があります。


おまけ

「とにかく自社データも全てかき集めてデータ提供会社のデータも買える限り買い集めて『完璧な』『真の』モデルを作りたい」みたいな話になることも全く珍しくないようです。自社の需要予測モデルについて「ありとあらゆるマーケティング施策全ての効果が分かります」「R^2 > 0.95もあるんです」と勝ち誇ってみせる、みたいな話も何度か実際に見聞したことがあります。

折角なので、このパターンを実演したシミュレーション結果を貼っておきます。まず、適当な説明変数を3つ乱数から生成して、そこに真の回帰係数3つ (1.0, -1.5, 1.0)を掛け合わせて正規ノイズを加えて目的変数を生成します。その上で、1) 元々の3つの説明変数で回帰したモデルと、2) ホワイトノイズから生成した6つのランダムな変数を加えて9つの説明変数で回帰したモデルとを、それぞれ用意します*10。

上段が1)のモデル、下段が2)のモデルです。学習データへの当てはまりは明らかに2)の方が良いですが、検証データへの当てはまりは1)の方が良いことが分かります。即ち2)が過学習しているということが見て取れます。

そこでパラメータ(回帰係数)推定値を並べてみたのがこちらの図で、これも上段が1)のモデル、下段が2)のモデルです。一目瞭然で、1)は事前に設定した真の回帰係数3つに近い推定値をそれぞれ返していますが、2)は全くもってデタラメな結果になっています。過学習している回帰モデルは、パラメータ推定値にもバイアスが出るということが分かる例です。

*1:ref: https://x.com/sla/status/1810514923480351111

*2:学習データのみということ

*3:数値シミュレーションをやってみれば分かるが、無意味な説明変数が後からどんどん加えられていくと元々意味のあった説明変数の回帰係数もバイアスがかかってずれていってしまうことが知られている

*4:信頼区間やベイズ確信区間がゼロをまたぐケース

*5:末石先生とのやり取りも参考になるかと https://x.com/yaonacs/status/1810891737818353990

*6:実際にはただ回帰させるのではなくGAMとして線形に加えて回帰させている

*7:例えばTVCM→ブランド検索→検索広告→サイト流入→コンバージョンなど

*8:MMM (Media/Marketing Mix Modeling)を回すなら、まずGeorge E. P. Boxの格言を思い出そう - 渋谷駅前で働くデータサイエンティストのブログ

*9:過去にはこれをやらかして誤った性能評価結果を載せてしまった有名論文もあった

*10:便宜上時系列データにしてありますが、データの生成条件上は平均回帰的なのでただの線形回帰でOKということにさせてください