🐬

特異値分解について解説

2023/09/24に公開

今回は機械学習で使用される特異値分解について解説します。
詳細な理論ではなく、理解するための概要になります。

特異値分解とは?

特異値分解とは

  • 1つの行列を3つの行列の積に分解する手法

です。
情報の圧縮次元の削減に使用されます。

どのように分解するのか?

データの圧縮や削減においては、できるだけ重要な要素を残す必要があります。
そこで、特異値分解では、データの重要度を「特異値」として、この特異値の大きい要素を抽出する計算を行います。

式では
A=UΣV^Tと表されます。

-A 次元削減したい行列
-U 主にAの行要素を持つ行列
-Σ 対角行列。「特異値」が大きい順に対角要素が並べられている
-V^T 主にAの列要素を持つ行列の転置

ここで、Σの持つ特異値は、左上から順に重要度が高いものから並べられています。(固有値と固有ベクトルの性質より。)
これを利用して、Aを圧縮、削減します。

具体的な使い方

具体的に特異値分解の使い方を見ていきましょう。
式はA=UΣV^Tです。

使い方1 情報の圧縮

まずAを(4×4)、Σを(4×4)の行列だと仮定します。この時、行列の性質からUVは(4×4),(4×4)の行列になります。
ここで、上に述べた通りΣは左上から順に重要な情報を持っています。従って、Σ'=(2×2)に削減を考えた時、元の(4×4)から左上の(2×2)ブロックを抜き出すことが自然に考えられます。

# 重要度 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
)

そして、これに従ってUVは行列計算のために、それぞれ手前の行と列から2列(行)抜き出し、
U'=(4×2)とV'=(2×4)の形状になります。

# (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,
)

これを用いて計算すると、
A'(4×4) = U'(4×2)Σ'(2×2)V^T(2×4)
となります。最初のAと次元は変化していませんが、あまり重要でない情報の要素が削ぎ落とされ、値を持つ各要素の重要性が上がっています。

重要な情報が目立つように、要素を圧縮したのです。これが情報の圧縮です。
※行や列が減っているので計算メモリの節約にもなります。

使い方2 次元削減

使い方1と同じ考えで、左上を抜き出して、Σの次元を(4×4)(2×2)に変更します。
そして、U'=(4×2)とV'=(2×4)のどちらかのみを使用して計算を行います。

式としては
A'(4×2) = U'(4×2)Σ'(2×2)
A'(2×4) = Σ'(2×2)V^T(2×4)
のように、片方の行列のみを用いて直接的に次元を削減します。

当然、一方の行列(基底)だけを使用すると、もう片方に対する情報は失われます。
しかし、次元削減の目的自体がデータの主要な特徴を抽出しつつ、不要な情報を削減することにあるため、この「情報の損失」は許容されることが多いのです。

これが次元削減です。

失う情報の選択

失う情報の選択について、Uには行の要素が、Vには列の要素が格納されています。
例えば、次のような文章-単語行列を考えます。

1 = 'i love coffee'2 = 'i love programing'

           I   love   programming  coffee
文1        1    1        1          02        1    1        0          1

この時、Uは文章の特徴を、Vは単語の特徴を捉えています。例えば、文章のクラスタリングを行いたい場合はUを、単語のクラスタリングを行いたい場合はVを使用するといった選択をすることが考えられます。

また、タスクによっては両方の基底を組み合わせた複雑な手法を使用することもあるでしょう。

まとめ

特異値分解とは

  • 1つの行列を3つの行列の積に分解する手法

でした。
主な使い方は
・情報の圧縮
・次元の削減
です。

大まかに、行列から重要な情報を抽出するために、行列の固有値と固有ベクトルの性質を利用して計算を行う手法でした。

今回はここまでになります。最後まで読んでいただきありがとうございました!

Discussion