読者です 読者をやめる 読者になる 読者になる

ローグウェーブソフトウェアのブログ

開発をシンプルに 安全で高品質のコードを 素早くお客様のもとへ

IMSL C 2016.0リリース / 数値統計ライブラリ

IMSL 製品とサービス リリース

ローグウェーブが開発している数値計算・統計解析ライブラリIMSLC/C++言語版がアップデートされました。8.0以降の更新情報はこちらです。

今年の3月にリリースされた8.6以来の更新になります。 blog.roguewave.jp

2016.0の主な変更点

詳細はリリースノート(日本語版英語版)、サポート環境表、ドキュメント(英語版日本語版をご覧ください。

Prescriptive Analytics

最近のIMSLファミリーの更新は、予測解析(Predictive Analysis)やPrescriptive Analyticsに力を入れています。「Prescriptive」という英単語は聞き慣れないかもしれませんが、prescriptive と descriptive|翻訳者yummyの生態 で紹介されているように、「相手がどうすべきか指示する」という意味で、IMSLでは単なる過去や現状の分析だけでなく予測やさらにビジネスの意思決定を直接サポートするような機能の提供を目指しています。IMSLでは大まかに、

  • Business Intelligence
    • Descriptive: 何が起こった?起こっている?基礎的な統計の可視化
    • Diagnostic: なぜ起こった?主な関係性は? データマイニング、統計解析、クラスタ、トレンド、回帰
  • Data Science
    • Predictive: 何が起こりそうか(will)?もしこうだったら?リスクは? 統計モデリング、予測、機械学習
    • Prescriptive: どうなるべき(should)? 何が望ましい?最適化、シミュレーション
    • Preemptive: どうやったらそうできる(make it happen)?どうやって防ぐ? 意思決定、効率性、最適化、シミュレーション

というように用語を使い分けています。

機能追加

今回の更新では、統計解析用C Stat Libraryでデータマイニング決定木(decision_tree)ランダムフォレストアンサンブル学習のオプション IMSLS_RANDOM_FEATURESや、確率的勾配ブースティング(gradient_boosting)が追加されました。ちなみにランダムフォレストはJMSL 7.3で、確率的勾配ブースティングは JMSL 7.2で、それぞれJavaライブラリに追加されています。

また、数値計算用C Math Libraryの最適化(Optimization)に、以下の関数が追加されています。

ここで、上記のドキュメントに記載されている輸送問題のサンプルをお見せします。在庫がそれぞれ40と20である2つの倉庫と、需要がそれぞれ25、10、22である3つの店舗を考えます。

#include <stdio.h>
#include <imsl.h>
 
#define NW      2 /* 供給側(source)の個数 */
#define NS      3 /* 受け取り側(sink)の個数 */
 
int main() {
    int i, j;
    float cmin, *x;
    float wcap[NW] = { 40, 20 }; /* 各倉庫の在庫量 */
    float sreq[NS] = { 25, 10, 22 }; /* 各店舗の需要量 */
    float cost[NW][NS] = { /* 倉庫iから店舗jへ輸送するためのコスト */
        { 550, 300, 400 },
        { 350, 300, 100 }
    };
 
    /* IMSL関数で最適化計算を実行 */
    x = imsl_f_transport(NW, NS, wcap, sreq, &cost[0][0],
        IMSL_TOTAL_COST, &cmin,
        0);
 
    /* 結果を出力 */
    printf("Minimum cost is %.2f\n\n", cmin);
    for (i = 0; i < NW; i++) {
        for (j = 0; j < NS; j++) {
            printf("Ship %5.2f units from warehouse %d to store %d\n",
                x[i * NS + j], i, j);
        }
    }
 
    imsl_free(x);
}

これを実行すると

Minimum cost is 19550.00
 
Ship 25.00 units from warehouse 0 to store 0
Ship 10.00 units from warehouse 0 to store 1
...

のように表示され、最小の輸送コストとそのときの各輸送量を得ることができました。このようにIMSLを使うと関数を呼び出すだけで最適化計算を非常に簡単に実行することができます。

データベース内解析

JMSL(IMSL Java言語版)SourceProとを組み合わせてデータベース内解析を行う方法について以前ご紹介しました。 blog.roguewave.jp

IMSL CとSourceProを組み合わせる方法についても英語の技術チュートリアルEmbedding analytics into a database using SourcePro and IMSL C」が公開されています。近日中にご紹介したいと思いますので、お楽しみに!

トライアル申し込み

製品のトライアルはトライアル(評価版)リクエストからどうぞ。ご不明点はメールや電話、お問い合わせフォームから。

以下の投稿でIMSL Cのインストール方法をわかりやすくお伝えしています。 blog.roguewave.jp

ローグウェーブ セールスエンジニア 柄澤(からさわ)