【回帰①】線形回帰で家賃予測モデルを作る

はじめに

分類問題の次は、数値を予測する「回帰問題」に挑戦してみましょう。最も基本的な回帰アルゴリズムが「線形回帰(Linear Regression)」です。

本記事では、部屋の広さに応じて家賃を予測するというシンプルな課題を通じて、線形回帰モデルの作成、予測、評価、可視化までを学んでいきます。


線形回帰とは?

ポイント

  • 予測値は説明変数の線形結合で表される(y = wx + b)
  • 誤差を最小にするように重みw 、切片b を学習
  • 回帰問題のベースモデルとして広く使われている

向いている場面

  • 特徴量と目的変数に「比例関係」があると仮定できる
  • モデルの解釈性が求められる(重みが直感的)

データの準備

部屋の面積(㎡)と家賃(万円)の関係を仮想データでシミュレーションしてみます。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# 仮想データ作成
np.random.seed(42)
x = np.random.uniform(15, 50, 100)  # 面積
noise = np.random.normal(0, 2, 100)
y = 0.8 * x + 2 + noise  # 家賃(線形関係 + ノイズ)

# DataFrameにまとめる
data = pd.DataFrame({"area": x, "rent": y})

線形回帰モデルを作成する

from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score

# 特徴量と目的変数に分ける
X = data[["area"]]
y = data["rent"]

# 訓練データとテストデータに分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 線形回帰モデルの作成と学習
model = LinearRegression()
model.fit(X_train, y_train)

予測とモデル評価

# 予測
y_pred = model.predict(X_test)

# 平均二乗誤差(MSE)と決定係数(R^2)
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)

print("平均二乗誤差:", mse)
print("決定係数 R^2:", r2)
  • MSE(平均二乗誤差):小さいほどよい(予測と実測の誤差)
  • R²(決定係数):1に近いほど精度が高い(予測の当てはまり度)

回帰直線を可視化する

# 散布図と回帰直線
plt.scatter(X_test, y_test, label="実測")
plt.plot(X_test, y_pred, color="red", label="予測(回帰直線)")
plt.xlabel("部屋の広さ(㎡)")
plt.ylabel("家賃(万円)")
plt.title("線形回帰による家賃予測")
plt.legend()
plt.show()

おわりに

線形回帰は、最も基本的な回帰手法ですが、実務や研究でも非常によく使われる重要なモデルです。特に「解釈性が高い」「高速で軽量」という点で、多くのシーンで活躍します。

次回は、複数の特徴量を使った「重回帰分析」と、非線形データに対応する「多項式回帰」へと進んでいきます。


練習問題

Q1. 線形回帰が適しているのはどのようなデータ?

  • A. ラベルが0か1の分類問題
  • B. 特徴量と目的変数が直線的な関係にある
  • C. 非線形な境界を持つ画像認識問題

Q2. 決定係数(R²)の意味は?

  • A. 予測と正解が一致した割合
  • B. モデルの精度が高いかどうかを示す指標(1に近いほど良い)
  • C. モデルの計算速度を示す

Q3. 線形回帰のモデル式として正しいものは?

  • A. y = log(x) + b
  • B. y = wx + b
  • C. y = √x + b

🔗 機械学習シリーズ 関連リンク

▶ 入門〜分類編

▶ 回帰編

▶ 応用編

コメント

タイトルとURLをコピーしました