カーネルトリック 【kernel trick】
概要
カーネルトリック(kernel trick)とは、データ群がそのままでは線形に分離できない場合に、より高い次元の空間上の点に変換し、その空間内での内積を評価して線形分離を行う手法。変換先の空間上での内積を元のデータから直接求める特殊な関数を用いて計算量を大きく削減する。サポートベクターマシン(SVM)などの機械学習アルゴリズムでは、与えられたデータを2つに分類するため、両者を隔てる超平面を求める。特徴量が2つの2次元のデータなら平面上の直線で、3次元のデータなら空間上の平面で両群を分離することを試みる。
ところが、データの分布の仕方によっては、どのように線や面を引いてもきれいに2つに分離できない場合がある。このとき、各データに一定の演算を行って高い次元のデータ群に変換し、変換後の空間で線形に分離できる場合がある。
例えば、2次元のデータ群が平面上で同心円のリング状に分布していて直線による分離が不可能な場合、これを3次元空間上で円の中心からの距離に比例して奥行きが決まる円錐状の立体(の表面上の点)に変換すれば、円錐を途中で切断する平面によって線形に分離することが可能となる。
高次元への変換と変換後の各点間の距離の算出は計算量が膨大になるが、実際に必要なのは各点間の距離を評価する尺度であるため、変換後の空間におけるベクトル間の内積を元のデータから直に算出できる「カーネル関数」が用いられる。カーネル関数で直に距離を評価してしまい、実際の高次元空間での座標の算出などを省略するテクニックをカーネルトリックと呼ぶ。
(2025.9.25更新)