Bag of ML Words

ML = Machine Learning, Music Love, and Miscellaneous things in daily Livings

スパース行列と線形代数のJavaライブラリ

Java使いです。

 

これまでSparse matrixのライブラリには

古き良きColt*1を利用していました。

Colt - Welcome

SparseDoubleMatrix2D, ですね。

 

ただ、今回自分史上最大のsparse matrixを作ろうとしたら

matrix:too largeと言われて作れなくなってしまいました。

 

次に、最近メインで使っているApache commonsを見ると

なんとsparse matrixはdeprecated...

Apache Commons - Apache Commons

SparseRealMatrix (Apache Commons Math 3.3-SNAPSHOT API) <-- Deprecated!!

 

というわけで探してたどり着いたのが

la4j - Linear Algebra for Java

です。

すると、大きなsparse matrixもちゃんと作れました!すばらしい。

なお、CRS (Compressed Row-wise Sparse) かCCS (Compressed Column-wise Sparse)を使うかは良く考えるといいと思います。読み込み効率が全然違ったりします。

 

なおこのライブラリ、線形代数ライブラリですね。

sparse, dense matrixの取り扱いもできて、分かり易そうなので、Javaの線形演算は今後このライブラリでいいかもしれません。

*1:大古典だけど今でも一番良く使っている