普通最小二乗法とリッジ回帰の分散

Beginner

This tutorial is from open-source community. Access the source code

はじめに

この実験では、Python の scikit - learn ライブラリを使って、最小二乗法(OLS)とリッジ回帰の違いを調べます。これら 2 つの線形回帰手法がデータのノイズにどのように対処するか、また予測においてどのように異なるかを調べます。

VM のヒント

VM の起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebook を使って練習しましょう。

時々、Jupyter Notebook が読み込み終わるまで数秒待つ必要があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。

学習中に問題に遭遇した場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。

ライブラリのインポート

このステップでは、必要な Python ライブラリをインポートします。

import numpy as np
import matplotlib.pyplot as plt
from sklearn import linear_model

データの作成

このステップでは、分析に使用するデータを作成します。

X_train = np.c_[0.5, 1].T
y_train = [0.5, 1]
X_test = np.c_[0, 2].T

識別器の定義

このステップでは、OLS とリッジ回帰の識別器を定義します。

classifiers = dict(
    ols=linear_model.LinearRegression(), ridge=linear_model.Ridge(alpha=0.1)
)

結果の可視化

このステップでは、分析結果を可視化します。

for name, clf in classifiers.items():
    fig, ax = plt.subplots(figsize=(4, 3))

    for _ in range(6):
        this_X = 0.1 * np.random.normal(size=(2, 1)) + X_train
        clf.fit(this_X, y_train)

        ax.plot(X_test, clf.predict(X_test), color="gray")
        ax.scatter(this_X, y_train, s=3, c="gray", marker="o", zorder=10)

    clf.fit(X_train, y_train)
    ax.plot(X_test, clf.predict(X_test), linewidth=2, color="blue")
    ax.scatter(X_train, y_train, s=30, c="red", marker="+", zorder=10)

    ax.set_title(name)
    ax.set_xlim(0, 2)
    ax.set_ylim((0, 1.6))
    ax.set_xlabel("X")
    ax.set_ylabel("y")

    fig.tight_layout()

plt.show()

まとめ

この実験では、Python の scikit - learn ライブラリを使って、普通最小二乗法(OLS)とリッジ回帰の違いを調べる方法を学びました。これら 2 つの線形回帰手法がデータのノイズにどのように対処するか、また予測においてどのように異なるかを見ました。また、分析結果を可視化しました。