📈
🧠 線形回帰完全攻略 - 重みとバイアスから誤差計算まで
📌 概要
機械学習を初めて学ぶと、必ず出会う概念が 線形回帰(Linear Regression) です。
しかし、w
、b
、誤差
、勾配降下法
などの用語が一度に出てくると、とても複雑で難しく感じられますよね。
この記事では、完全な初心者 のために、
「なぜ x を掛けるのか?」「b は一体何なのか?」といった疑問を理解することに焦点を当てます。
本当に一つ一つ簡単に解説していきます 😊
⚙️ 1. 線形回帰とは?
線形回帰は予測モデルの一つで、
以下のような式を使用して 結果値 y を予測します。
y = w1*x1 + w2*x2 + ... + wn*xn + b
-
x
: 入力値(独立変数) -
w
: 重み(重要度) -
b
: バイアス(基本値) -
y
: 予測値
🔍 2. 重み(w)とは?
重み w は入力値 x の重要度を決定する数値 です。
例:
x1: 身長, w1: 0.2 → 予測値に20%寄与
x2: 体重, w2: 0.5 → 予測値に50%寄与
- x の値が大きくても、w が小さいと影響は小さいです。
- x の値が小さくても、w が大きいと影響は大きいです。
📌 まとめ: 「この入力値がどれだけ重要か」を決める値!
🎯 3. バイアス(b)とは?
バイアスは入力値が0でも y の値が0にならないようにする基本値 です。
例:
y = 勉強時間 × 10 + 20
- 勉強時間が0でもスコアは20点 → これが b!
📌 まとめ: b は常に加えられる「開始点」のような役割
❗️ 4. なぜ誤差に x を掛けるのか?
誤差 = 予測値 - 実際の値
→ この誤差を減らすために w を変更する必要がありますが、
「どの x が誤差に大きく影響したのか」を知るために
誤差に x を掛けて調整します!
w[j] = w[j] - 学習率 * (誤差 * x[j])
- x が大きいほど → 誤差に多く関与 → w も大きく調整
- x が小さいほど → 影響は小さい → w を少しだけ変更
📌 まとめ: 誤差にどれだけ影響を与えたかを判断するために x を掛ける!
🧮 5. 勾配降下法(Gradient Descent)
誤差を減らすために w と b を少しずつ変更していくプロセスです。
w の調整:
w[j] = w[j] - 学習率 * 平均(誤差 * x[j])
b の調整:
b = b - 学習率 * 平均(誤差)
b は 誤差全体の平均値 のみで調整されます。
🧪 6. 簡単なコード例(1エポック)
import numpy as np
# サンプルデータ:2つのサンプル、3つの特徴
X = np.array([[1, 2, 3],
[4, 5, 6]])
y = np.array([20, 50]) # 正解
# 初期の重みとバイアス
w = np.array([0.1, 0.1, 0.1])
b = 0.0
lr = 0.01 # 学習率
# 予測
pred = X @ w + b
error = pred - y
# 重みとバイアスの更新
w -= lr * (error[:, np.newaxis] * X).mean(axis=0)
b -= lr * error.mean()
print("更新された w:", w)
print("更新された b:", b)
🧠 まとめ
用語 | 意味 |
---|---|
w (重み) |
入力値の重要度(どれだけ掛けるか) |
b (バイアス) |
予測値を上下に動かす基本値 |
誤差(error) | 予測値 - 実際の値 |
x を掛ける理由 | 誤差に最も影響を与えた特徴(x)を特定するため |
勾配降下法 | 誤差を減らすために w と b を少しずつ調整する方法 |
Discussion