ストリーミングデータを扱う場合、1つのt-SNEマップにすべてのポイントを履歴に埋め込むことは望ましくない/必要ない場合があります。別の方法として、次の簡単な手順に従ってオンライン埋め込みを実行できます。
関心のある各パターンがウィンドウ期間に少なくとも数回現れるように、期間Tの時間ウィンドウを選択します。
データストリームとしてウィンドウをスクロールします。タイムステップdtはTよりはるかに小さくなります。ウィンドウの各位置について、タイムウィンドウ内のデータポイントのt-SNE埋め込みを計算します。
各埋め込みに前の結果をシードします。t-SNEでは、低次元空間のデータポイントの初期座標を選択する必要があります。この場合、Tよりもはるかに小さいdtを選択するため、2つの連続する埋め込みがほとんどのデータポイントを共有します。すべての共有データポイントについて、現在の埋め込みの初期座標を前の埋め込みの最終座標に一致させます。このステップにより、類似のパターンが連続する埋め込み全体で一貫した表現を持つことが保証されます。(Python のsklearn実装では、seedパラメーターは「init」です。デフォルトでは、sklearn実装はポイントの初期位置をランダムに設定します)
注1:ウィンドウがデータセットをスライドするときに表現のメモリが失われないように、対象のパターンが任意の時間ウィンドウに少なくとも1回表示されることが重要です。実際、t-SNEは通常、一意のソリューションに収束せず、ローカルミニマムにのみ収束するため、メモリが失われると、埋め込みの2つのインスタンスで類似のパターンが非常に異なる方法で表される場合があります。
注2:この方法は、非定常時系列を処理する場合に特に関連します。非定常時系列では、時間の経過とともにゆっくりと進化するパターンを追跡する必要があります。実際、ここで各埋め込みは、計算される小さな時間ウィンドウに合わせて特別に調整されており、最良の方法で一時的に局所的な構造をキャプチャします(非定常データセット全体の完全な埋め込みとは対照的に)。
注3:この方法では、次の埋め込みをシードするために前の埋め込みの結果が必要になるため、連続する埋め込みを並列化することはできません。ただし、シード(つまり、ポイントの初期座標)はほとんどのポイント(連続する埋め込み間で共有されるすべてのポイント)に対して適切に選択されるため、通常、埋め込みは数回の反復で非常に高速に収束します。
非定常時系列へのこの方法の適用例については、この記事(ICLR 2016、Learning a stable representations in changing world in the online t-SNE:proof of concept of songbird)が正常に適用されたこの記事を参照してください鳴き鳥の開発全体で音節の出現を追跡する。