SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ITエンジニアのためのスパースモデリング入門

スパースモデリングのモデルを評価する~LASSO推定値の評価方法

  • X ポスト
  • このエントリーをはてなブックマークに追加

正則化パラメータの選択方法(1)

 前節で解パスを用いることで正則化パラメータが回帰係数にどれだけ影響を及ぼすかということを可視化することができました。正則化パラメータの値によって、変数をいくつか選択したり、全く選択しなかったりというようにモデルが大きく変化しますが、正則化パラメータはモデルの作成者が任意に設定できるパラメータであり、事前に与えられるものではありません。それではどのような基準で正則化パラメータを選択すれば良いのでしょうか。

 正則化パラメータ\(\lambda\)を選択する手順は以下の通りになります。まず\(\lambda\)を適当に定め、それに対して回帰係数の推定値を計算します。回帰係数の推定値を元にある評価基準を計算し、これを複数回繰り返す中で最も適切な評価基準の値が得られる\(\lambda\)を適切な正則化パラメータとして選択します。評価基準には色々なものが提案されており、以下ではいくつかの評価基準を紹介しながら、実際に正則化パラメータの選択を行ってみます。

交差検証法

 推定されたモデルが良いモデルかどうか、という観点の一つに、モデルが未知のデータに対しても当てはまりが良いかということが挙げられます。未知のデータというのは実際には将来観測されるデータのことを意味しますが、実際には、現在持っているデータのみを使って、良いモデルかどうかを判断するしかありません。

 このようなときに用いられるのが交差検証法(cross-validation)です。交差検証法においては、まずn個のデータ\(\{(y_1,{x}_1),...,(y_n,x_n)\}\)を\(K(\le n)\)個のデータ集合\(D_1,...,D_K\)に分割します。そして\(k\)番目のデータ集合\(D_k\)を除いた\(K-1\)個のデータで学習を行い回帰係数を推定します。その推定されたパラメータで\(D_k\)に対して予測値と観測値の残差二乗和(SSE:Sum of Squared Errors of prediction)を求めます。残差二乗和とは、予測値と観測値の差の二乗値を予測値と観測値の組み合わせ全てに対して算出し、足し合わせた値のことです。

 そして\(k\)を1から\(K\)まで変化させて\(K\)個のSSEの平均を求めます。そして、正則化パラメータを変化させていったときに、得られた値が最も低いものを最も良いモデルを推定するパラメータであるとして選択します。

 実際に前節で用いたデータに対して交差検証法を適用してみましょう。

 scikit-learnには既にLASSOでの正則化パラメータの交差検証を行うためのモジュールであるLassoCVが用意されており、これを利用することで簡単に正則化パラメータの交差検証を行うことができます。例えば以下のような形で使用します。

from sklearn.linear_model import LassoCV
cv_alphas = np.linspace(-3,0.1,num=100)
cd_model_cv = LassoCV(cv=10, alphas=pow(10,cv_alphas))
cd_model_cv.fit(X_train, y_train)

 今回はLassoCVの変数をcv=10と設定することで、10分割交差検証を行っています。つまりデータを10個の集合に分割し、ある9個の集合で学習を行い、回帰係数を推定した後、残り1つの集合に対して予測値と観測値のSSEを計算します。それを計10回全ての組み合わせに対して行います。そして、それらの平均を求めます。この計算は候補となる正則化パラメータ全てに対して行われ、その中で最もSSEの平均値が低かったものが選択されます。

 下図が正則化パラメータの変化に対するSSEの平均値の推移です。オレンジ色の点が各正則化パラメータに対するSSEの平均値を示していて、青い点線が選択された正則化パラメータを示しています。つまり、このときの\(\lambda\)が最もSSEの平均値を低くすることができるということです。

CV図
CV図

 また、各点の上下に伸びる線は各正則化パラメータで得られるSSEの標準誤差(標準偏差を\(\sqrt{n}\)で割ったもので、\(n\)はサンプル数。ここでは\(n=10\))を表していて、この標準誤差を利用したパラメータの選択方法もあります。

 具体的には、最も低い平均SSEを\(\rm CV_0\)として、これをある正則化パラメータ\(\lambda\)で取るとき、\(\lambda\)での交差検証で得られるSSE全体の標準誤差を\(\rm e_0\)とします。そして平均SSEが\(\rm{CV_0+e_0}\)よりも小さくなる中で最大の\(\lambda\)を最適な正則化パラメータとして選択します。この考え方は1標準誤差ルールと呼ばれていて、平均SSEが小さい中でもできるだけ単純なモデルを選択しようという考え方に則っています。つまり予測精度をある程度担保しつつ、選択する変数を少なくすることでモデルの単純化を目指すということです。1標準誤差ルールで選ばれた正則化パラメータは緑の破線で示されています。

次のページ
正則化パラメータの選択方法(2)

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
ITエンジニアのためのスパースモデリング入門連載記事一覧

もっと読む

この記事の著者

宇佐見 一平(株式会社ハカルス)(ウサミ イッペイ)

 京都大学情報学科を卒業後、新卒でメーカーに入社しR&D部門に所属。そこで出会った機械学習に魅せられ、より深く広く機械学習やデータ分析を用いた課題解決に取り組みたいと思い,2019年3月にハカルスにジョイン。日本では稀有なアメフト経験者データサイエンティストとして日々修行中。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/11593 2019/09/10 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング