近隣まま埋め込み(NPE)

そのような主成分分析(PCA)、因子分析(FA)などの伝統的な線形次元削減法は、当該試料の分散は、線形マニホールド構造を学ぶことができるが、非線形のマニホールドを知ることができません。古典マニホールド学習の方法は、しかし、彼らのために属するトランスダクティブの非線形マニホールド構造を学ぶことが、新しいサンプルを一般化することはできません。このようないくつかのKPCAのようカーネル関数に基づいて、追加の次元削減、ただし非線形問題、しかしマニホールド非線形構造を無視しました。

線形近似のための局所線形埋め込み(LLE)アルゴリズムなどのNPEは、それだけでなく、非線形多様体の構造を捕捉することが可能であり、また、新しいサンプルを一般化することができる、線形の特性を保持します。したがって、NPEが良好で、それは簡単に新しいサンプルにも対応することも可能であり、それは産業界で広く使用されています。

こうした理由マニホールドを学んだ、マニホールドなどマニホールドの問題として、あなたは私の以前のブログ読むことができる「マニホールド学習、」知識の始まりを

NPEアルゴリズムのアイデアや手順

NPEとLLEの同じ考え方は、主に局所線形マニホールド構造は、それによって有用な情報データを抽出し、不変の次元削減処理のままです。ここで局所線形構造が重み行列再構成することを特徴とする、重み行列は、リニアマトリクスの係数を再構成近隣ノードの隣接点を再構成します。

そして、同様の他の古典的なマニホールド学習アルゴリズム、アルゴリズムのNPEステップは3つの段階に分かれています。

近所のグラフの1の構築

K最近傍(KNN)アルゴリズムは、近傍の図を構築します。m個のサンプルがあると仮定し、m個のネイバーは\(\ mathbf {X}特徴、図面に共通ノード{I}は\)は、i番目のノードを表します。\(\ mathbf {X}場合 {J}は\)K最近傍\の一つである(\ mathbf {X} _ {iは} \) 、これら2点を結ぶ、逆が接続されていません。

2.重み行列(特徴抽出マニホールド)を計算

重み行列は、ノード間のエッジiとノードjの重、二点間の変化がない場合、該当の重量の要素が\(W _ {IJ} \)代表\(\ mathbf {W} \)のために設けられています。ゼロの行列要素。マトリックス\(\ mathbf {W} \)は、次の目的関数を最小化することにより、主要な要素の値が得られます。

\ [\分\和_ {I} \左| \左| \ mathbf {X} _ {I} - \総和_ {J} W _ {IJ} \ mathbf {X} _ {J} \権| \権| ^ {2}、\]

前記\(\ mathbf {W} \)正規化制約を満たすべきです:

\ [\和_ {J} W _ {IJ} = 1、J = 1,2、...、M。\]

3.マップを計算します

次元削減は、一般化固有ベクトル問題の線形写像を解くことによって計算されます。

\ [\ mathbf {XMX} ^ {T} \ mathbf {A} = \ラムダ\ mathbf {XX} ^ {T} \ mathbf {A}、\]

前記データセット(\ \ X-mathbf {} =(\ mathbf {X} {}。1、...、\ mathbf {X} {M})\)、マトリックス\(\ mathbf {M} = (\ mathbf { I} - \ mathbf {W} )^ {T}(\ mathbf {I} - \ mathbf {W})\)、 マトリックス\(\ mathbf {I} = DIAG(1、...、1)\)

小から大への注文の特徴量に応じて((\ \ラムダ{0} \のLeq ... \のLeq \ラムダ {} 1-D \))固有ベクトルを解くことは、\(\ mathbf {A}に配置されている{0 }、...、\ mathbf {A} {} 1-D \)、埋め込み次元削減を比較するように座標:

\ [\ mathbf {Y} _ {I} = \ mathbf {A} ^ {T} \ mathbf {X} _ {I}、\]

間で

\ [\ mathbf {A} =(\ mathbf {A} _ {0}、\ mathbf {A} _ {1}、...、\ mathbf {A} _ {D-1})。\]

NPEの導出アルゴリズム

NPEアルゴリズムは局所線形形状を抽出する最初の主要な流れであり、次元削減は、このような情報を保持することによって達成されます。具体的には、まずNPE局所線形再構成との平均二乗誤差の形態において、マニホルド部分線形構造を表しました。サンプル数Mに設定され、寸法がNである、ウェイHouwei dの落下の数、\(\ mathbf {Q}(I)\)サンプル中のサンプルのセットに最近傍のK iが、重量で特徴付け高次元空間構成エラー目的関数は以下のとおりです。

\ [\ PHI(\ mathbf {W})= \和^ {M} _ {i = 1} \左| \左| \ mathbf {X} _ {I} - \和_ {\ mathbf {Q}(i)におけるjは\} W _ {IJ} \ mathbf {X} _ {J}右\ | \権| ^ {2}、\]

マトリックス\(\ mathbf {W}を\)を得るために、目的関数を最適化するローカルマニホールドに関する情報を含むことになります。ターゲットの同じ高次元原空間ローカル線形再構成を保持するパラメータ空間(次元削減後の低次元空間)におけるNPEの次元削減のプロセスにおいて(即ち、\(\目標関数重み行列で同じ重量を使用してmathbf {W}は\))、線形次元削減を達成するために、低次元目的関数空間です。

\ [\ピー(\ mathbf {Y})= \和^ {M} _ {i = 1} \左| \左| Y _ {I} - \和^ {M} _ {J = 1} W _ {ijをY} _ {J}右\ | \権| ^ {2}。\]

NPE導出アルゴリズムは、第1の重み行列を計算し、2つのステップに分割され、2つ目は、低次元の埋め込み算出マップです。次のように導出の詳細:

まず、第1の目的関数は、行列形式として表されます。

\ [\ PHI(\ mathbf {W})= \和^ {M} _ {i = 1} \左| \左| \ mathbf {X} _ {I} - \和_ {\ mathbf {Q}(i)におけるjは\} W _ {IJ} \ mathbf {X} _ {J}右\ | \権| ^ {2} \]

\ [= \和^ {M} _ {i = 1} \左| \左| \和_ {J \で\ mathbf {Q}(I)} W _ {IJ} \ mathbf {X} _ {I} - \和_ {J \で\ mathbf {Q}(I)} W _ { IJ} \ mathbf {X} _ {J} \権| \権| ^ {2} \]

\ [= \和^ {M} _ {i = 1} \左| \左| \総和_ {J \で\ mathbf {Q}(I)} W _ {IJ}(\ mathbf {X} _ {I} - \ mathbf {X} _ {J})\権| \権| ^ {2} \]

\ [= \ mathbf {W} ^ {T} _ {I}(\ mathbf {X} _ {I} - \ mathbf {X} _ {J})(\ mathbf {X} _ {I} - \ mathbf {X} _ {J})^ {T} \ mathbf {W} _ {I} \]

\ [= \和^ {M} _ {i = 1} \ mathbf {W} ^ {T} _ {I} \ mathbf {Z} _ {I} \ mathbf {W} _ {I} \]

\(\ mathbf {Wである}、請求{i}は\)iは行列\(からなる重み係数を対応するk番目の最近傍点サンプル列ベクトル\ mathbf {Z} {I} =(\ mathbf {X} { I} - \ mathbf {X} {J})(\ mathbf {X} {I} - \ mathbf {X} {J})^ {T}の\ mathbf {Q}(I)におけるJ \ \)。

正規化の制約を考えると、私たちは、その後、行列方程式の形にバインドします:

\ [\和_ {J \で\ mathbf {Q}(I)} W _ {IJ} = \ mathbf {W} ^ {T} _ {I} \ mathbf {1} _ {K} = 1、\ ]

前記\(\ mathbf {1} _ {K} \)は、すべてのもののk次元のベクトルです。

1つのゴールに行列式の目的関数と制約を得るために、ラグランジュ乗数法を使用します:

\ [\ mathbf {L}(\ mathbf {W})= \和^ {M} _ {i = 1} \ mathbf {W} ^ {T} _ {I} \ mathbf {Z} _ {I} \ mathbf {W} _ {I} + \ラムダ '(\ mathbf {W} ^ {T} _ {I} \ mathbf {1} _ {K} - 1)。\]

\(\ mathbf {W} \)、次いで、導出が0許可:

\ [\ mathbf {W} _ {I} = - \ dfrac {1} {2} \ラムダ\ mathbf {Z} ^ { - 1} _ {I} \ mathbf {1} _ {K}。\]

正規化制約を使用して、結果を正規化し、最終的な重み行列\(\ mathbf {W} _ {i}は\)です。

\ [\ mathbf {W} _ {I} = \ dfrac { - \ dfrac {1} {2} \ラムダ\ mathbf {Z} ^ { - 1} _ {I} \ mathbf {1} _ {K}} {\ mathbf {W} ^ {T} _ {I} \ mathbf {1} _ {K}} \]

\ [= \ dfrac {\ mathbf {Z} ^ { - 1} _ {I} \ mathbf {1} _ {K}} {\ mathbf {1} ^ {T} _ {K}(\ mathbf {Z} ^ { - 1} _ {I})^ {T} \ mathbf {1} _ {K}}。\]

私たちは、マップされた次元削減を計算することができるので、重み行列を取得した後。まず定義します。

\ [Z _ {I} = Y _ {I} - \和^ {M} _ {J = 1} W _ {ijをY} _ {J}、\]

そして、行列形式に変換します:

\ [\ mathbf {Z} = \ mathbf {Y} - \ mathbf {Wyを} =(\ mathbf {I} - \ mathbf {W})\ mathbf {Y}。\]

第二の目的関数はに削減します。

\ [\ピー(\ mathbf {Y})= \和^ {M} _ {i = 1} \左(Y _ {I} - \和^ {M} _ {J = 1} W _ {IJ} Y _ {J} \右)^ {2} \]

\ [= \和^ {M} _ {i = 1}(Z _ {I})^ {2} \]

\ [= \ mathbf {Z} ^ {T} \ mathbf {Z} \]

\ [= \ mathbf {Y} ^ {T}(\ mathbf {I} - \ mathbf {W})^ {T}(\ mathbf {I} - \ mathbf {W})\ mathbf {Y}。\]

NPE線形次元削減アルゴリズムので、埋め込み次元削減には次のように表すことができます。

\ [\ mathbf {Y} ^ {T} = \ mathbf {A} ^ {T} \ mathbf {X}、\]

ここで\(\ mathbf {Y} \)m個のダウンちょうど一次元の埋め込み座標サンプル、\(\ mathbf {A} \)は、対応するマップです。

第2の目的関数は、さらに、のように表すことができます。

\ [\ピー(\ mathbf {Y})= \ mathbf {A} ^ {T} \ mathbf {X}(\ mathbf {I} - \ mathbf {W})^ {T}(\ mathbf {I} - \ mathbf {W})\ mathbf {X} ^ {T} \ mathbf {A} \]

\ [= \ mathbf {A} ^ {T} \ mathbf {X} \ mathbf {M} \ mathbf {X} ^ {T} \ mathbf {A}。\]

そして、空間座標を埋め込むことも制約があります。

\ [\ mathbf {Y} ^ {T} \ mathbf {Y} = 1 \が意味するの\ mathbf {A} ^ {T} \ mathbf {X} \ mathbf {X} ^ {T} \ mathbf {A}。\]

第二の目的関数と制約を合わせ、およびその誘導体が、一般固有ベクトル問題次得られるラグランジュ乗数法を用いて、同じ目的関数を解きます。

\ [\ mathbf {XMX} ^ {T} \ mathbf {A} = \ラムダ\ mathbf {XX} ^ {T} \ mathbf {A}。\]

前記\(\ mathbf {M} \)を算出してもよい重み行列\(\ mathbf {W} \)星、上記一般固有ベクトルを解決することができます。最後に、固有ベクトルを求めるため、マッピング行列は、順に配置されています。

コードの実装

ここでは、PythonとMATLABコードを与えられています。

パイソン

まず、典型的な「スイスロール」のデータセットを作成します。

import numpy

def swissroll(N=1000):
    tt = numpy.array((5*numpy.pi/4)*(1+2*numpy.random.rand(N)))
    height = numpy.array((numpy.random.rand(N)-0.5))
    noise = 0.0
    X = numpy.array([(tt+noise*numpy.random.randn(N))*numpy.cos(tt), 10*height, (tt+noise*numpy.random.randn(N))*numpy.sin(tt)])
    return X

NPEアルゴリズムを達成するために、その後、再利用の将軍ライブラリ:

import modshogun as sg

# load data
feature_matrix = swissroll()
# create features instance
features = sg.RealFeatures(feature_matrix)

# create Neighborhood Preserving Embedding converter instance
converter = sg.NeighborhoodPreservingEmbedding()

# set target dimensionality
converter.set_target_dim(2)
# set number of neighbors
converter.set_k(10)
# set number of threads
converter.parallel.set_num_threads(2)
# set nullspace shift (optional)
converter.set_nullspace_shift(-1e-6)

# compute embedding with Neighborhood Preserving Projections method
embedding = converter.embed(features)

MathWorks社のMATLAB

MATLABコードとして教授彼Xiaofeiホームページのため、その長さのそこに、そこに掲載されていません。

おすすめ

転載: www.cnblogs.com/woaiml/p/manifold2.html