
- スパースモデリング・圧縮センシングのアルゴリズム・ユーティリティを実装する
- scikit-learn ( および NumPy と scipy ) のみに依存する
- インターフェースやパッケージ構造は sckit-learn に極力あわせる
一つ目は言わずもがなですが、ハカルスで注力しているスパースモデリングや圧縮センシングで用いるアルゴリズムやユーティリティは社内でも共通化のニーズは高く、また書籍や論文にしか実装が見当たらないものを公開していくことは、スパースモデリングの裾野を広げて行くという意味でも意義あることだと考え、今回の共通ライブラリ化・OSS 化にいたりました。
後者の scikit-learn への準拠ですが、私たち自身が頻繁に scikit-learn を使っていることもあり、同じような scikit-learn のユーザの方にとって
- 依存関係を一つ足すだけ
- アルゴリズムの切り替えは既存の実装から、クラス名と import を変えるだけ
にすることで、気軽に試してもらいたいという考えからです。依存関係を小さくしておくことで、新しいライブラリを追加することへの抵抗も少なくなるのでは、とも考えています。
例えば、以下のような scikit-learn の Lasso を使った線形回帰のコードがあったとします。
from sklearn.linear_model import Lasso model = Lasso(alpha=0.1) model.fit(X_train, Y_train) model.score(X_test, y_test)
これを spm-image の ADMM 実装に切り替えるのは、最初の二行を以下のように変更するだけです。
from spmimage.linear_model import LassoADMM model = LassoADMM(alpha=0.1) model.fit(X_train, Y_train) model.score(X_test, y_test)
scikit-learn 互換になっていることで簡単に実装を試せることがわかるかと思います。
scikit-learn は、幅広く実装があり安定もしている一方で、「かゆい所に手が届かない」と思う方もいらっしゃるかと思います。沢山のユーザに利用されている OSS ですので、メンテナンスを考えるとそれは当然ですが、であれば、そのかゆい所をカバーする守備範囲の小さなライブラリたれ、というコンセプトも持っています。
実は社内的に、こういった共通ライブラリに取り組むのは二回目で、初代のライブラリは守備範囲を大きくとった結果、コンセプトがブレてしまい外に出しにくいものになってしまったという反省があります。二代目である spm-image は「山椒は小粒でもぴりりと辛い」的なライブラリとしてコンセプトも明確にし、発展させていきたいと考えています。
是非、気軽に試して見てください。ご要望やフィードバックは GitHub にてお待ちしております!
ハカルスについて
・株式会社ハカルス
・人工知能スターターキット HACARUS-X-Edge
・医療・ヘルスケア分野向けシステム構築 HACARUS Fit Platform
・データサイエンティスト積極採用 採用情報
Category: Machine Learning, Python