Linear Regression
線形回帰では、最小二乗法で適合させた特徴量の重み付き和として数値を予測します。仕組み、仮定、派生手法、Pythonコードについて解説します。
線形回帰は、教師あり学習の手法です。価格、気温、翌月の需要などの連続値を、入力特徴量の加重和と定数の合計として予測します。特徴量が1つの場合は直線ŷ = w·x + bを当てはめ、複数の場合は平面または超平面ŷ = w₁x₁ + w₂x₂ + … + wₙxₙ + bを当てはめます。1805年にAdrien-Marie Legendreがこの当てはめに使う最小二乗法を発表し、1809年にはCarl Friedrich Gaussが独自の説明を発表しました。学習が数ミリ秒で完了し、少量のデータで動作し、各重みが特徴量単位あたりの予測値の変化量を示すため、数値の予測モデリングでは現在も一般的な最初のモデルです。
線形回帰の仕組み#
学習では、学習データの正解ターゲットに予測が最も近くなるように、重みと切片を決定します。通常最小二乗法では、ターゲットと予測の差である残差の二乗和で近さを測ります。これは、回帰の標準的な損失関数である平均二乗誤差(MSE)の最小化と同じです。二乗誤差による損失は単一の最小値を持つ滑らかなボウル状になるため、最適な重みは正規方程式w = (XᵀX)⁻¹Xᵀyで閉形式により求められます。ライブラリは明示的な逆行列の代わりに、QR分解やSVDなどの安定した行列分解を使って計算します。この方法を適用できないほど大きなデータセットでは、勾配降下法または確率的勾配降下法で反復的に同じ重みに到達します。特徴量のスケールを標準化して揃えると、最も速く収束します。
各重みは、他の特徴量を一定に保ったときに、その特徴量が1単位増加すると予測がどれだけ変わるかを示すため、モデルを監査しやすくなります。scikit-learnのLinearRegression推定器は通常最小二乗法を当てはめます。次の例では、既知の係数から住宅価格を生成し、当てはめによってそれらをどの程度再現できるかを確認します。
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score
from sklearn.model_selection import train_test_split
# 500 synthetic homes: price = $50,000 + $150 per sq ft - $2,000 per year of age + noise
rng = np.random.default_rng(0)
X = np.column_stack([rng.uniform(800, 3000, 500), rng.uniform(0, 50, 500)])
y = 50_000 + 150 * X[:, 0] - 2_000 * X[:, 1] + rng.normal(0, 20_000, 500)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
# Fit by ordinary least squares
model = LinearRegression()
model.fit(X_train, y_train)
print(f"Per sq ft: {model.coef_[0]:.1f}, per year: {model.coef_[1]:.0f}, intercept: {model.intercept_:.0f}")
print(f"Test R^2: {r2_score(y_test, model.predict(X_test)):.3f}")当てはめで得られた1平方フィートあたり147.7ドルは真の値150ドルに近く、築年数の係数−1,992ドル/年も真の値−2,000ドル/年に近い値です。また、ホールドアウト価格の分散の96.2%を説明しています(R² = 0.962)。R²はモデルが説明するターゲットの分散割合であり、二乗平均平方根誤差(RMSE)はターゲット固有の単位で典型的な誤差を示します。
前提条件と診断#
線形回帰では、目的変数の平均が入力の重み付き和であること、誤差が独立していること、誤差のばらつきが予測値の範囲全体でほぼ一定であることを仮定します。また、重みの信頼区間とp値も、誤差がおおむね正規分布に従うことを仮定します。入力には生の特徴量を固定変換した任意の値を使えるため、特徴量エンジニアリングによって二乗項、対数、特徴量間の積を追加しても線形回帰であり、曲線に沿った予測が可能です。標準的な確認方法は、残差を予測値に対してプロットすることです。曲線状のパターンは非線形項の不足を示し、扇形のパターンは予測値に伴って誤差が大きくなることを意味しますが、多くの場合、目的変数の対数変換で改善できます。また、二乗誤差では少数の外れ値に適合結果が引き寄せられることがありますが、Huber損失などのロバスト損失を使うと影響を抑えられます。
特徴量同士に強い相関がある場合、データがわずかに変わるだけで、それぞれの重みが大きく変動します。リッジ回帰は重みの二乗に対するペナルティを加えて重みを縮小し、ラッソ回帰は重みの絶対値に対するペナルティを加えて一部の重みを厳密にゼロにすることで特徴量を選択します。Elastic Netはその両方を組み合わせます。これらの正則化手法は、バイアスと分散のトレードオフにおいて、わずかなバイアスを受け入れて分散を抑え、サンプル数に比べて特徴量が多い場合の過学習を抑制します。
ディープラーニングにおける線形回帰#
数値を予測するニューラルネットワークは通常、最後に線形層を持つため、最終ステップでは前段の層が学習した特徴量に対する線形回帰を行います。また、隠れ層のないネットワークをMSEで学習すると、厳密に線形回帰となります。物体検出モデルは、ボックス座標の予測にこの仕組みを使います。YOLO26では、検出ヘッドの各ボックス分岐の末尾に1×1畳み込みを配置し、各グリッド位置の特徴量を、その位置からバウンディングボックスの各辺までの4つの距離に線形に変換します。学習では、ボックスの重なりに対するCIoU損失とともに、これらの距離にL1損失を適用します。
用途#
- 予測:小売業者や電力会社は、価格、プロモーション、気温、カレンダー指標から売上や電力需要を回帰分析し、複雑な予測モデルの一般的なベースラインとして、適合したトレンドラインを使用します。
- 価格設定と評価:ヘドニック価格モデルは、住宅価格を面積、築年数、立地に対して回帰分析します。それぞれの重みは、その属性が1単位増えたときの市場価値を示します。
- 効果の推定:経済学者や医療研究者は、賃金や血圧などの結果を、関心のある要因と制御変数に対して回帰分析します。他の要因を一定に保ったときに、その要因によって結果がどのように変化するかを推定できます。
- キャリブレーション曲線:研究所では、既知濃度の標準試料に対して測定機器の読み取り値を回帰分析し、適合した直線を逆にたどることで、新しい試料の読み取り値を濃度に変換します。
線形回帰と関連手法の比較#
- ロジスティック回帰:同じ重み付き和にシグモイド関数を適用して0から1の確率を出力することで分類を行い、二乗誤差の代わりに対数損失で学習します。
- 多項式回帰:xやx²など、特徴量のべき乗を当てはめます。これは、展開した特徴量に対する線形回帰です。
- 決定木と、XGBoostなどの勾配ブースティング木:特徴空間を領域に分割して、手作業で特徴量を作らずに非線形効果や相互作用を学習します。ただし、各領域内では定数を予測するため、学習範囲を超えてトレンドを外挿できません。
- 相関:ピアソンの相関係数rは、線形関係の強さを対称的に測定します。また、yをxで単回帰したときの傾きは、rにyとxの標準偏差の比を掛けた値です。










