はじめに
機械学習やデータ分析を始めると、「売上を予測したい」「今後の気温や株価を予測したい」といった、「連続値を予測」する場面に出会うことがよくあります。そんなときに使える基本手法が「回帰分析」です。
本記事では、回帰分析の概念から、Python(scikit-learn)を用いた簡単なサンプルコードの説明までを行います。これから回帰分析を始めたい方の一助になれば幸いです。
回帰分析とは
-
目的
ある「数値(連続値)」を予測する手法。売上や株価、温度、家賃などを予測したい場合に用いられる。 -
考え方
- 「説明変数」と呼ばれる予測の根拠となるデータ(特徴量)と、「目的変数」と呼ばれる予測したい値がある。
- データを学習して、両者の関係をできるだけ正確に捉える関数(モデル)を作る。
-
なぜ重要か
- 将来の値を定量的に予測できるため、意思決定や計画立案に役立つ。
- 特徴量の影響度を把握することで、どの要素が結果に大きく影響しているか分析できる。
回帰分析の種類
代表的な手法として、以下が挙げられます。
-
単回帰分析
- 説明変数が1つの場合。最も基本的な線形回帰モデル。
- 例:「勉強時間(説明変数)」から「テストの点数(目的変数)」を予測する。
-
重回帰分析
- 説明変数が複数ある場合。実際のビジネスや研究ではこちらを使う方が多い。
- 例:「広告費・出店エリア・客足」など複数の要素から「売上」を予測する。
-
多項式回帰
- 説明変数を2次式や3次式などの形でモデル化する場合。非線形な関係を捉えたいときに使われる。
-
その他の回帰
- リッジ回帰、Lasso回帰、Elastic Net回帰などの「正則化回帰」
- ランダムフォレスト回帰、XGBoost、LightGBMなどのアンサンブル手法
- ニューラルネットワークを使った深層学習ベースの回帰
- データや目的に応じて使い分けるのがポイント。
【実践】Python(scikit-learn)で回帰分析をやってみよう
ここでは、scikit-learnに含まれている「California Housing Dataset」を使って住宅価格を予測する例を紹介します。
1. 必要なライブラリの準備
pip install numpy pandas scikit-learn
2. データ読み込みと前処理
import numpy as np
import pandas as pd
from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split
housing = fetch_california_housing()
X = pd.DataFrame(housing.data, columns=housing.feature_names)
y = housing.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
3. モデルの学習と予測
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
4. モデルの評価
from sklearn.metrics import mean_squared_error, r2_score
mse = mean_squared_error(y_test, y_pred)
rmse = np.sqrt(mse)
r2 = r2_score(y_test, y_pred)
print("RMSE:", rmse)
print("R^2 :", r2)
まとめ
- 回帰分析は「数値を予測」したいときに用いられる、機械学習の基本手法。
- Python(scikit-learn)を使えば、数行のコードで実装・評価が可能。
- データや用途に合わせて、単回帰・重回帰・正則化回帰・アンサンブルなど、多様な手法を試すことで精度向上が期待できる。
本記事では、線形回帰の基礎的なサンプルを紹介しました。機械学習で回帰を扱う第一歩として、ぜひ自分のデータセットを使って試してみてください。