コンテンツにスキップ

6. Model Diagnosis and Selection

実践的データ分析チュートリアル:線形回帰モデルの構築から評価・改善まで

スライド こちら

はじめに:モデルを構築するプロセス

このチュートリアルへようこそ!ここでは、個人の医療費を予測する線形回帰モデルを題材に、データ分析の核心的なプロセスを学びます。ゴールは、単にモデルを作って終わりではなく、データと対話しながらモデルを診断し、より良いモデルへと「育てていく」一連の思考プロセスを体験することです。

具体的には、以下のステップを追いながら、モデル改善のための強力な武器を身につけていきます。

  1. ベースラインモデル構築:全ての分析の出発点となる最初のモデルを立てます。
  2. モデルの診断と改善①:目的変数の「対数変換」を行い、モデルの基本的な仮定を満たすようにします。
  3. モデルの改善②:「交互作用項」を追加し、より現実に即した複雑な関係性を捉えます。
  4. 総合的なモデル選択:複数の評価指標を駆使して、最終的なモデルを決定します。

それでは、分析の旅を始めましょう。


第1章:すべての基本、線形回帰モデル

1.1 線形回帰モデルとは?

線形回帰は、予測したい変数(目的変数)を、予測に使ういくつかの変数(説明変数)の足し算で説明しよう、というシンプルなアイデアに基づいています。今回の演習におけるベースラインモデルは、以下の数式で表現できます。

\[ \begin{align*} \text{charges} = \beta_0 &+ \beta_1 \times \text{age} + \beta_2 \times \text{bmi} + \beta_3 \times \text{children} \\ &+ \beta_4 \times \text{sex}_{\text{male}} + \beta_5 \times \text{smoker}_{\text{yes}} \\ &+ \beta_6 \times \text{region}_{\text{northwest}} + \beta_7 \times \text{region}_{\text{southeast}} \\ &+ \beta_8 \times \text{region}_{\text{southwest}} + \epsilon \end{align*} \]
  • \(Y\) (charges): 私たちが予測したい目的変数、つまり個人の年間医療費です。
  • \(X\) (age, bmiなど): 予測の材料となる説明変数です。 sexsmokerのようなカテゴリ変数は、「男性なら1、女性なら0」というように0か1の値をとるダミー変数に変換されてモデルに投入されます。
  • \(\beta_1, \beta_2, \dots\) (回帰係数): 各説明変数が医療費に与える影響の大きさを示す「重み」です。例えば \(\beta_1\) は、「他の条件が全て同じであれば、年齢が1歳上がると医療費は平均で \(\beta_1\) ドル増える」と解釈できます。
  • \(\beta_0\) (切片): すべての説明変数が0(例:0歳、BMIが0、非喫煙者、基準地域在住の女性)という架空の状況での、ベースとなる医療費です。
  • \(\epsilon\) (誤差項): 年齢やBMI、喫煙歴など、モデルに含まれる変数だけでは説明しきれない変動(個人の遺伝的体質や偶然の怪我など)をまとめたものです。

1.2 係数の推定:最小二乗法

モデルの係数(\(\beta\))は、最小二乗法 (Ordinary Least Squares, OLS) によって、コンピュータが自動で計算します。これは、「手元のデータ全員について、モデルによる予測値と実際の値の差(残差)の二乗を計算し、その合計が最も小さくなるように係数を決める」という方法です。

\[\text{残差平方和(RSS)} = \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 \quad \to \quad \text{これを最小化する}\]

今回の演習で言えば、\(y_i\)\(i\) 番目の人の実際の年間医療費 (charges) であり、\(\hat{y}_i\) はモデルがその人の属性(年齢、BMIなど)から予測した医療費です。この二乗和を最小にすることで、全体として最も「当てはまりの良い」モデルを作成します。


第2章:モデルの診断と改善① - 対数変換による安定化

ベースラインモデルを構築したら、次はその「健康診断」です。特に、残差の振る舞いはモデルの信頼性を左右する重要なチェックポイントです。

2.1 なぜ変数変換が必要か?:分布の歪みと等分散性

演習のEDA(探索的データ分析)で確認したように、医療費 (charges) の分布は、一部に極端に高額なデータが存在し、右に長く裾を引く歪んだ形をしています。 このようなデータに線形回帰をそのまま適用すると、主に2つの問題が生じやすくなります。

  1. 正規性の仮定違反: 線形回帰の理論的な背景には、誤差項 \(\epsilon\) が正規分布に従うという仮定があります。分布が大きく歪んでいると、この仮定が満たされにくくなります。
  2. 不等分散性: 予測値が大きくなるにつれて、誤差のばらつきも大きくなる現象です。残差プロット(横軸に予測値、縦軸に残差)を描くと、ばらつきがラッパ状に広がって見えることで確認できます。 これはモデルの予測が、高額な医療費に対しては不安定になることを意味します。

2.2 対数変換という「治療法」

この問題を解決する強力な手法が、目的変数の対数変換です。

\[\log(\text{charges}) = \beta_0' + \beta_1' \times \text{age} + \dots + \epsilon'\]

対数をとることで、大きな値は小さく圧縮され、全体の分布が正規分布に近づきます。結果として、不等分散性が改善され、より安定した信頼性の高いモデルになることが期待できます。

【解釈のポイント】 目的変数を対数変換した場合、係数の解釈が少し変わります。例えば、年齢の係数 \(\beta_1'\) が0.04だったとします。これは「他の条件が同じなら、年齢が1歳上がると医療費はおよそ \(100 \times 0.04 = 4\%\) 増加する」と解釈します。このように、変化が「ドル」ではなく「パーセント」になるのが特徴です。


第3章:モデルの改善② - 交互作用による表現力向上

モデルをさらに洗練させるには、変数同士の「相乗効果」を捉えることが重要です。

3.1 交互作用とは?

「ある変数の効果が、別の変数の水準によって変化すること」を交互作用と呼びます。 EDAで、年齢と医療費の関係が喫煙の有無で大きく異なることが示唆されました。

  • 非喫煙者: 年齢とともに医療費は緩やかに増加する。
  • 喫煙者: 年齢とともに医療費は急激に増加する。

これは、年齢の効果が喫煙ステータスによって変わる典型的な例です。 この関係性をモデルに組み込むのが交互作用項です。

3.2 交互作用項の導入と解釈

モデル式に 年齢 × 喫煙ダミー という新しい項を追加します。smoker_yes は喫煙者なら1、非喫煙者なら0をとるダミー変数です。

\[\log(\text{charges}) = \beta_0 + \beta_1 \text{age} + \beta_2 \text{smoker}_{\text{yes}} + \beta_3 (\text{age} \times \text{smoker}_{\text{yes}}) + \dots\]

このモデルを解釈するために、喫煙者と非喫煙者の場合に分けて数式を整理してみましょう。

  • 非喫煙者 (smoker_yes = 0) の場合: \(\(\log(\text{charges}) = \beta_0 + \beta_1 \text{age} + \dots\)\) 年齢が1歳上がると、\(\log(\text{charges})\)\(\beta_1\) 増加します。

  • 喫煙者 (smoker_yes = 1) の場合: \(\(\log(\text{charges}) = (\beta_0 + \beta_2) + (\beta_1 + \beta_3) \text{age} + \dots\)\) 年齢が1歳上がると、\(\log(\text{charges})\)\((\beta_1 + \beta_3)\) 増加します。

この式から、交互作用項の係数 \(\beta_3\) は「喫煙による、年齢効果への追加的な上乗せ分」を意味することが分かります。 交互作用項を追加することで、単に予測精度を上げるだけでなく、「喫煙は、年齢が医療費に与える影響を加速させる」という、より深いデータへの洞察を得ることができます。


第4章:総合的なモデル選択と最終評価

私たちは今、複数のモデル候補を手にしています。 どれを最終モデルとして採用すべきか、複数の視点から総合的に評価しましょう。

4.1 モデル選択の4つの視点

モデルを評価する際には、目的に応じて異なる指標を使い分けます。

評価指標 目的 特徴と計算式
決定係数 (\(R^2\)) モデルの説明力(基本) 目的変数の全変動(TSS)のうち、モデルで説明できた変動の割合。0から1の値をとり、1に近いほど良い。ただし、説明変数を増やすだけで値が上昇してしまう欠点があるため、異なるモデルの比較には注意が必要。
\(\(R^2 = 1 - \frac{\text{RSS}}{\text{TSS}} = 1 - \frac{\sum (y_i - \hat{y}_i)^2}{\sum (y_i - \bar{y})^2}\)\)
自由度調整済み決定係数 (Adj. \(R^2\)) モデルの説明力(改善版) 上記の\(R^2\)を、説明変数の数(\(p\))とサンプルサイズ(\(n\))を考慮して調整したもの。不要な変数を加えても値は上がりにくいため、異なる変数を持つモデル間の比較に適している。
\(\(\text{Adj. } R^2 = 1 - \frac{(1-R^2)(n-1)}{n-p-1}\)\)
赤池情報量規準 (AIC) 当てはまりと簡潔さのバランス 当てはまりが良いほど、またモデルがシンプル(パラメータ数が少ない)なほど、値が小さくなる。複数のモデル間で、AICが最も小さいモデルが良いと判断される。
\(\(\text{AIC} = n \log(\text{RSS}/n) + 2(p+1)\)\)
RMSE (二乗平均平方根誤差) モデルの予測精度 予測値が実際の値から平均してどれだけ外れているかを示す。 値が小さいほど、予測精度が高い。未知のデータに対する性能(汎化性能)を測るためにテストデータで計算するのが重要。
\(\(\text{RMSE} = \sqrt{\frac{1}{n_{\text{test}}} \sum_{i=1}^{n_{\text{test}}} (y_i - \hat{y}_i)^2}\)\)

4.2 最終モデルの決定

モデル選択のプロセスは以下の通りです。

  1. 訓練データでの比較: 複数のモデル候補の Adj. \(R^2\)AIC を比較します。 Adj. \(R^2\) が高く、AICが低いモデルほど、訓練データに対する当てはまりが良いと言えます。
  2. テストデータでの最終評価: 最も性能が良さそうだと判断したモデルを使い、未知のデータであるテストデータに対する予測精度を RMSE で評価します。 これが、そのモデルの真の実力(汎化性能)を示す最終的なスコアとなります。

注意点: 対数変換モデルのRMSEを計算する際は、予測値 log(charges)np.expm1() で元のドル単位に戻してから計算するのを忘れないようにしましょう。

結論:データ分析は対話のプロセス

このチュートリアルを通じて、私たちは単一のモデルで満足するのではなく、残差分析による診断、変数変換による治療、そして交互作用項による機能拡張といった一連のプロセスを経て、モデルを改善してきました。

  • Adjusted R²AIC は、手元のデータでモデルの良し悪しを比較検討するための重要な羅針盤です。
  • 最終的なモデルの価値は、未知のデータに対する予測精度、すなわちテストデータでのRMSEによって決まります。

線形回帰はシンプルですが、ここで学んだモデル改善の考え方は、より高度な機械学習モデルにも通じる普遍的なスキルです。ぜひこの経験を活かして、さらなるデータ分析の世界を探求してください。