サポートベクトルマシン(Support Vector Machine)とは?
サポートベクトルマシンとは、分類の基準を決める際に基準に近いデータのみを利用するような分類器です。
この分類器では、モデルの複雑さを最小化できます。言い換えれば、バリアンスを最小化できるということです。また、外れ値にも強いロバストな分類器であるともいえます。
サポートベクトルマシンでは、マージン(Margin) という概念が重要です。下図においてマージンは、超平面(基準)とサポートベクトルとの最大幅を指します。マージンを最大にするような超平面(基準)は、2つのクラスを最適に分けると考えられるでしょう。
サポートベクトルマシンの分類(Mathworks documentation より引用
link)
マージン内に違反(クラス1側にクラス2の点が存在するなど)を許容しないマージンを ハードマージン、許容するマージンをソフトマージンといいます。一般的には、線形分離不可能な(平面で完全に分けられない)データに対応するために、ソフトマージンを使用します。
サポートベクトルマシン(Support Vector Machine)の定式化
分類したいデータセット D を、M個のデータ xi∈Rn とラベル yi∈{−1,1} から成ることとします。このとき、 データの線形和とバイアス b によって定める 超平面 f(x) によって分類しましょう。
D={xi,yi}i=1Mf(x)=wTx+b
このとき、ソフトマージン最大化は以下の最適化問題に帰着します。
w,b,ξmin 21∥w∥2+Ci=1∑Mξisubject to{yi(wTx+b)≥1−ξi∀i:ξi≥0
ここで、式を簡素にするためにスラック変数 ξiを導入しました。定数 C は、マージン内の違反をどれだけ許容するかを決めます。つまり、C=0 の場合がハードマージンとなります。
この問題は「制約付き最適化問題」なので、ラグランジュの未定乗数法とKKT条件を用いて以下の双対問題に書き換えることができます。
α1,…,αMmaxi=1∑Mαi−21i=1∑Mj=1∑Mαiαjyiyj⟨xi,xj⟩subject to{∑i=1Mαiyi=0∀i:0≤αi≤C
ここで、⟨xi,xj⟩ は2つのベクトルの内積を示しています。書き換えによって、最適化すべき変数はラグランジュ変数 αi のみとなりました。後はこの最適化問題を凸二次計画法で解くことになります。このとき αi=0 となったサンプルは、重みも0になるため使われません。そのため、αi>0 となったサンプルだけがサポートベクトルとして使われるわけです。
参考:統計数理研究所 公開講座 4.サポートベクターマシン
カーネルトリック
データセットが線形分離不可能な場合、非線形な超平面で分離したいと考えるでしょう。このとき、超平面 f(x) は非線形関数 ϕ(x) を用いて以下のように表すことができます。
f(x)=wTϕ(x)+b
このとき、最適化問題の双対問題は同じように定式化できます。
α1,…,αMmaxi=1∑Mαi−21i=1∑Mj=1∑Mαiαjyiyj⟨ϕ(xi),ϕ(xj)⟩subject to{∑i=1Mαiyi=0∀i:0≤αi≤C
ここで、⟨ϕ(xi),ϕ(xj)⟩=k(xi,xj) のようにカーネル関数 k(⋅ ,⋅)で置き換えてしまうことで、ϕ(x) を明示的に計算する必要が無くなります。この置き換えをカーネルトリックといいます。
カーネル関数には、多項式カーネル・ガウスカーネル・シグモイドカーネルなどがよく用いられます。カーネル関数は Mercer の定理を満たしていれば、高次元の内積空間を計量できることが示されています。
参考:カーネルトリック
サポートテンソルマシン(Support Tensor Machine)とは?
サポートテンソルマシンとは、ベクトルしか扱えなかったサポートベクトルマシンをテンソルを扱えるように拡張した分類器です。
テンソルは身近な構造的データに度々現れます。例えば、縦・横・奥行きのMRI画像は3次元のテンソル = 3-order Tensor となります。カラー画像も、RGBと縦・横の軸があり、3× 縦 × 横 の3次元のテンソル = 3-order Tensor となります。
テンソルとベクトルの演算方法のひとつ Tensor k-mode product を導入します。
Tensor k-mode product
kモード(k番目の軸)に対してベクトルの内積を取るような演算です。テンソルの縮約とも呼ばれます。
例として、3次元のテンソル X∈RN1×N2×N3 に ベクトル(2次元のテンソル)a∈RP×Nk を掛けることを考えます。このとき、Tensor k-mode product X′=X×ka は要素ごとに見ると以下のようになります。
k=1:Xp,n2,n3′=n=1∑N1Xn,n2,n3apn (X′∈RP×N2×N3)k=2:Xn1,p,n3′=n=1∑N2Xn1,n,n3apn (X′∈RN1×P×N3)k=3:Xn1,n2,p′=n=1∑N3Xn1,n2,napn (X′∈RN1×N2×P)
k番目の要素を積和に置き換えるような演算です。演算後のテンソルが変形しているのに気をつけてください。
サポートテンソルマシン(Support Tensor Machine)の定式化
3次元のテンソル X∈RN1×N2×N3 と ラベル yi∈{−1,1} から成るデータセット D={Xi,yi}i=1M を、超平面 f(X) で分類しましょう。分類平面は、以下のような式で表します。
f(X)=X×1w(1)×2w(2)×3w(3)+bwhere w(1)∈R1×N1, w(2)∈R1×N2, w(3)∈R1×N3
ここで、y^=f(X) は Tensor k-mode product によって y^∈R1×1×1 となります。つまり、要素は1つになるわけです。
さて、この重みを最適化するためにはどうしたらよいでしょうか。ここでは、交互射影法を用いて1つずつ重み w(k) を最適化します。各重み w(k) に対する最適化問題は以下となります。
w(k),b,ξmin 21β∥w(k)∥2+Ci=1∑Mξisubject to{yi((w(k))Tx^i+b)≥1−ξi∀i:ξi≥0
ここで、β=∏1≤l≤3l=k∥w(l)∥ かつ x^i=Xi∏1≤l≤3l=k×l w(l) としました。これは、通常のサポートベクトルマシンの主問題と同じ形式であるため、同様に双対問題に変形できます。
α1,…,αMmaxi=1∑Mαi−21βi=1∑Mj=1∑Mαiαjyiyj⟨x^i,x^j⟩subject to{∑i=1Mαiyi=0∀i:0≤αi≤C
初期化した重みを順次更新して、損失が収束するまで繰り返すことで全ての重みを最適化できます。
※今回は3次元のテンソルについて書きましたが、このまま容易にN次元のテンソルに拡張できます。
サポートテンソルマシン(Support Tensor Machine)の特徴
- 利点:最適化するパラメータが少ないため、過剰適合しにくい。
- 欠点:テンソルの縮約によりランク1の表現となるため、表現力が低い。
Reference
- Support Vector Machines - scikit-learn https://scikit-learn.org/stable/modules/svm.html
- バイナリ分類のサポート ベクター マシン - MathWorks link
- 統計数理研究所 公開講座 4.サポートベクターマシン pdf
- Dacheng Tao, Xuelong Li, Weiming Hu, Maybank, S., Xindong Wu, 2005. Supervised tensor learning, Presented at the Fifth IEEE International Conference on Data Mining (ICDM’05), pp. 8 pp.-. https://doi.org/10.1109/ICDM.2005.139
- Chen, C., Batselier, K., Ko, C.-Y., Wong, N., 2018. A Support Tensor Train Machine. arXiv:1804.06114 https://arxiv.org/abs/1804.06114