【機械学習】Pythonで基底関数を描写して理解する

Posted: , Category: 機械学習 , 統計学

機械学習分野で登場する、基底関数(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()

【広告】
統計学的にあなたの悩みを解決します。
仕事やプライベートでお悩みの方は、ベテラン占い師 蓮若菜にご相談ください。

機械学習と情報技術