Lecture 16: Numerical Analysis - Regression, Overfitting, and Regularization
数値分析の基礎:回帰分析と過学習への対策(ラッソ回帰・リッジ回帰)
今回のテーマ
これまでの講義では、画像認識や自然言語処理といった「非構造化データ」を扱う最先端のAI技術を中心に学んできました。
今回からは目線を少し変え、売上予測や価格算定など、ビジネスの現場で頻繁に利用される「構造化データ(数値データ)」を扱う数値分析の基礎を解説します。
本講では、数値予測の代表格である「回帰分析(単回帰と重回帰)」の仕組みから、AIモデルが陥りやすい罠である「過学習(オーバーフィッティング)」、そしてその過学習を防ぐための強力な手法(ラッソ回帰・リッジ回帰)について解説します。
1. 回帰分析の基礎:過去から未来の数値を予測する
機械学習タスクにおける「回帰」とは、ひとことで言えば**「連続する数値を予測すること」**です。
例えば「明日のお弁当の売上個数」「来月のマンションの価格」などを予測する際に用いられるのが回帰分析です。回帰分析には、主に以下の2種類があります。
■ 単回帰分析(Simple Linear Regression)
単回帰分析は、「1つの原因(説明変数)」から「1つの結果(目的変数)」を予測する最もシンプルな手法です。
- 例: 「気温(原因)」から「アイスクリームの売上(結果)」を予測する。
- 数式イメージ: $y = ax + b$ (一次関数の直線を引くイメージです)
データが散らばっているグラフ上に、すべての中間を通るような「一番キレイな1本の直線」を引くことで、未知の気温の日の売上を直線状から予測できるようになります。
■ 重回帰分析(Multiple Linear Regression)
実際のビジネスでは、1つの要因だけで結果が決まることは稀です。そこで、「複数の原因(説明変数)」から「1つの結果(目的変数)」を予測するのが重回帰分析です。
- 例: 「気温」「降水量の有無」「休日の有無」「周辺のイベントの有無」など複数の要因から、「お弁当の売上(結果)」をより高い精度で予測する。
- 数式イメージ: $y = a_1x_1 + a_2x_2 + a_3x_3 + \dots + b$
■ 最小二乗法と重要な評価指標

データに最もフィットする直線を引き、係数と切片を最適に算出するための方法の一つとして”最小二乗法”があります。最小二乗法を一言で説明すると、実際の各値と回帰式によって予測される値の差の二乗値の合計が最小となるように係数と切片を算出する方法です。
回帰分析の結果を正しく読み解き、精度の高い予測を行うためには、以下の用語を理解しておく必要があります。
- 回帰式: 目的変数(予測したい結果)を説明変数(原因となる要因)を用いて数式化したもの。
- 回帰係数: 回帰式における各説明変数の影響度(重み)を示す値。この値が大きいほど、結果に対する影響が強いことを意味します。
- 切片: すべての説明変数が0になったときの目的変数のベースラインとなる基準値。グラフでは回帰直線がY軸と交わる点です。
- 決定係数(R2): 回帰式が実際のデータをどの程度うまく説明できているか(当てはまりの良さ)を示す指標です。0〜1の値を取り、1に近いほどモデルの実測値への当てはまりが良いことを意味します。
- P値: その説明変数が結果に対して「偶然ではなく、統計的に意味のある影響を与えているか(有意であるか)」を示す確率。通常、0.05(5%)未満であれば有効な変数とみなされます。
- t値: t値はそれぞれの説明変数が目的変数に与える影響の大きさを表す指標です。一般的に絶対値が2以上であれば、その変数は結果に強く影響していると判断されます。
要因が多ければ多いほど、複雑な現実世界を上手くモデル化できる可能性が高まります。しかし、ここで機械学習モデルを構築する際の「ある致命的な罠」に直面することになります。
2. 機械学習における最大の罠「過学習」
精度を上げたいがために、説明変数をどんどん増やし、複雑なモデルを作れば完璧な予測ができるのでしょうか?実はそうではありません。ここで発生するのが、第四講で学んだ過学習です。
■ 過学習とは何か?(復習)
過学習とは、AIモデルが「手元にある学習データ(過去のデータ)の微細なノイズや例外までも完璧に暗記しすぎてしまい、未知の新しいデータに対して全く予測できなくなってしまった状態」のことです。
■ なぜ過学習は起こるのか?
重回帰分析の文脈で言うと、「モデルが複雑すぎる(変数が多すぎる)」ことが主な原因です。
特徴量(パラメータ)を増やしすぎたり、データを曲がりくねった複雑式で無理やり結ぼうとしたりすると、学習済みの手元データには100%合致するようになります。しかし、実社会の「普通のデータ」を入力した瞬間に見当外れな予測を返す、全く使い物にならないAIが完成してしまいます。
そこで、この「行き過ぎた学習」にブレーキをかける枠組みが必要になります。
3. 過学習を防ぐ「正則化」:ラッソ回帰・リッジ回帰・ElasticNet
過学習を防ぐために機械学習の実務で不可欠なのが正則化(Regularization)というテクニックです。
正則化とは、簡単に言えば「複雑すぎるモデルに対してペナルティ(罰則)を与え、あえてシンプルなモデルに抑え込ませる」抑制手法のことです。
回帰分析にこの正則化のペナルティを組み込んだ代表的な手法が**「リッジ回帰」、「ラッソ回帰」、そしてその両方を組み合わせた「ElasticNet」**の3つです。
■ リッジ回帰(L2正則化):「全体的に」影響力を抑える
リッジ回帰は、それぞれの変数の影響力(パラメータの重み)が極端に大きくなりすぎることにペナルティを与える手法です。
- 特徴: すべての特徴量を残しつつ、それぞれの重み(係数)を0に近づくように全体的に小さくします。
- メリット: どの変数も少なからず結果に影響を与えていると考えられる場合に有効です。特定の変数が極端に大きな影響を持つことを防ぐことで、外れ値に強い安定したモデルを作ります。
■ ラッソ回帰(L1正則化):不要な変数を「完全に切り捨てる」
ラッソ回帰もペナルティを与える点は同じですが、その与え方(計算方法)が異なります。
- 特徴: 重要でないと判断された変数の重みを完全に「0」にしてしまう(モデルからその変数を消し去る)という強力な性質を持っています。
- メリット: 何百個と説明変数がある中で、「本当に結果に影響を与えている重要な変数だけを自動的に選び出す(変数選択)」ことができます。最終的なモデルがシンプルになり、人間にとって「なぜその予測になったのか」が解釈しやすくなります。
■ どちらを使えばいいの?
- すべての特徴量が少しずつ予測に役立ちそうな場合はリッジ回帰。
- たくさんあるデータの中から、本当に重要な要素だけを絞り込んでシンプルな予測モデルを作りたい場合はラッソ回帰。
■ ElasticNet(エラスティックネット)
前述のように、リッジ回帰とラッソ回帰にはそれぞれ長所と短所があります。
この長所と短所をカバーするため、リッジ回帰とラッソ回帰を組み合わせていいとこどりをしようというアルゴリズムが、ElasticNetです。
4. 精度実験
上記のグラフは、同じデータに対して「Linear(通常の重回帰)」「Ridge」「Lasso」「ElasticNet」の4つのモデルを構築し、予測精度を私が実際に比較実験した結果です。青い棒が当てはまりの良さを示す決定係数($R^2$:高いほど優秀)、黄色の棒が予測の誤差(MSE:低いほど優秀)を表しています。
この実験結果のグラフから、以下のことが読み取れます:
- Linear(素の回帰): 最も$R^2$が低く、誤差(MSE)が最大となってしまっています。これは正則化(ペナルティ)による調整がないため、データに上手く適合しきれていないか、あるいは過学習を起こしてしまっている可能性があります。
- Ridge / ElasticNet: 今回検証したデータにおいては、この2つの手法が最も優秀な結果を出しました。青い棒($R^2$)が長く、黄色の棒(MSE)が短くなっていることから、高い精度を確保しつつ誤差がしっかり抑えられていることがわかります。
- Lasso: Linearと比べると改善していますが、Ridgeほどの高い精度は出ませんでした。これは、Lassoの「不要な変数をゼロにして完全に切り捨てる」という強力な特性が裏目に出て、予測に少し役立っていたかもしれない情報まで削ぎ落としてしまったからだと推測されます。
まとめ
今回は復習が中心でしたが、どうだったでしょうか?
- 回帰分析: 1つの変数から予測する「単回帰」と、複数から予測する「重回帰」がある。ビジネスにおける売上や価格の数値予測の基本。
- 過学習(オーバーフィッティング): 学習データを暗記しすぎてしまい、未知のデータに対応できなくなる現象。原因はモデルが複雑すぎること。
-
正則化(ペナルティ)による過学習対策:
- リッジ回帰: すべての変数の影響力を全体的に小さく抑えて安定させる。
- ラッソ回帰: 不要な変数の影響力を**完全に「0」**にして、重要な変数だけをあぶり出す。
- ElasticNet: リッジ回帰とラッソ回帰の両方の長所を組み合わせた「いいとこ取り」の手法。
いくら高度な数式・アルゴリズムを用いても、過学習を起こしてしまえばそのAIモデルの価値は実質ゼロになってしまいます。数値分析を行う際は、常にこの「モデルの複雑さとの戦い(正則化)」を意識することが重要です。



