はじめに
これまでの学習では、機械学習モデルの概要やデータの前処理について理解を深めてきました。
次のステップとして重要になるのが、「回帰分析」です。
回帰分析は、あるデータ(特徴量)から別のデータ(目的変数)を数値的に予測するための基本的な手法です。
この記事では、
- 単回帰分析とは何か?
- 重回帰分析とは何か?
- 回帰モデルを評価する指標(決定係数 R2R^2R2) について、わかりやすく解説していきます。
🔹 統計自主学習シリーズまとめページはこちら
▶【初心者向け】統計自主学習シリーズまとめ
単回帰分析とは?
単回帰分析とは、1つの特徴量(説明変数)から1つの目的変数(応答変数)を予測する方法です。
特徴量と目的変数の間に直線的な関係があると仮定し、最適な直線を求めます。
単回帰分析の式
単回帰の一般的な式は次のように表されます。 y = wx + b
- y:予測したい目的変数
- x:説明変数
- w:傾き(回帰係数)
- b:切片
つまり、「xが増えると、yはどれくらい増えるか?」を数式で表したものです。
例
- x:勉強時間
- y:テストの得点
勉強時間が増えれば、得点も上がると予想できるので、単回帰分析が適しています。
単回帰分析の前提条件(仮定)
信頼できる回帰モデルを作るためには、以下の仮定が満たされていることが重要です。
- 線形性:xとyの関係が直線的である
- 独立性:データの観測値同士が独立している
- 等分散性(ホモスケダスティシティ):誤差の分散が一定
- 正規性:誤差が正規分布に従う
モデルの評価指標
- 決定係数(R²):説明変数が目的変数の変動をどれだけ説明できるか(0~1で表す。1に近いほど良いモデル)
- p値:回帰係数が統計的に有意かどうか
- 残差プロットやQ-Qプロット:仮定が守られているかを視覚的に確認
重回帰分析とは?
重回帰分析とは、2つ以上の特徴量を使って目的変数を予測する方法です。
単回帰では1つの要素だけを考えましたが、現実の問題では複数の要因が絡むことが多いため、重回帰分析が重要になります。
重回帰分析の式
重回帰の式は次のように表されます。 y=w1x1+w2x2+⋯+wnxn+by
ここで、
- x1,x2,…,xn:複数の特徴量
- w1,w2,…,wn:それぞれの特徴量に対する重み(回帰係数)
- b:切片
各特徴量がどれだけ目的変数に影響するかを個別に学習します。
例
- x1:勉強時間
- x2:睡眠時間
- y:テストの得点
この場合、勉強時間だけでなく、睡眠時間も得点に影響を与えていると考えられます。
回帰モデルの評価指標 ― 決定係数 R^2
回帰モデルを作ったら、「どれくらいうまく予測できているか?」を評価する必要があります。
そのときによく使われるのが、決定係数 R^2 です。
決定係数 R^2とは?
- R^2は、0〜1の範囲の数値で表されます。
- 1に近いほど、モデルがデータをよく説明できていることを意味します。
R^2 = 1 – 残差平方和/総平方和
簡単に言えば、
- モデルがどれくらい「実際のデータ」と「予測値」を近づけられているか を示す指標です。
例
- R^2 = 0.9 → モデルが90%うまくデータを説明できている
- R^2 = 0.2 → モデルはほとんどデータを説明できていない
Pythonでの簡単な実装例
最後に、単回帰・重回帰をPythonでサクッと実装するコードも紹介しておきます。
単回帰分析
from sklearn.linear_model import LinearRegression
import numpy as np
# サンプルデータ(勉強時間と得点)
X = np.array([[1], [2], [3], [4], [5]])
y = np.array([50, 55, 65, 70, 75])
# モデル学習
model = LinearRegression()
model.fit(X, y)
# 予測
print("予測:", model.predict([[6]]))
print("決定係数 R^2:", model.score(X, y))
重回帰分析
from sklearn.linear_model import LinearRegression
import numpy as np# サンプルデータ(勉強時間と睡眠時間と得点)LinearRegression()で線形回帰モデル(重回帰)を作成
X = np.array([[1, 8], [2, 7], [3, 6], [4, 5], [5, 4]])
y = np.array([50, 55, 60, 70, 80])
# モデル学習
model = LinearRegression() #X(勉強時間と睡眠時間)からy(得点)を予測するためのモデルを学習させる
model.fit(X, y) #
# 予測
print("予測:", model.predict([[6, 3]]))
print("決定係数 R^2:", model.score(X, y))
まとめ
- 単回帰分析は、1つの特徴量から予測する方法
- 重回帰分析は、複数の特徴量を使って予測する方法
- モデルの精度は決定係数 R^2で評価する
回帰分析は、データから「なぜ?」「どれくらい?」を読み解くための強力な道具です。
次回は、この回帰分析をさらに発展させた「モデルの評価方法」について学んでいきましょう!
【あわせて読みたい】
🔹 次におすすめの記事
▶分類問題の基礎!混同行列・精度・再現率・F1スコアの正しい使い方
🔹 関連記事
▶「正規分布とは?現実世界と機械学習での使われ方・特徴をやさしく解説」
▶正規性の検定とは?データの標準化・正規化もまとめてわかりやすく解説
▶「基本統計量をマスター!平均・中央値・最頻値・分散・標準偏差を実例でわかりやすく解説」
🔹 統計自主学習シリーズまとめページはこちら
▶【初心者向け】統計自主学習シリーズまとめ

コメント