30 特異値分解

特徴抽出用の教師なしアルゴリズムである特異値分解アルゴリズムの使用方法を学習します。

30.1 特異値分解とは

SVDと、それに密接に関連するPCAは、適用範囲の広い確立された特徴抽出方法ですOracle Machine Learning for SQLには、特徴抽出アルゴリズムとして特異値分解(SVD)が、SVDモデルの特別なスコアリング方法として主成分分析(PCA)が実装されています。

SVDおよびPCAは、基礎となるデータ分散を取得する場合に最適な直交線形変換です。この特性は、高次元データのディメンション性を減少させ、有益なデータの視覚化をサポートする場合に非常に役立ちます。

SVDおよびPCAには、ディメンション性の低減以外にも、多くの重要な利用方法があります。これには、マトリックス反転、データ圧縮、不明なデータ値の帰属計算などがあります。

30.1.1 行列操作

特異値分解(SVD)は、矩形行列Xを3つの行列(USおよびV)の積に分解する因数分解方法です。

  • U行列は、「左」正規直交基底のセットから構成されます
  • S行列は、対角行列です
  • V行列は、「右」正規直交基底のセットから構成されます

Sの値は、特異値と呼ばれます。これらは、非負数で、それらの大きさは対応する基底(成分)の重要度を示します。特異値は、基底によって取得されたデータ分散の量を反映します。第1基底(最大の特異値を持つ基底)は、最大のデータ分散の方向に存在します。第2基底は、2番目の最大分散を持つ直交方向を取得します(以降同様に続きます)。

SVDは、基本的に、変換された軸をデータの最大分散の方向に揃える座標回転を実行します。これは、観測されるデータに高いS/N比が存在し、大きい分散が目的のデータ内容に対応し、小さい分散がノイズに対応するという仮定の下では有益な手順です。

SVDでは、基礎となるデータがガウス分布に従っており、平均と共分散の観点から適切に記述できると仮定します。

30.1.2 低ランクの分解

特異値分解(SVD)では、データの最も重要な側面を取得するために、低次の基底(最大の特異値を持つ基底)が維持され、高次の基底(最小の特異値を持つ基底)が無視されます。

SVDでは、ディメンション性を減少させるため、低次の基底が維持され高次の基底が無視されます。低次の基底は、その分散に最も影響を与えているデータ特性を保持し、データの最も重要な側面を取得する可能性が高いという考え方が、この方針の背後にある原理です。

データ・セットX (nxm)が指定されると(nは行数でmは属性数)、低ランクSVDはk成分(k <= min(m, n))のみを使用します。SVDの典型的な実装では、k の値は、個々の成分に関連付けられたランク付きの特異値の外観検査を必要とします。OML4SQLでは、SVDによって、説明した分散での大幅な低下に対応するカットオフ・ポイントが自動的に推定されます。

SVDによって、正規直交基底の2つのセット(UV)が生成されます。これらの基底のどちらでも新しい座標系として使用できます。OML4SQLのSVDでは、Vは新しい座標系であり、Uはこの座標系でのXの投影に相当します。アルゴリズムによって、新しいデータの投影が次のように計算されます。

図30-2 新しいデータの投影の計算

図30-2の説明は次にあります
「図30-2 新しいデータの投影の計算」の説明

ここで、X (nxk)は、最初のk個の成分によって定義される、縮約されたデータ空間の投影データで、VkおよびSkは、縮約された成分セットを定義します。

30.1.3 スケーラビリティ

Oracle Machine Learning for SQLにおける特異値分解(SVD)では、数百万もの行と数千もの属性があるデータ・セットを処理できます。Oracle Machine Learning for SQLでは、ディメンション性の低減のために、特徴について、データに基づいて適切な数が自動的に推奨されます。

SVDには、完全な分解を計算する際に、行の数に応じた線形のスケーラビリティと属性の数に応じた3次元のスケーラビリティがあります。低ランクの分解は、通常、行の数および列の数に対して線形です。ランクを低下させた場合、スケーラビリティは、そのランクを行および列の数と比較した結果に依存します。ランクが大幅に低下する場合は線形に、同じスケールにある場合は3次元になります。

30.2 アルゴリズムの構成

特異値分解(SVD)アルゴリズムを構成するために複数のオプションを使用できます。

モデルのサイズおよび性能を制御する設定や、SVD投影と主成分分析(PCA)投影のどちらでスコアリングするかを指定する設定など、選択肢はいくつかあります。

関連項目:

使用可能なモデル設定のリストと解説は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。

注意:

モデル設定と同じ意味でハイパーパラメータという用語も使用されます。

30.2.1 モデル・サイズ

作成データ内の行、およびアルゴリズム固有の設定に基づいてモデル・サイズがどのように決定されるかを学習します。

特異値分解のU行列は作成データの行数と同じ数の行を持ちます。大規模なモデルの作成を回避するため、U行列は、アルゴリズム固有の設定が有効な場合にのみ維持されます。デフォルトでは、U行列は維持されません。

30.2.2 パフォーマンス

特異値分解では、近似計算を使用してパフォーマンスを向上させることができます。

近似処理は、多くの列を含むデータセットに対しては適切である可能性があります。近似処理の低ランク分解では、適切な計算コストで十分な結果を得られます。近似処理の品質は、データの特性に依存します。

30.2.3 PCAスコアリング

主成分分析(PCA)投影を実行するための特異値分解(SVD)の構成について学習します。

SVDモデルは、PCA投影を実行するように構成できます。PCAは、SVDと密接に関連しています。PCAは、説明した対応する分散によってランク付けされる正規直交基底(主成分)のセットを計算します。SVDとPCAの主な違いは、PCA投影は特異値によってスケーリングされないところにあります。新しい座標系に対するPCA投影は、次の式によって与えられます。

ここで、大文字Xの上のチルダ (nxk)は、最初のk個の成分によって定義される、縮約されたデータ空間の投影データで、Vkは、縮約された成分セットを定義します。

30.3 SVD用のデータ準備

Oracle Machine Learning for SQLには、量的データおよび質的データについては、特異値分解(SVD)が実装されています。

構築データがSVDでスコアリングされる場合、自動データ準備は何もしません。構築データが主成分分析(PCA)でスコアリングされる場合、自動データ準備は量的データを平均値でシフトします。

欠損値の処理は、OML4SQLのアルゴリズムによって自動的に行われるため、必要ありません。SVDでは、量的欠損値は平均値に置換され、質的欠損値は最頻値に置換されます。スパース・データ(ネストした列の欠損値)の場合、SVDによって欠損値は0 (ゼロ)に置換されます。