Main Content

rica

再構成 ICA の使用による特徴抽出

説明

Mdl = rica(X,q) は、p 個の変数が含まれている予測子データのテーブルまたは行列 X に再構成独立成分分析 (RICA) を適用した結果が含まれている RICA モデル オブジェクトを返します。qX から抽出する特徴量の個数なので、rica は p 行 q 列の変換の重み行列を学習します。特徴量の表現が劣完備または過完備である場合、q はそれぞれ、予測子変数の個数より少なかったり多かったりする可能性があります。

  • 学習済みの変換の重みにアクセスするには、Mdl.TransformWeights を使用します。

  • 学習済みの変換を使用して X を新しい一連の特徴量に変換するには、MdlXtransform に渡します。

Mdl = rica(X,q,Name,Value) は、1 つ以上の Name,Value 引数のペアによって指定された追加オプションを使用します。たとえば、予測子データを標準化したり、目的関数の再構成項におけるペナルティ係数の値を指定することができます。

すべて折りたたむ

関数 rica を使用して ReconstructionICA オブジェクトを作成します。

イメージ パッチ SampleImagePatches を読み込みます。

data = load('SampleImagePatches');
size(data.X)
ans = 1×2

        5000         363

5,000 個のイメージ パッチがあり、それぞれに 363 個の特徴量が含まれています。

100 個の特徴量をデータから抽出します。

rng default % For reproducibility
q = 100;
Mdl = rica(data.X,q,'IterationLimit',100)
Warning: Solver LBFGS was not able to converge to a solution.
Mdl = 
  ReconstructionICA
            ModelParameters: [1x1 struct]
              NumPredictors: 363
         NumLearnedFeatures: 100
                         Mu: []
                      Sigma: []
                    FitInfo: [1x1 struct]
           TransformWeights: [363x100 double]
    InitialTransformWeights: []
    NonGaussianityIndicator: [100x1 double]


ステップ サイズの制限または勾配サイズの制限に達したのではなく反復制限に達したために停止したので、rica は警告を発します。しかし、関数 transform を呼び出すことにより、返されたオブジェクトに含まれている学習済み特徴量を使用できます。

入力引数

すべて折りたたむ

予測子データ。n 行 p 列の数値行列またはテーブルを指定します。行は各観測値に、列は各予測子変数に対応します。X がテーブルの場合、そのすべての変数が数値ベクトルでなければなりません。

データ型: single | double | table

予測子データから抽出する特徴量の個数。正の整数を指定します。

rica は、p 行 q 列の変換の重み行列を Mdl.TransformWeights に格納します。したがって、非常に大きい値を q に設定した場合、メモリ消費量が増加し、計算時間が長くなる可能性があります。

データ型: single | double

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名、Value は対応する値です。名前と値の引数は他の引数の後ろにする必要がありますが、ペアの順序は関係ありません。

R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name を引用符で囲みます。

例: Mdl = rica(X,q,'IterationLimit',200,'Standardize',true) は、最適化反復を 200 回に制限し、予測子データを標準化して、rica を実行します。

最大反復回数。'IterationLimit' と正の整数で構成されるコンマ区切りのペアとして指定します。

例: 'IterationLimit',1e6

データ型: single | double

アルゴリズムの収束を監視するための詳細レベル。'VerbosityLevel' と次の表の値から構成されるコンマ区切りのペアとして指定します。

説明
0rica は収束情報をコマンド ラインに表示しません。
正の整数rica は収束情報をコマンド ラインに表示します。

収束情報

見出し意味
FUN VALUE目的関数の値。
NORM GRAD目的関数の勾配のノルム。
NORM STEP反復ステップのノルム。前の点と現在の点の間の距離を意味します。
CURVOK は弱 Wolfe 条件が満たされていることを意味します。この条件は、目的関数の十分な減少と曲率条件の組み合わせです。
GAMMAステップの内積に勾配差分を乗算し、勾配差分と勾配差分自体との内積で除算した値。勾配差分は、現在の点における勾配から前の点における勾配を減算した値です。目的関数の曲率に関する診断情報を提供します。
ALPHAステップ方向乗数。直線探索が実行された場合、1 以外になります。
ACCEPTYES は取り得るステップがアルゴリズムで見つかったことを意味します。

例: 'VerbosityLevel',1

データ型: single | double

変換の重み行列に対する正則化係数の値。'Lambda' と正の数値スカラーから構成されるコンマ区切りのペアとして指定します。0 を指定した場合、目的関数に正則化項は含まれません。

例: 'Lambda',0.1

データ型: single | double

予測子データを標準化するためのフラグ。'Standardize'true (1) または false (0) から構成されるコンマ区切りのペアとして指定します。

Standardizetrue の場合、次のようになります。

  • rica は、予測子データ (X) の各列のセンタリングとスケーリングを、それぞれ列の平均値と標準偏差を使用して行います。

  • rica は、標準化された予測子行列を使用して新しい特徴量を抽出し、予測子変数の平均および標準偏差を MdlMu および Sigma プロパティに格納します。

例: 'Standardize',true

データ型: logical

コントラスト関数。'logcosh''exp' または 'sqrt' を指定します。コントラスト関数は、絶対値関数に似ている滑らかな関数です。rica の目的関数には、次の項が含まれます。

j=1q1ni=1ng(wjTx˜i),

ここで、g はコントラスト関数を表します。wj は最適化の対象となる変数、x˜i はデータです。

次の 3 つのコントラスト関数を使用できます。

  • 'logcosh'g=12log(cosh(2x))

  • 'exp'g=exp(x22)

  • 'sqrt'g=x2+108

例: 'ContrastFcn','exp'

最適化を初期化する変換の重み。'InitialTransformWeights' と p 行 q 列の数値行列から構成されるコンマ区切りのペアとして指定します。p は X の列数または変数の個数でなければならず、qq の値です。

ヒント

以前に返された変換の重み行列は、再度 rica を呼び出すときに初期値として渡すことにより、最適化を継続できます。出力されるモデル オブジェクト Mdl では、学習済みの変換の重み行列が TransformWeights プロパティに格納されます。

例: 'InitialTransformWeights',Mdl.TransformWeights

データ型: single | double

ソースの非ガウス性。±1 による長さ q のベクトルを指定します。

  • NonGaussianityIndicator(k) = 1 は、ricak 番目のソースを鋭いピークが 0 にある優ガウス性としてモデル化したことを意味します。

  • NonGaussianityIndicator(k) = -1 は、ricak 番目のソースを劣ガウス性としてモデル化したことを意味します。

データ型: single | double

勾配ノルムに対する収束の相対許容誤差。'GradientTolerance' と正の数値スカラーから構成されるコンマ区切りのペアとして指定します。この勾配は目的関数の勾配です。

例: 'GradientTolerance',1e-4

データ型: single | double

ステップ サイズに対する収束の絶対許容誤差。'StepTolerance' と正の数値スカラーから構成されるコンマ区切りのペアとして指定します。

例: 'StepTolerance',1e-4

データ型: single | double

出力引数

すべて折りたたむ

学習済みの再構成 ICA モデル。ReconstructionICA モデル オブジェクトとして返されます。

Mdl のプロパティにアクセスするには、ドット表記を使用します。以下に例を示します。

  • 学習済みの変換の重みにアクセスするには、Mdl.TransformWeights を使用します。

  • 当てはめ情報の構造体にアクセスするには、Mdl.FitInfo を使用します。

アルゴリズム

関数 rica は、入力特徴量から出力特徴量への線形変換を作成します。この変換は、出力特徴量の統計的な独立性と出力特徴量を使用した入力特徴量の再構成能力とを大体釣り合わせるような非線形目的関数の最適化をベースにしています。

詳細は、再構成 ICA アルゴリズムを参照してください。

バージョン履歴

R2017a で導入