1. 線形単回帰とは?
線形単回帰(Simple Linear Regression)は、1つのデータから1つの値を予測 する方法です。
例えば:
- 水の量 を 時間 から予測する
- 売上 を 広告費 から予測する
- 気温 を 標高 から予測する
このように 「X が変わると Y も変わる」 という関係を見つけて、未来の Y を予測するのが「線形単回帰」です。
2. 予測の式(y = ax + b)
線形単回帰の基本の形は 一次方程式 です:
y=ax+by = ax + b
x
→ 入力データ(例:広告費、時間)y
→ 予測したいデータ(例:売上、水の量)a
(傾き) →x
が 1 増えたときy
がどれだけ増えるかb
(切片) →x=0
のときのy
の値(初期値)
たとえば:
この場合、広告費が 1 増えると売上が 4 増える ということになります。
3. a
と b
を求める方法(最小二乗法)
データが与えられたとき、 a
(傾き)と b
(切片) を 最小二乗法 という方法で求めます。
💡 なぜ誤差を二乗するの?
- 予測値と実際の値の差を足し合わせると プラスとマイナスが相殺される
- 二乗すると どちらもプラスになり、誤差が正しく計算できる
- 誤差の二乗の合計が最小 になる
a
とb
を求める
簡単に言うと、誤差をできるだけ小さくする直線を見つける ということです!
4. Pythonで線形単回帰を実装
scikit-learn
を使えば、簡単に線形単回帰を実装できます!🚀
5. コードの解説
① make_regression()
でデータを作成
通常、データはすでに持っていることが多いですが、今回は テスト用データを自動生成 しました。
n_samples=100
→ 100個のデータを作成n_features=1
→ 1つの入力(X
)noise=5.0
→ 誤差(ランダムなズレ)を加えるrandom_state=42
→ 乱数の固定(毎回同じデータを作るため)
② train_test_split()
でデータを分割
- 訓練データ(train_X, train_y) → モデルを学習させるためのデータ
- テストデータ(test_X, test_y) → モデルの精度を確認するためのデータ
通常、8:2 や 7:3 の割合 で分けます。
③ LinearRegression()
で回帰モデルを作成
model
という変数に 線形単回帰モデル を作ります。
④ fit()
でモデルを学習
fit()
メソッドで、train_X
(入力)と train_y
(出力)から a(傾き)と b(切片) を求めます。
⑤ score()
でモデルの精度を確認
💡 model.score()
を使うと 決定係数 R² が出ます。
R2=1−∑(yi−yi^)2∑(yi−yˉ)2R^2 = 1 – \frac{\sum (y_i – \hat{y_i})^2}{\sum (y_i – \bar{y})^2}
📌 R² の意味
R² の値 | 予測の精度 |
---|---|
1.0 | 完璧な予測 |
0.8 | 80%の精度で予測できる |
0.5 | 50%の精度(微妙) |
0.0 | 役に立たない |
負の値 | 予測がひどすぎる |
例えば R² = 0.85 なら「85%の精度で予測できている」ということです。
6. 実際に使える例
💡 売上と広告費の関係を予測する
⬇ 実行結果
「広告費 35万円 のとき、売上は 290万円くらい になる」と予測できます!✨
7. まとめ
📌 線形単回帰のポイント
✅ 1つの変数 x
から y
を予測する方法
✅ y = ax + b の式を求めて未来を予測
✅ 最小二乗法で誤差を最小化
✅ Pythonの sklearn
を使えば簡単に実装できる!
💡 売上や気温の予測、ビジネス分析など、あらゆる分野で使われる手法!
データ分析の第一歩として、ぜひ活用してみてください!🚀
コメントを残す