初心者でもわかる!線形重回帰をシンプルに解説

1. 線形重回帰とは?

線形重回帰(Multiple Linear Regression)とは、
複数のデータを使って1つの値を予測する方法」です。

🔹 具体例

  • レストランの満足度「料理の美味しさ」と「接客の良さ」 から予測する
  • 家の価格「広さ」「駅からの距離」「築年数」 から予測する
  • テストの点数「勉強時間」「睡眠時間」「授業の出席回数」 から予測する

つまり、「1つの要因(単回帰)だけでなく、複数の要因を考慮して予測する」方法が 線形重回帰 です。


2. 予測の式

単回帰では、1つの変数 x を使って y を求めました:

y=ax+by = ax + b

(例:売上 = 4 × 広告費 + 1000)

重回帰では 複数の変数 を使って y を求めます:

y=β0x0+β1×1+β2×2+…+ϵy = β_0 x_0 + β_1 x_1 + β_2 x_2 + … + ϵ

(例:満足度 = 3 × 料理の美味しさ + 2 × 接客の良さ + ϵ)

🔹 それぞれの意味

記号 意味
y 予測したいデータ(例:満足度、売上、価格)
x₀, x₁, x₂ 説明変数(入力データ)
β₀, β₁, β₂ x にかかる係数(どのくらい影響するか)
ϵ 誤差(完全には予測できないズレ)

💡 fit() を使うと、モデルが 最も誤差が小さくなるように β の値を決定 します。


3. Pythonで線形重回帰を実装する

scikit-learn を使えば、簡単に重回帰を実装できます!

python
# 必要なライブラリをインポート
from sklearn.linear_model import LinearRegression
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split
# ① データの作成(10個の特徴量のうち、3つが予測に役立つ)
X, y = make_regression(n_samples=100, n_features=10, n_informative=3, noise=5.0, random_state=42)
# ② 訓練データとテストデータに分割
train_X, test_X, train_y, test_y = train_test_split(X, y, random_state=42)
# ③ モデルを作成
model = LinearRegression()
# ④ モデルを学習(X から Y を予測するルールを見つける)
model.fit(train_X, train_y)
# ⑤ モデルの精度を確認(決定係数 R²)
print(f"決定係数 R²: {model.score(test_X, test_y):.2f}")

4. コードの詳しい解説

① データの作成

python
X, y = make_regression(n_samples=100, n_features=10, n_informative=3, noise=5.0, random_state=42)
  • n_samples=100 → 100個のデータを作成
  • n_features=10 → 10個の特徴量(説明変数)を持つデータ
  • n_informative=3 → 10個のうち3つが実際に予測に関係する
  • noise=5.0 → ノイズ(誤差)を加えて現実的なデータに
  • random_state=42 → 乱数の固定(毎回同じデータを作るため)

💡 「関係ある特徴量」と「関係ない特徴量」が混ざったデータを作成 しています。


② データを訓練用とテスト用に分割

python
train_X, test_X, train_y, test_y = train_test_split(X, y, random_state=42)
  • 訓練データ(train_X, train_y) → モデルを学習するためのデータ
  • テストデータ(test_X, test_y) → モデルの精度を確認するためのデータ

通常、8:2 や 7:3 の割合 で分けます。


③ モデルを作成

python
model = LinearRegression()

model という変数に 線形回帰モデル を作成します。


④ モデルを学習

python
model.fit(train_X, train_y)

データのパターンを学習して β₀, β₁, β₂ などの係数を決定 します。


⑤ モデルの精度を確認

python
print(f"決定係数 R²: {model.score(test_X, test_y):.2f}")

model.score() を使うと、決定係数 R² が計算されます。

📌 R² の意味

R² の値 予測の精度
1.0 完璧な予測
0.8 80%の精度で予測できる
0.5 50%の精度(微妙)
0.0 役に立たない
負の値 予測がひどすぎる

例えば、R² = 0.85 なら「85%の精度で予測できている」ということです。


6. 予測をしてみる

モデルが学習できたので、新しいデータに対して predict() で予測できます。

python
y_pred = model.predict(test_X)
print(y_pred[:5]) # 最初の5つの予測値を表示

このように、複数のデータ(特徴量)をもとに予測ができるようになる のが 線形重回帰の強み です!


7. まとめ

📌 線形重回帰のポイント

「1つの出力を、複数のデータから予測する」方法
y = β₀x₀ + β₁x₁ + β₂x₂ + ... + ϵ の形で表される
Python の sklearnLinearRegression() を使うと簡単に実装できる!
モデルを fit() で学習 → predict() で予測 → score() で精度を確認!

💡 「単回帰だけじゃなく、複数の要因を考慮したい!」というときに重回帰を使う!
データ分析のスキルとして、ぜひ活用してみてください!🚀

Comments

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です