こちらの記事では線形回帰分析の学びを踏まえ、非線形な分析手法である「平滑化スプライン」について考えていきます。
「平滑化スプラインって何をしているの?」
「平滑化スプラインはモデルにどんな制約を加えているの?」
といった疑問に答えていきたいと思います!
基底関数
平滑化スプラインは基底関数として用いられるものです。
したがってまずは基底関数について考えていきましょう。
基底関数は簡単に言うと与えられた説明変数を変換したものです。
機械学習とは与えられた「説明変数と目的変数のセット」を学習することで「説明変数と目的変数の関係性=ルール」を見出し「未知なるデータに対しても正しい予測値を導く」ものでした。

そのうえで基底関数が「説明変数を変換している」とはどういうことかを考えていきましょう。
まず以下のマンションに関するデータを見てみます。
説明変数がそのマンションの駅徒歩所要時間(以下「駅徒歩」)、目的変数がそのマンションの価格です。
説明変数 | 駅徒歩1分 | 駅徒歩2分 | 駅徒歩20分 | 駅徒歩21分 |
---|---|---|---|---|
目的変数 | 8,000万円 | 7,700万円 | 5,000万円 | 4,970万円 |
上記の4つのデータは駅徒歩が1分、2分、20分、21分となっています。
この1分、2分、20分、21分という数字をそのまま分析に用いるのが「説明変数を変換していない」状態です。
これに対して「説明変数を変換する」というのは、駅徒歩1分、2分、20分、21分という数字をそのまま使うのではなく、
例えばそれらを2乗して1分、4分、400分、441分と変換して使うことを言います。
元々の説明変数(駅徒歩1分、2分、20分、21分)は根っこの方に隠れて、
変換された数字(駅徒歩の2乗)のみが地上に現れているイメージで考えると、
基底関数というネーミングもイメージしやすいかもしれません。
説明変数の変換方法はいろいろとあります。
代表的な手法がいまみてきたような「2乗(あるいは3乗、4乗…)」してあげるもので、これを多項式回帰と呼びます。
また「カテゴリ化」してあげる手法もあります。
上記の駅徒歩のデータの例で言うと「駅徒歩1分、2分、20分、21分」というデータを、駅徒歩10分以上なら1、10分未満なら0と変換して「0、0、1、1」と置き換える方法です(これは階段関数と呼びます)。
スプライン
基底関数は「説明変数を変換」して分析を行うものでしたが、
先ほど見てきた手法は説明変数を「一律に変換」していました。
2乗するなら駅徒歩1分でも20分でも一律に2乗していたし、
駅徒歩10分という境界を設けるのであればすべてのデータについてその境界を用いて変換していました。
一方でそのように一律な変換ではなく区分に応じて異なる変換を行いたいという場面もあります。
例えば駅徒歩が10分以上のときだけ2乗してあげたいとか、
駅徒歩20分以上のときは2乗ではなく3乗してあげたいといったような場面です。
もちろんこのような分析も可能です。
説明変数の値(区間)によって異なる関係性のルールを用意してあげればOKです。
先の例では駅徒歩10分未満のときはそのままの数字を用い、
駅徒歩10分以上のときは「2乗」した数字を用いてあげます。
つまり駅徒歩10分を境界として、用いる関係性のルールを変えるということですね!
このように区分に応じて異なる関係性のルールを用いると問題も生じます。
それは区分の境界がスムーズにつながらないという点です。
先の例では駅徒歩10分以上か未満かで全く異なる関係性のルールを用いることになるので、駅徒歩9分のときと10分のときとで世界がガラッと変わってしまうのです。
この世界がガラッと変わってしまうことを防ぐのがスプラインという考え方です。
スプラインは世界が変わる境界において、2つの世界が連続するように制約を加えるものです。
機械学習全般について言えることですが「制約」は安定性をもたらし「分散」を抑制してくれます。
一方で「制約」は「バイアス」を増加させます。
区分に応じて異なる関係性のルールを用いると区分の境界付近で不安定さが増して分散も増えます。
そこで多少のバイアス増加という犠牲を払っても、この境界付近の分散を抑制するべく制約を加えてあげる…。
これにより全体としてはより精度の高い関係性のルールを導くことが可能になります。
平滑化スプライン
平滑化スプラインは上記のスプラインの考え方を用いた分析手法です。
上記では説明変数の区分境界における連続性を確保するためにスプラインを用いていました。
まず区分に応じて関係性のルールを見出し、その異なる関係性のルールが区分境界において連続するような制約を加えていました。
それに対して平滑化スプラインは、説明変数をどこかで区分けするというのではなく、
説明変数を完全に細かく区分けした状態から考え始めます。
つまり先の例で言うと、駅徒歩1分の世界、2分の世界、20分の世界…と、可能な限り細切れされた世界(関係性のルール)を前提としています。
世界(関係性のルール)が細切れされると全体としてはかなり複雑な状態になってしまいます。
そこで平滑化スプラインはその複雑さに応じた罰則を考慮してあげます。
具体的には導関数という関係性のルールの「複雑さ、粗さ」を測る指標を用います。
この導関数という概念を用いて複雑さへの罰則を考慮し、全体のなめらかさを確保します。
これはDay16で学んだ正則化(リッジ回帰、Lasso回帰)と似ています。

正則化では説明変数の種類の多さへの罰則を与えていました。
それは説明変数の種類の多さに伴う「不安定さ(分散)」への罰則でした。
平滑化スプラインも同様に「不安定さ(分散)」への罰則を与えるものです。
平滑化スプラインは、細切れな世界(関係性のルール)を前提とすることで生じる不安定さ(分散)に罰則を与えます。
こういったところからも、機械学習においてはいかに分散とバイアスのトレードオフ問題が重要かということを改めて感じさせてもらえますね。

まとめ
最後に今回の記事のポイントを整理します。
- 説明変数を変換したうえで見出す関係性のルールを基底関数という
- 基底関数には多項式回帰(2乗、3乗…)、階段関数(カテゴリ化)などがある
- 一律な変換ではなく区分に応じて異なる変換(および関係性のルールの導出)を行うこともできる
- スプラインは区分の境界で関係性のルールが連続するように制約を加えるもの
- 平滑化スプラインは全体の関係性のルールの「複雑さ、粗さ」に罰則を与えるもの
- スプラインは不安定さ(分散)に罰則を与えるという意味で「正則化」の発想と似ている
今回は以上になります。
最後まで読んでいただきありがとうございました!

統計学の基礎を効率的に学べるベーシック講座です。統計学の入り口となる「確率分布・推定・検定」について豊富な図を用いて説明していきます。
2021年3月リリース後すでに20,000人以上の方に受講いただき大人気ベストセラーコースとなっています!ぜひこの機会に統計学や確率思考という一生モノのスキルを一緒に身につけましょう!
※上記リンクからですと時期によってはクーポンが自動適用されます。
※Udemyは世界最大級のオンライン学習プラットフォームです。以下記事にてUdemyをご紹介しておりますのでよろしければこちらもご覧ください。
