特異値分解(SVD)の概要
データの開先手法の1つとして、特異値分解(SVD:Singular Value Decomposition)という手法があります。SVDでは、不要なデータを取り除くことができるため、画像やテキストデータの圧縮や解析に使われます[1][2]。以降では数式を用いてSVDについて概要を説明します。
特異値とは
そもそも特異値とは、ある行列とその行列の随伴行列(ある行列の共役かつ転置した行列)の積の固有値の非負な平方根のことです。
#直感的にわかる説明ができずすいません。そのレベルまでは理解できてないです。。
特異値分解(SVD)の数式表現
SVDは行列とベクトルを使った2種類の表し方があります。まず最初に行列を使って表現してみます。例として、AというI×J行列のSVDを行うと、
と分解できます。ここで、
- : I行K列のユニタリ行列
- : K行K列の対角行列(対角成分は特異値で、を満たす)
- : I行K列のユニタリ行列の随伴行列
とします。このとき、Kとは、行列のランクを指します(K I, J)。
次にベクトルを使って表現すると、
とできます。ここで、
- : 左特異ベクトル(上記のk行成分
- : 特異値
- : 右特異ベクトル(上記のk列成分
とします。
上記のように、SVDを使うことで対象となる行列を、行列のランクKまでサイズを縮小、つまりデータサイズを圧縮してデータを表現できます。
SVDによる擬似近似
特異値の値に閾値を設けることで、SVDでは擬似的にランクを落とすことが可能です。この操作により、サイズをK→K'(K K')に落とすことができます(計算式は[3]の1.4節を参照)。
参考文献
[1]潜在的意味インデキシング(LSI)徹底入門 - あらびき日記
[2]Topic model
[3]Greenacre1984.pdf