02.1.2 高校生向け
リッジ・ラッソ(高校生向け)
こんな場面を想像してみよう #
期末テストの点数を予想する式を作るとします。材料は「勉強時間」「睡眠時間」「前回の点数」のほかに、「靴のサイズ」「出席番号」「好きな色の番号」など全部で 10 個。線形回帰 で 10 個それぞれに係数をつけて、ズレの 2 乗の合計がいちばん小さくなるように決めます。
ここで問題が起きます。データが 30 人分しかないと、靴のサイズのような関係ないはずの材料にも係数がついてしまうのです。手元の 30 人にはよく合うのに、来年の生徒には外れる。これが過学習です。

上の図は、本当に効いているのは f0・f1・f2 の 3 つだけ、というデータで係数を比べたものです。青(ふつうの線形回帰)では f3〜f9 にも小さな棒が立っています。橙(リッジ)ではそれが少し縮み、緑(ラッソ)では多くが消えて 0 になっています。
罰点はどう効く? #
ふつうの線形回帰は「ズレの 2 乗の合計」だけを小さくし、係数はいくら大きくなっても構いません。そこに罰点を足します。小さくする量を「ズレの 2 乗の合計 + \(\alpha \times\) 罰点」に変え、\(\alpha\) が罰点の強さを決める数(0 なら線形回帰と同じ)です。リッジの罰点は係数を 2 乗して全部足したもの、ラッソの罰点は係数の絶対値を全部足したものです。すると係数が縮みます。罰点を減らすには係数を小さくするしかないので、ズレが少し増えても構わないから係数を小さくする、というバランスが取られ、棒グラフでは青→橙→緑と棒が低くなっていきます。\(\alpha\) を強めると、下の図のように横軸で \(\alpha\) を右に動かすほど係数の線は 0 へ向かいます。

左右の図のちがいが、リッジとラッソのちがいそのものです。リッジ(左)は 10 本の線がどれもなだらかに下がり、どこまで行っても 0 にはなりません。ラッソ(右)は小さい係数から順に、ある \(\alpha\) でぴたりと 0 になり、それ以降は横軸に張り付きます。つまりラッソは「この材料は使わない」という選択を自動でやってくれます。
ちがいの理由は罰点の数え方にあります。係数 \((3, 0, 0)\) と \((1, 1, 1)\) を比べると、絶対値の合計はどちらも 3 ですが、2 乗の合計は 9 と 3。リッジは大きな係数 1 つを強く嫌って全体に均す方向に、ラッソは均す得がないので小さい係数を 0 に切り捨てる方向に働きます。
動かして見てみよう #
下の図で「再生」を押すと、説明した手順が 1 つずつ進みます。手順ごとの説明は図の下に出ます。
気をつけたいこと #
最初の課題は単位をそろえないと不公平になることで、「時間」と「分」では同じ関係でも係数が 60 倍ちがいます。罰点は係数の大きさで決まるので、先に各材料を平均 0・標準偏差 1 にそろえる(標準化する)のが前提です。二つ目は**\(\alpha\) を強くしすぎると、今度は当てはまらないこと。係数が全部 0 に近づけば、予測は「平均を答えるだけ」になります。弱すぎれば過学習、強すぎれば当てはまり不足で、ちょうどよい強さは学習に使っていないデータで試して決めます。三つ目はラッソが 0 にした材料が「無関係」とは限らない**ことで、似た材料が 2 つあると、ラッソは片方だけ残してもう片方を 0 にしがちです。「もう片方で間に合った」だけのこともあります。
やってみよう #
まず、係数の候補 \((4, 0)\) と \((2, 2)\) で、絶対値の合計と 2 乗の合計をそれぞれ計算し、どちらの罰点が「分散させた組」を好むか確かめてみましょう。次に、テストの点数を予想する材料を 10 個考え、「本当に効きそうなもの」と「たまたま相関が出そうなもの」に分けてみてください。後者が過学習の原因になります。最後に、データが 3 人分しかないのに材料が 10 個あったら、ふつうの線形回帰はどうなるか想像してみましょう(ヒント:3 点を通る式は無数にある)。\(\alpha \times\) 罰点があると 10 個の係数に何が起きるだろう、と考えるのが仕上げの問いです。
つぎに読む #
目的関数の数式、正則化パスのコード、RidgeCV / LassoCV の使い方は 標準版のリッジ回帰とラッソ回帰 で扱っています。罰点なしの土台は 線形回帰(高校生向け)、正則化が特に効く \(x^2, x^3\) の当てはめは 多項式回帰(高校生向け) に進んでください。「使う材料を選ぶ」という見方は 特徴選択の基本(高校生向け) にもつながります。