特異値分解について解説
今回は機械学習で使用される特異値分解について解説します。
詳細な理論ではなく、理解するための概要になります。
特異値分解とは?
特異値分解とは
- 1つの行列を3つの行列の積に分解する手法
です。
情報の圧縮や次元の削減に使用されます。
どのように分解するのか?
データの圧縮や削減においては、できるだけ重要な要素を残す必要があります。
そこで、特異値分解では、データの重要度を「特異値」として、この特異値の大きい要素を抽出する計算を行います。
式では
-
-
-
-
ここで、
これを利用して、
具体的な使い方
具体的に特異値分解の使い方を見ていきましょう。
式は
使い方1 情報の圧縮
まず
ここで、上に述べた通り
# 重要度 a→b→c→d
# (4×4)
Σ = (
a,0,0,0,
0,b,0,0,
0,0,c,0,
0,0,0,d
)
# ↓抜き出し
# (2×2)
Σ' = (
a,0,
0,b
)
そして、これに従って
# (4×4)
U,V = (
x1,x2,x3,x4,
y1,y2,y3,y4,
z1,z2,z3,z4,
w1,w2,w3,w4
)
# ↓抜き出し
# (4×2)
U' = (
x1,x2,
y1,y2,
z1,z2,
w1,w2
)
V' = (
x1,x2,x3,x4,
y1,y2,y3,y4,
)
これを用いて計算すると、
となります。最初の
重要な情報が目立つように、要素を圧縮したのです。これが情報の圧縮です。
※行や列が減っているので計算メモリの節約にもなります。
使い方2 次元削減
使い方1と同じ考えで、左上を抜き出して、
そして、
式としては
のように、片方の行列のみを用いて直接的に次元を削減します。
当然、一方の行列(基底)だけを使用すると、もう片方に対する情報は失われます。
しかし、次元削減の目的自体がデータの主要な特徴を抽出しつつ、不要な情報を削減することにあるため、この「情報の損失」は許容されることが多いのです。
これが次元削減です。
失う情報の選択
失う情報の選択について、Uには行の要素が、Vには列の要素が格納されています。
例えば、次のような文章-単語行列を考えます。
文1 = 'i love coffee'
文2 = 'i love programing'
I love programming coffee
文1 1 1 1 0
文2 1 1 0 1
この時、Uは文章の特徴を、Vは単語の特徴を捉えています。例えば、文章のクラスタリングを行いたい場合はUを、単語のクラスタリングを行いたい場合はVを使用するといった選択をすることが考えられます。
また、タスクによっては両方の基底を組み合わせた複雑な手法を使用することもあるでしょう。
まとめ
特異値分解とは
- 1つの行列を3つの行列の積に分解する手法
でした。
主な使い方は
・情報の圧縮
・次元の削減
です。
大まかに、行列から重要な情報を抽出するために、行列の固有値と固有ベクトルの性質を利用して計算を行う手法でした。
今回はここまでになります。最後まで読んでいただきありがとうございました!
Discussion