機械学習分野で登場する、基底関数(basis function)について、整理し、Pythonを用いて可視化していきます。
基底関数はカーネル法と関連があることや、線形基底関数モデルなどの回帰モデルもあるなど登場頻度は低いわけではなく、時々登場することがあるので、基底関数について理解し、それぞれの基底関数がどのような形状をしているか理解をしておくと良いでしょう。
本記事で登場する基底関数
- 多項式基底関数(polynomial basis function)
多項式基底関数
多項式基底関数は次のように定義される基底関数です。よく、中学数学や高校数学で登場するような、$x$の累乗の形をしています。
多項式基底関数の定義
$j \gt 1$の整数とした時、
\begin{equation} \phi_j(x) = x^j \end{equation}
基底の次数$j$を増やすことで、いくらでも基底を増やすことができます。この基底はこのような形状になっています。
次元に応じて、広がり方が変わっていますね。また次元$j$が偶数の時と奇数の時で、y軸に対して線対象であったり、原点に対して点対象であったり、形状が変わることが特徴です。
上のグラフを 描写したPythonコードは次のようになっています。
import numpy as np
import matplotlib.pyplot as plt
def basis_polynomial(x, m):
return pow(x, m)
xs = np.linspace(-1, 1, 100)
fig, ax = plt.subplots(figsize=(8, 8), dpi=50)
ax.set_xlim([-1.25,1.25])
ax.set_ylim([-1.25,1.25])
for i in range(1, 20):
y = basis_polynomial(xs, i)
ax.plot(xs, y, label="dim: {}".format(i))
ax.legend()