回帰(ボストン住宅価格など)

機械学習フレームワーク TensorFlow を用いた「回帰モデル(Regression)」の実践的な開発について、特に ボストン住宅価格予測の例をもとに詳しく説明します。


回帰とは

回帰(Regression) とは、連続値(実数値)を予測するためのモデルです。
分類が「カテゴリの予測(例:犬か猫か)」であるのに対し、回帰は「数値の予測(例:家の価格、気温、売上)」に用いられます。


データセット:ボストン住宅価格(Boston Housing)

特徴

  • 特徴量(入力): 全13種類(例:部屋数、犯罪率、学区の質など)

  • 目的変数(出力): 住宅価格(1000ドル単位)

注意:ボストン住宅価格データセットは倫理的な懸念から非推奨となりつつあります(特に人種に関する特徴量の扱い)。代替としては California Housing Dataset などが推奨されます。


TensorFlowによる開発ステップ

1. 必要なライブラリのインポート

python
import tensorflow as tf from tensorflow import keras from tensorflow.keras import layers import numpy as np from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler

2. データの読み込みと前処理

python
from tensorflow.keras.datasets import boston_housing # データの読み込み (x_train, y_train), (x_test, y_test) = boston_housing.load_data() # 特徴量のスケーリング(標準化) scaler = StandardScaler() x_train = scaler.fit_transform(x_train) x_test = scaler.transform(x_test)

3. モデルの構築(Sequential API)

python
model = keras.Sequential([ layers.Dense(64, activation='relu', input_shape=(x_train.shape[1],)), layers.Dense(64, activation='relu'), layers.Dense(1) # 出力は1つの連続値(価格) ])

4. モデルのコンパイル

python
model.compile( optimizer='adam', loss='mse', # 平均二乗誤差(回帰タスクの代表的損失関数) metrics=['mae'] # 平均絶対誤差(性能評価指標) )

5. モデルの学習

python
history = model.fit( x_train, y_train, epochs=100, batch_size=32, validation_split=0.2, verbose=1 )

6. 評価と予測

python
test_loss, test_mae = model.evaluate(x_test, y_test, verbose=0) print(f"Test MAE: {test_mae:.2f}") # 予測 predictions = model.predict(x_test)

回帰モデル評価指標

  • MAE(Mean Absolute Error):予測誤差の平均(直感的な評価)

  • MSE(Mean Squared Error):大きな誤差をより強調

  • RMSE(Root Mean Squared Error):MSEの平方根

  • R²スコア(決定係数):モデルの決定力(scikit-learnを使用)


改善のための工夫

  • 特徴量の正規化:学習の安定性と速度向上

  • 層の数やユニット数の調整

  • ドロップアウトやL2正則化の導入による過学習対策

  • EarlyStoppingによる学習の自動停止


まとめ

TensorFlowによる回帰モデル開発では、以下の要素が重要です。

項目 内容
問題設定 出力が実数(住宅価格など)
モデル構造 出力層は活性化なし(Dense(1)
損失関数 mse, maeなど
評価指標 mae, rmse, など
データ前処理 標準化(StandardScaler)が有効

生成日:2025/05/22