機械学習・量子機械学習

量子インスパイア正準相関分析(qiCCA)

量子インスパイア正準相関分析(qiCCA)を実装したPythonライブラリです。
正準相関分析では、1対の多次元入力データに対して、互いの相関が高くなるような共通成分を求めます。従来アルゴリズムの問題点として、入力データの次元数に対して、2乗のオーダーで計算時間が増えていくことが挙げられます。(※)
量子インスパイア正準相関分析では、量子インスパイア・アルゴリズム (Tang, 2018) を用いることにより、正準相関分析の計算時間を対数オーダーに抑えました。これにより、従来の手法では計算が困難な次元数を持つデータに対しても、正準相関分析を適用することができるようになりました。
(※)サンプル数が次元数に対して大きい時。

■使用イメージ
量子インスパイア正準相関分析は従来の正準相関分析を高速で近似する手法です。
量子インスパイア正準相関分析を1対の入力データX、Yに適用する際には、2種類のパラメータk、pが必要になります。kは抽出する共通空間の次元数(=成分数)を指定するものです。pは近似の精度をコントロールするパラメータです。量子インスパイア正準相関分析は入力データX、Yの各々からp個の次元を選択し、近似的に正準相関分析を行います。pを大きな値に指定すると、近似精度が向上しますが、計算時間が増加します。
量子インスパイア正準相関分析の結果として、使用した入力次元のインデックス (X、Yごとに1セット)、共通空間への投射のための変換行列 (各X、Yに対して1つずつ)、共通空間上での各成分の相関値が得られます。
具体的なコードの使用イメージとしては、以下のようになります。

fitResult = qiML.qiCCA(k_x=100, k_y=100, k=500, p=600, normalizeData=True).fit(X, Y)
  • k_x、k_y:内部で行うX、Yの特異値分解のコンポーネント数
  • k:共通空間次元数
  • p:近似精度をコントロールするパラメータ
  • normalizeData:入力データを正規化する/しない
  • X、Y:分析対象の入力データ(サンプル数 × 次元数 の行列)
  • fitResult:分析結果

より詳しくは、公開元サイトよりqiML.pyおよびdemo.py(またはdemo.ipynb)をご確認ください。

必須ライブラリ等
  • python 3
  • numpy, scipy, matplotlib

■サンプルアプリ
qiCCAを利用したサンプルアプリをここで公開しています。

(量子インスパイア・アルゴリズム)
qiCCAで利用している量子インスパイア・アルゴリズム(Tang, 2018)は、内積や特異値分解を高速で近似するアルゴリズムです。具体的には、入力データを効率的なサンプリングにより部分的なデータとして構成し、この部分データに対し、内積計算や特異値分解を適用します。このサンプリングを高速に行うために、入力データは2分木を用いて格納されます。2分木構造によりデータの各要素へのアクセスが少ないステップで実現できるので、結果として、サンプリングに要する時間を対数オーダーに抑えることができます。