行列があり、ポイント間のユークリッド距離NxM
の行列を計算したいと考えています。私の問題では、約100,000です。この行列を k 最近傍アルゴリズムに使用する予定であるため、最小距離のみを保持する必要があるため、結果の行列は非常にまばらになります。これは、たとえば、密な行列になる (およびおそらく私のサイズのストレージの問題) から得られるものとは対照的です。NxN
M
N
k
NxN
dist()
N
これまでに見つけた kNN のパッケージ ( knnflex
、kknn
など) はすべて、密行列を使用しているようです。また、Matrix
パッケージはペアワイズ距離機能を提供しません。
私の目標に近づくと、spam
パッケージには、nearest.dist()
あるしきい値未満の距離のみを考慮することができる機能があることがわかりますdelta
。ただし、私の場合、特定の値delta
によって生成される距離が多すぎる (行列を密に格納する必要があるNxN
) か、距離が少なすぎる (kNN を使用できない) 場合があります。
パッケージを使用してk-means クラスタリングを実行しようとする以前の議論を見bigmemory/biganalytics
たことがありますが、この場合、これらの方法を活用できないようです。
Rで疎な方法で距離行列を計算する関数/実装を知っている人はいますか? 私の (恐ろしい) バックアップ計画は、2 つのfor
ループを持ち、結果をMatrix
オブジェクトに保存することです。