AlteryxのLinear Regressionツールで正則化項の設定をする

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、小澤です。

Alteryxで線形回帰を行うLinear Regressionツールは説明変数と目的変数を指定するだけでも利用できますが、 その動作に関しての設定を行うことも可能です。

今回は、その中でも正則化に関する設定の方法を見ていきましょう。

過学習とそれに対する対応

最初に、簡単に前置きをしておきましょう。 なお、簡単に触れる程度としているため、詳細や厳密な内容については割愛しています。

線形回帰をはじめとする、Predictiveカテゴリのツールはデータから全体的な傾向を見つけ出すモデリングを行うものが多く含まれています。 これらのツールは、予測すべき次に起こる事象を目的変数、 それが発生する原因となりそうな要素として説明変数として渡すことで、 説明変数をからどのような計算をすれば目的変数の値になるかを自動的に見つけ出してくれます。

この使い道としては

  • 目的変数の値がどうなるかまだわかっていない未知の状態でそれを予測する
  • ある結果にたどり着く要因として何が影響しているのかを把握する

といったものが挙げられます。 これらはいずれも、今後も同じ傾向が続く限り同じモデルを使って似た結果を得られるわけです。

しかし、データとして得られる情報は世の中にあるすべての中のほんの一部でしかありません。 場合によっては得られたデータの中にのみ"偶然"発生している傾向まで過剰に説明してしまおうとするケースもあり得ます。 そのため、得られているデータの傾向を"完璧に"とらえるのではなく、 "ほどほどに"しておくことで今はまだ観測できていない未知のデータに対しても同じ結果が得られるようにしておく必要があります。 このすでに得られているデータのみを完璧に把握してしまう状態のことを「過学習」と呼びます。

それを実現するための仕組みとして、Alteryxで簡単にできるものとしては以下の3つがあります。

  • Stepwiseツールを利用する説明変数を必要最低限に絞る
  • Principal Componentsツールを使って次元削減を行う
  • Linear Regressionツールの設定で正則化を行う

今回、解説するのは3つ目の「Linear Regressionツールの設定で正則化を行う」となっています。

2つ正則化と合わせ技

線形回帰は目的変数の各値に重要度を掛けたものを足し合わせた結果が目的変数の値に近づくように、 重要度の値を自動的に決める仕組みとなっています。

この時、"ほどほどの"の説明にするための仕組みとして正則化には2種類の方法があります。

  • L1(Lasso) : 一部の不要そうな説明変数の重要度を0にすることで使わない状態にする
  • L2(Ridge) : 重要度が極端に大きな値にならないようにすることで過剰な説明として利用されることを防ぐ

これら2つの方法はどちらか一方のみで利用することもできますし、両方同時に利用することも可能です。 同時に利用しつつ、どっちをどの程度効かせるかのバランスも調整する方法のことをElastic Netと呼ばれています。

Alteryxで設定する

では、いよいよAlteryx出の設定方法を見ていきます。 今回はサンプルワークフローの1つである「Help > Sample Workflows > Learn one tool at a time > Predictive > Linear Regression Nested Test」をベースに、 設定を行ってみたいと思います。

まずは正則化の設定方法です。

Linear Regressionツールの設定で「Customize」を選択します。

画面が切り替わるので、Modelタブにある「Use regularized regression」にチェックを入れます。

追加項目が表示されるので、この中で「Enter value of alpha」の値とその下のバーが正則化の設定項目となります。 この値は、その下のバーと連動しており、L1(Lasso)とL2(Redge)の割合を調整する設定になっています。 alphaの値はの表示はL1正則化の比重を決めるものとなっています。 説明にある通り、バーを完全に左側の0まで持っていくと、L2の割合が1, L1の割合が0となるのでL2正則化のみとなります。 右側の1まで持っていくとその逆でL1正則化のみとなります。

サンプル内でFull Modelという名称になっている方のLinear Regressionツールの「I」出力にBrowseツールを接続して結果を確認します。

4つの目的変数を利用しており、Estimateにその変数がどれだけ強く効いているかが出力されています。 この値は以下のように見ることができます。

  • 正の値で数値が大きいほど目的変数が高くなる
  • 負の値で数値が大きいほど目的変数が低くなる
  • ゼロに近いものほどあまり聞いておらず絶対値が大きいほどよく効いている

さて、次にL1正則化のみを利用する状態(alphaを1に設定)で実施してみます。

Estimateの値が変化し、いくつかがゼロになっているのが確認できます。

続いて、L2正則化のみを利用する状態(alphaを0に設定)で実施してみます。

こちらはゼロになっている項目はないもののOPSの値が低くなっているなど、傾向が変化しているのが確認できます。

最後にalphaを0.5に設定してい両方を利用してみましょう。

ゼロになっている項目がGamesのみになりつつ、OPSやSLGの変化の傾向も少なくなっているなど、 両方の状態を半々でとらえたような結果となっています。

おわりに

今回は、AlteryxのLinear Regressionツールで正則化項を設定する方法を紹介しました。 実際に利用する際にはこの後、テストデータに対する推論結果の精度と比較して適切な値を見つけながら利用していく必要がありますが、 おおよそどういった傾向が現れるかの雰囲気をつかんでいただければと思います。