本記事の目的
線形回帰は、機械学習の中でも基本的かつ広く用いられている手法の一つです。そのシンプルで直感的なアプローチは、多くの実務的な問題において効果的に活用され、他の複雑な手法に先立って採用されることが少なくありません。一方で、多重共線性や過学習の影響を受けやすいという課題があります。これらの課題に対処する方法の一つに、正則化が挙げられます。例えば材料開発では、サンプルの数よりも物性や組成情報などの因子が圧倒的に多くなるケースがあり、正則化はこのような状況で特に有効に機能します。本記事では、線形回帰の抱える課題と、正則化手法の概要や特徴について解説します。
線形回帰の概要と課題
線形回帰はデータの関係性を直線で表現し、目的変数を説明変数の線形結合として予測する手法です。一般的な式を式(1)に示します。ここで、Yが目的変数の予測値、βが回帰係数、xが説明変数、pが説明変数の次元数 (種類数) です。
$$ Y = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \cdots + \beta_p x_p \quad \cdots (1) $$
線形回帰式を決定する代表的な手法として最小二乗法があります。最小二乗法は、n個のデータがあるとき、目的変数の実測値yと、式(1)で算出される予測値Yとの誤差の二乗和が最小となるような回帰係数βを求めます。その最適化の対象となる式を式(2) に示します。これは、実測値と式(1) の右辺にあたる予測値との誤差を二乗した形になっています。
$$ \sum_{i=1}^{n} \left( y_i - \beta_0 - \sum_{j=1}^{p} \beta_j x_{ij} \right)^2 \quad \cdots (2) $$
線形回帰は、計算や結果の解釈が容易なデータ分析の基本的な手法の一つであり、Excelなどのツールでも利用できます。一方で、多重共線性や過学習の影響を受けやすいという課題もあります。各課題の詳細について、次の項で説明します。
多重共線性
多重共線性とは、回帰分析において説明変数同士が強い相関を持つ状態を指します。この状態になると、回帰モデルが各説明変数の寄与を適切に評価できなくなり、回帰係数の推定値が大きく変動しやすくなります。その結果、データが少し変わるだけで回帰係数の符号や大きさが大きく変わることがあり、モデルの解釈が困難になります。また、予測精度の低下や解釈時の信頼性の低下といった問題を引き起こします。
ここで、ある不動産会社で家の価格を予測するシーンを考えます。このとき、「家の広さ」と「部屋の数」の2つの変数を用いて価格を予測する回帰モデルを作成したとします。この時、一般的に家の広さが大きくなると部屋数も増えるため、両者は強い線形関係にあると考えられます。
このような状況では、回帰モデルが「家の広さ」と「部屋の数」のどちらの影響がより強いのかを適切に判別できず、どちらの変数に重みを割り当てるべきかが曖昧になります。その結果、回帰係数の符号が逆転したり、不自然に大きな値になったりすることがあります。このような多重共線性の影響を軽減するためには、以下の方法が有効です。
- 相関係数や統計的手法により、代表的な変数を選択する
- 主成分分析(PCA) や部分最小二乗法(PLS)等による次元削減を行う
- 正則化を適用し、回帰係数の過剰な変動を抑える
これらの方法を適切に活用することで、多重共線性の影響を抑え、より安定した回帰モデルを構築することができます。
モデル選択と過学習
過学習とは、回帰モデルが学習データに過剰に適合し、新しいデータに対する汎化性能が低下する現象を指します。たとえば、図1の2つのグラフは、いずれも横軸に世帯人数、縦軸にある町における水道使用量(m3)の月平均を取ったものです。5つのデータをプロットし、異なる回帰モデルを赤線で示しています。
- 左のグラフでは、5つのデータに対して多少の誤差はあるものの、「人数が増えると水道使用量も増える」という傾向を適切に捉えています。
- 右のグラフでは、5つのデータに対して誤差なく完璧にフィットしていますが、「世帯人数が6人になると、水道使用量が激減する」という不自然な予測結果となっています。
このように、回帰モデルが複雑すぎると、データのノイズや偶然の変動まで学習してしまい、本来の傾向を正しく捉えられなくなるという問題が発生します。重要なのは「データの本質的な意味を理解して、未知のデータに対しても適用できるようにする」ことです。よって、データに対して不適切なモデルを選択し、過剰にフィットさせることは望ましくありません。
図1. 汎化性能の高い回帰モデル(左)と過学習している回帰モデル(右)のイメージ
ただし、図1左図の線形回帰モデルが汎化性能が高い(→未知データに対しても妥当)と判断できる理由は「実際に世帯人数と水道使用量は比例関係にあると期待できる」というドメイン知識があるためです。そもそも選択するモデル構造や事前知識がデータの本質に合っていなければ、汎化性能が高いとはいえません。逆に言えば、データの本質についての正しい事前知識がない場合、右図のような一見不自然な予測から安易に過学習と判断することもできません。
過学習の検知と対策には、以下のような手法が有効です。
- 検知方法
- 複数のデータ分割を用いた交差検証法
交差検証について、詳しくはこちらの記事(回帰モデルの性能評価と精度指標の基礎)をご覧ください。
- 複数のデータ分割を用いた交差検証法
- 対策方法
- サンプル数を増やす
- 事前に不要な説明変数を削減し、回帰モデルの複雑さを抑える
- 正則化を適用し、回帰モデルの複雑さを調整する
適切に回帰モデルの複雑さを調整することで、汎化性能を向上させることができます。線形回帰モデルは、その構造上、モデルの複雑さを直接調整する余地が限定的です。線形回帰では、モデル自体がシンプルであるため、複雑さの調整は主に事前に不要な説明変数の削減や正則化の適用といった手法を通じて行われます。一方、非線形モデルでは、たとえばガウス過程回帰のカーネル関数のハイパーパラメータによって、モデルの柔軟性や複雑さを制御できます。
正則化手法
これらの課題を解決するための手法の一つである、正則化について解説します。正則化とは、回帰モデルの複雑さを適切に制御する手法です。代表的な手法には、LASSO (ラッソ)、Ridge (リッジ)、Elastic Net (エラスティックネット) があります。それぞれの手法の仕組みと特徴について詳しく見ていきましょう。
LASSO
まず、LASSOについて説明します。LASSOでは式(3)を最小化するβを求めます。
$$ \underbrace{\sum_{i=1}^{n} \left( y_i - \beta_0 - \sum_{j=1}^{p} \beta_j x_{ij} \right)^2}_{\text{誤差項}} + \underbrace{\lambda \sum_{j=1}^{p} |\beta_j|}_{\text{正則化項}} \quad \cdots (3) $$
このとき、λは正則化パラメータと呼ばれます。式(3)は、第1項の「誤差項」と第2項の「正則化項」の2つで構成されます。誤差項は、線形回帰で説明した式(2)と同様、実測値と予測値の誤差の二乗和を表します。LASSOの肝となる部分は正則化項で、係数の絶対値の和に正則化パラメータを掛けた値が追加されています。つまり、式(3)を最小化するような係数βを求めますが、係数βの値が大きくなると、正則化項が増加し、式(3)の値も大きくなります。そのため、誤差を小さくする働きよりも正則化項の働きが大きくなると判断した係数βは、値を持つよりも0にしてしまった方が得だという考えになります。このことからLASSOは、予測するにあたって重要ではない説明変数の係数を 0 にして実質的に削除します。これにより、解釈性を高められるのが特徴です。
また、正則化パラメータλを大きくするほど選択する変数を少なくする傾向になります。例えば、様々な範囲の正則化パラメータλ(例:0.001, 0.01, 0.1, 1, 10, 100 など)を用意し、誤差が最小になるλを選択する最適化手法などがあります。
実際にLASSOを使用した例を紹介します。住宅価格について、下記5つの説明変数を使って予測するモデルを作ったとします。
x1 : 面積
x2 : 築年数
x3 : 部屋数
x4 : 駅までの距離
x5 : 周辺の平均家賃
図2に線形回帰およびLASSO回帰で使用した各説明変数に対応する係数βを示します。図2左の線形回帰の結果では、面積と駅までの距離の影響が強く、築年数、部屋数、周辺の平均家賃の影響は比較的小さいことが分かります。一方、図2右のLASSO回帰では、面積と駅までの距離のみに係数が割り当てられ、その他の変数は完全にゼロになっています。
図2. 線形回帰(左)とLASSO回帰(右)における回帰係数
つまり、LASSOは情報を削ぎ落とすことで、「面積」と「駅までの距離」だけで住宅価格を予測できる本質的な関係を浮き彫りにします。また、考慮すべき変数が少なくなることで、特定の変数の変動に伴う目的変数の変化を捉えやすくなります。この性質を利用すると、考慮すべき特徴量が多岐に渡る材料開発や、温度・圧力・時間など多くの因子が影響を与えるプロセス設計においても、クリティカルな因子の特定、解釈、最適条件探索に有効に働きます。
Ridge
次にRidgeについて説明します。LASSOと同様に式(4)を最小化するβを求めます。
$$ \underbrace{\sum_{i=1}^{n} \left( y_i - \beta_0 - \sum_{j=1}^{p} \beta_j x_{ij} \right)^2}_{\text{誤差項}} + \underbrace{\lambda \sum_{j=1}^{p} \beta_j^2}_{\text{正則化項}} \quad \cdots (4) $$
式(3)と比較すると、第1項の誤差項は全く同じですが、第2項の正則化項がβの絶対値ではなく二乗になっている点が特徴的です。LASSOとRidgeは、どちらも基本的なメカニズムや、多重共線性や過学習の対応という点で共通しています。しかし、LASSOは変数を選択する傾向が強いのに対し、Ridgeはすべての変数を残したまま、重要でない説明変数の係数を小さくするという特性があります。一般的に、解釈性を重視するならLASSO、予測性能を重視するならRidgeといった傾向がありますが、明確にどちらが優れているとは言えません。データの特性やモデルの目的に応じて最適と考えられる手法を選択する必要があります。
Elastic Net
最後にElastic Netについて、式(5)に示します。
$$ \underbrace{\sum_{i=1}^{n} \left( y_i - \beta_0 - \sum_{j=1}^{p} \beta_j x_{ij} \right)^2}_{\text{誤差項}} + \underbrace{\lambda_1 \sum_{j=1}^{p} |\beta_j| + \lambda_2 \sum_{j=1}^{p} \beta_j^2}_{\text{正則化項}} \quad \cdots (5) $$
第1項の誤差項はこれまで紹介したモデルと同じく、実測値と予測値の誤差の二乗和を表します。一方で、第2項、第3項の正則化項はLASSOとRidgeの正則化項を合算した形です。これにより、LASSOの変数選択の特徴とRidgeの安定性の両方のメリットを活かすことができます。一方、Elastic Netは最適化すべきパラメータが増えるため、回帰モデルのパラメータチューニングが複雑になり、計算コストが高くなるという課題があります。
デモンストレーション
実験設定とデータ生成
実験として、合成データを用いて13変数からなるデータセットを生成します。各変数は以下のようなグループに分類します。
- Group A (ノイズ変数): x1-4
- Group B (中影響・独立変数): x5-6
- Group C (中影響・多重共線性変数): x7-8
- Group D (高影響・独立変数): x9-10
- Group E (高影響・多重共線性変数): x11-13
各グループごとに生成した変数を用いて、定義した関数式にしたがって目的変数 yを作成します。データ点数はスモールデータを想定し、30点とします。
モデル選択
- 正則化手法(LASSO、Ridge、ElasticNet)
- 相関係数による変数削減 + 最小二乗法(OLS)
学習後のモデル
図3では、設定した関数によって生成した30点のデータを学習した線形モデルにおける各変数への影響(係数の重み)を、棒グラフとヒートマップで可視化しています。
図3. 各正則化手法および相関係数による変数削減の比較
正則化手法を比較すると、LASSOはいくつかの変数をゼロにし変数選択している一方で、Ridgeでは全ての変数を用いています。ElasticNetはその中間的な性質を表しています。いずれのモデルも真(True)の係数の傾向を概ね捉えています。一方で、相関係数で変数削減したOLSは、変数数を絞ったシンプルなモデルを構築できるものの、係数の推定は正しくありません。残った変数を用いたサンプルへの過剰適合の可能性があります。また、この結果からは言えませんが、相関閾値の設定やデータのわずかな変化によって削除する変数が大きく変わり得るため、学習の安定性は低下します。
モデル選択指針への示唆
本手法の特徴をふまえ、下記のようなモデル指針を立てることができます。
- 変数が多数あり、ノイズが多いと見込まれる場合はLASSOやElasticNetのように変数選択能力を持つ手法が適切です
- Ridgeは係数をゼロにはしないものの、多重共線性のあるデータに対しても比較的安定した推定を与えるので、堅実な選択肢として利用価値があります
- 変数同士の相関が明らかに高く、かつそれを事前に取り除いて良いと判断できる場合は、相関による変数削減+OLSのシンプルなアプローチも選択肢になります
まとめ
本記事では、線形回帰の課題と、課題に対処する3種類の正則化手法を紹介しました。どの手法が最適かは一概には言えませんが、分析の目的やデータの特性に応じて適切に使い分けることが重要です。また、複数の手法を試し、予測結果を比較して判断するのも有効なアプローチです。現在の手法に満足のいく結果が得られていない方や、変数が多く解釈が難しいと感じている方は、ぜひ本記事で紹介した手法をお試しください。