JMSLライブラリ の新機能

JMSL 数値ライブラリは、ビッグデータのための高性能なデータ解析用ツールとしてチューニングされています。100% Java言語で作成されたライブラリを使用することで、複雑なコードをシンプルに開発することができます。

バージョン2018 のハイライト

新機能と改善された機能

今回のリリースの主な変更点には、パフォーマンスの向上、線形回帰の強化、およびアーキテクチャのアップグレードなどが含まれます。

今回パフォーマンスが向上した領域は、時系列の外れ値の検出です。データセット内の外れ値は他のデータと比較して異常なほど大きなまたは小さな観測値です。時系列の外れ値は、単一点として、変則的で短い系列として、一時的な変化として、または永久的なレベルシフトとして生じることがあります。異なるタイプの外れ値の根本的な原因は様々であり、たとえそれが有益であったとしてもその予測は不可能です。 ほとんどの場合、モデルの推定値と予測値を作成する前に、外れ値をデータから除外する必要があります。

JMSL の ARMAOutlierIdentification は、時系列での外れ値の自動検出のために 、“Chen and Liu (1993)” に記載されているプロシージャーを実装しました。 このアルゴリズムは潜在的な外れ値を検出し、それを上記のどのタイプであるかを識別します。このアルゴリズムは連続した最小自乗回帰を解きます。 このような問題をそれぞれゼロから計算するのではなく、最初の問題を解いてから、ギブンス回転(Givens rotation)により各ステップで解を更新することができます。 これにより、特に多数の外れ値が最初に検出された場合には大幅に計算時間を節約することができます。 この変更を行った後では、ARMAOutlierIdentification を使用した AutoARIMA.compute メソッドは、問題のサイズにもよりますが 80〜99%ほど速くなりました。

パフォーマンスが向上した二つ目の領域は、ディシジョンツリー(Decision Tree)です。ディシジョンツリーアルゴリズムは、データを最適な予測変数(すなわち、データのサブセット内のターゲット変数の値を最もうまく説明する変数)の値に再帰的に分割することによってモデルを構築します。このプロセスは、停止基準が満たされるまで新しいサブセットごとに繰り返されます。各段階でこれらのデータパーティションをうまく活用することで、新しいディシジョンツリーアルゴリズム(C45、ALACART、CHAID、およびQUEST)は、データサイズにもよりますが 以前より10〜50% ほど速くなりました。 GradientBoosting.fitModel などのディシジョンツリーアルゴリズムを使用するクラスメソッドも同程度速くなりました。

パフォーマンスを向上する過程で、いくつかの新しいメソッドの追加と更新がありました。
追加されたメソッド:

  • LinearRegression.getR: QR変換された回帰問題から upper triangular matrix - R を返します。
  • LinearRegression.getRHS: QR分解で使用される列置換を返します。
  • PredictiveModel.isConstantSeries: ディシジョンツリーなどの拡張クラスのサポートにより、一連の応答値が一定かチェックすることができます。

更新されたメソッド:

  • LinearRegression: ランクが不足している問題を処理するためのカラム(列)ピボットが含まれるようになりました。

継続的な機能強化への取り組み

IMSLは 約50年にわたりお客様にご利用頂いており、成熟度が高くバグが少ないライブラリです。その堅牢性をさらに高めるために、お客様の協力のもと継続的に改善を行っています。詳細については製品の変更履歴(change log)をご覧ください。

JMSL 2018のもう一つの重要なポイントは、欠陥用パッチの迅速な適用サイクルとJavaプラットフォームの証明(Java platform certification)を進めていくための JMSL の内部ツールとプロセスの改善です。これらのアップデートや計画的な改善により、開発チームは先ず最も広く採用されているJavaバージョンに対して新製品をリリースし、その後お客様からのリクエストに基づきプラットフォームを追加してゆきます。プラットフォームの追加はその需要によって対応可能となります。