Scikit-Learn による Lasso パス

Beginner

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

はじめに

この実験では、糖尿病データセットに対して LARS アルゴリズムを使用して正則化パラメータに沿った Lasso パスを計算する方法を示します。Lasso パスは、L1 正則化パラメータが増加するにつれて線形モデルの係数のプロットです。各色は係数ベクトルの異なる特徴を表し、これは正則化パラメータの関数として表示されます。

VM のヒント

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

Jupyter Notebook の読み込みには数秒かかる場合があります。Jupyter Notebook の制限により、操作の検証は自動化できません。

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

データの読み込み

最初のステップは、Scikit-Learn から糖尿病データセットを読み込むことです。

from sklearn import datasets

X, y = datasets.load_diabetes(return_X_y=True)

Lasso パスの計算

次に、LARS アルゴリズムを使用して Lasso パスを計算します。Scikit-Learn のlinear_modelモジュールのlars_path関数を使用して Lasso パスを計算します。この関数は、入力特徴、目的変数、およびメソッドをパラメータとして受け取ります。この場合、L1 正則化には「lasso」メソッドを使用します。

from sklearn import linear_model

_, _, coefs = linear_model.lars_path(X, y, method="lasso", verbose=True)

Lasso パスの描画

Lasso パスを計算した後、結果を描画します。各特徴の係数を正則化パラメータの関数として描画します。

import numpy as np
import matplotlib.pyplot as plt

xx = np.sum(np.abs(coefs.T), axis=1)
xx /= xx[-1]

plt.plot(xx, coefs.T)
ymin, ymax = plt.ylim()
plt.vlines(xx, ymin, ymax, linestyle="dashed")
plt.xlabel("|coef| / max|coef|")
plt.ylabel("Coefficients")
plt.title("LASSO Path")
plt.axis("tight")
plt.show()

結果の解釈

得られたグラフは、糖尿病データセットの Lasso パスを示しています。各色は係数ベクトルの異なる特徴を表し、これは正則化パラメータの関数として表示されます。正則化パラメータが増加するにつれて、一部の特徴の係数はゼロに近づき、それらの特徴が目的変数を予測する際に重要度が低いことを示しています。

まとめ

この実験では、糖尿病データセットに対して LARS アルゴリズムを使用して Lasso パスを計算し、描画する方法を示しました。Lasso パスは、線形モデルの係数に対する L1 正則化の影響を理解するための便利な可視化手段です。