Python API が実装! -SAP® Predictive Analytics Python APIを使ってみたー

ブレインパッドが2006年から販売を続ける「SAP® Predictive Analytics(エスエーピー・プレディクティブ・アナリティクス)」がバージョンアップ。データマイニングや機械学習のプロセスを自動化できるこのツールに、目玉機能として「Python API」が実装されたので早速使ってみました!

 

こんにちは。デジタルソリューション本部 プレディクティブマーケティングサービス部の西村です。

弊社が販売・導入支援・コンサルティングを行う機械学習・予測分析ツール「SAP® Predictive Analytics」のバージョン3.3がリリースされました。

今回は、バージョンアップの目玉機能のひとつである「Python API」の実際の利用方法、ユースケース、今後の展望について簡単にご紹介します。

 

 

 

SAP® Predictive Analyticsの概要

SAP® Predictive Analyticsは、ビジネス向けソフトウェア大手のドイツソフトウェアメーカー「SAP」が提供する機械学習・予測分析ソフトウェアです。

企業向けの予測分析を行うSAPのソリューションの中でも、データ分析が専門ではないものの、実務上で予測を使ってスピーディに施策を立案することが求められるビジネスユーザーを対象としています。統計学、機械学習、プログラミングなどの専門的な知識を持たずとも、企業内に蓄積された大量のデータを使った、高精度な予測を可能としています。

 

f:id:bp-writer:20180802175518p:plain

 

また、当ソフトウェアは予測モデルの自動作成機能も備わっており、例えば毎週新しい予測モデルを自動作成して、関連部署に展開するといったことも可能になります。

弊社でも当ソフトウェアについて販売・導入支援・コンサルティングを行っており、国内大手の金融、流通業など、幅広い企業様にご支持をいただいております。

 

f:id:bp-writer:20180802175628p:plain

 

SAP® Predictive Analyticsの詳細は下記リンクをご覧ください。

www.sap.com

 

SAP® Predictive Analytics Python APIの概要

さて、このSAP® Predictive Analyticsにつきまして、2018年3月にリリースされたVer.3.3より、Python 3.5経由でSAP® Predictive Analyticsの統計解析機能を呼び出せるAPIが実装されました。

当APIは、もともとSAP® Predictive Analyticsに実装されている、KxShellスクリプト(SAP社が提供している専用のシェルスクリプト)を通じて、SAP® Predictive Analyticsの各種機能の呼び出しを行う、Python向けラッパーライブラリとなっています。

SAP® Predictive Analyticsで実装されている、分類/回帰、クラスタリング、時系列分析、ソーシャルネットワーク分析などの機能が、そのまま利用可能です。

SAP® Predictive Analyticsでのモデル自動作成については、前述のKxShell、Predictive Factory(ブラウザ経由でSAP® Predictive Analyticsのモデル作成等を簡易的に行うツール)並びに、Java API等という方法がありましたが、Python APIという4つ目が加わったことになります。

 

Python APIを使って実際に解析してみた

今回は、実際にPython APIを使って、SAP® Predictive Analyticsの分類回帰モデル作成機能の呼び出しを行ってみました。
分析対象として、データ分析コンペティションプラットフォーム「Kaggle」で、機械学習のチュートリアルコンペティションの題材として提供されている、タイタニック号の乗客属性情報データを題材として、生存確率算出の予測モデルの構築を行います。

 

(1)データセットについて

今回扱うデータは、20世紀初頭に建造された豪華客船、タイタニック号の沈没事故での、乗客乗員について,性別や年齢・等級などの属性情報を記録した内容となります。

参照:Titanic: Machine Learning from Disaster Start here! Predict survival on the Titanic and get familiar with ML basics

f:id:bp-writer:20180802180938p:plain

train.csvの抜粋。Survival(生死情報)列が目的変数になります。

 

コンペティションに使うデータは、「学習用」(train.csv)と「テスト用」(test.csv)の2つに分かれています。前者のみ、実際の生死(Survival)情報を含んでおり、これをもとにテスト用データでの生死情報を予測します。

 

(2)SAP® Predictive Analyticsでのデータ分析の流れ

SAP® Predictive Analyticsでのモデル作成は、主に下記のフェーズに分かれます。

  I. データに対して前処理を行う
  II. 前処理を行ったデータをもとに、モデル作成を行う
   なお、前処理の大部分はSAP® Predictive Analytics側で自動実行されます
  III.IIで作成したモデルをもとに、予測したい対象のデータセットに予測結果を付与する

今回のデータセットに対しては、

  I.「学習用」「テスト用」データに前処理を施した後、
  II.「学習用」データで分類モデルの作成を行い、
  III. 「テスト用」データに予測結果を付与する
という流れで処理を行います。

これを、Python APIで実装してみましょう。

 

(3)実際にPython APIを使って解析してみた

Python APIでは、実際にSAP® Predictive Analyticsソフトウェアで手動設定している内容について、Python側でパラメータを設定した上で、各種機能の呼び出しを行います。

具体的には下記の内容です。
 
  (i).解析手法の選択
   今回は分類/解析モデル作成機能の呼び出しを行います
  (ii).学習用のデータ(train.csv)を指定 
  (iii).目的変数の設定
   Survival(生存/死亡)を目的変数とします
  (iv). 各変数の変数タイプの指定
   各変数が、順序型変数/連続値変数/順序型変数かを指定します
  (v). (i)~(iv)の設定で分類回帰モデルを作成
  
  (vi). テスト用のデータ(test.csv)を指定
  (vii). (v)で作成したモデルをテスト用のデータに適用し、目的変数(Survival)の予測値を出力する

 

現在、詳細なAPIドキュメントは存在しませんが、SAP側でいくつかコードスニペットが用意されています。

分類/回帰モデルの作成については、英語になりますが、下記サイトで詳細な手順を紹介されているので、参考にしてください。

参照:Train a model from a Jupyter notebook using the Python API of SAP Predictive Analytics/

 

また、Windowsで利用されている場合は、Python APIのコンポーネントをインストールした場合に、下記階層でサンプルスクリプトが確認できるかと思います。

C:\Program Files\SAP Predictive Analytics\Desktop\Automated\EXE\Clients\Samples\Python

 

なお、SAP® Predictive AnalyticsのUI上で行うチューニングについては、説明変数の自動選択(削減)機能や、クロスバリデーションを行うためのデータの分割方法の設定など、SAP® Predictive AnalyticsのUI同様Python APIを使って設定することも可能です。

SAP Predictive Analyticsは、データの前処理機能も充実しており、欠損値の多いデータでも、欠損値がスマートに補完されます。また、変数の分布や、相関の高い変数があっても自動的な変数選択が実施されるため、ユーザーによる手動のチューニングがなくても、高い予測力を期待できます。

今回のモデル作成でも特にチューニングは行わず、SAP® Predictive Analyticsのデフォルトの設定を使ってモデルを作成しました。

さて、実際にモデルを作成し、テスト用データに適用した結果が下記になります。
目的変数の予測値(proba_rr_Survived)が0.5以上のものを生存者として扱いします。

 

f:id:bp-writer:20180802181726p:plain

 

(4)Kaggleに予測結果を投稿

せっかくなので、このデータを実際にKaggleに投稿してみて、予測結果の精度を確認してみましょう。

f:id:bp-writer:20180802181835p:plain

 

結果、正解率77.033%になりました。6551/10521位の結果(平均正解率: 76.715%)となっており、データサイエンティストがしのぎを削るコンテストにおいて中位の結果となっています。全自動かつ、数秒で出力された結果としては悪くない結果です。

 

f:id:bp-writer:20180802181900p:plain

 

チュートリアルコンペティション参加チームの得点のヒストグラム。正解率70~80%帯に集中していることがわかります。

今後、必要な前処理やチューニングを加えていくとしても、なかなか悪くない結果といえるのではないでしょうか。

 

なお、今回の対象のデータについては、チュートリアルとされているだけあり、各種前処理を施すことによってモデルの精度を上げられることが知られていますので、皆さんの手で実際に試していただき、さらに正解率を上げてみてください。

また、今回使ったデータは、学習用データ(train.csv)のデータ数が891、テスト用データ(test.csv)が418となっています。上記でモデルを作成すると、学習と適用の計算時間はそれぞれ1秒足らずの済み、モデル作成についてもSAP Predictive Analytics のUI上で実施すれば5分程度で完了します。

 

Python APIはSAP® Predictive Analyticsユーザーにどんなメリットをもたらすか

Pythonは、機械学習、科学演算等にも多数使われてきた言語であり、データ加工やグラフの描画のためのライブラリも非常に充実しています。

 

f:id:bp-writer:20180802182041p:plain

SAP® Predictive Analyticsのソフトウェア上で表示されていたグラフ等を再現することも容易

 

・SAP® Predictive Analyticsによる解析を行うプロジェクトと、データサイエンティストが実施するデータ解析プロセス間での、データ連携を容易に実施することが可能となる。

・SAP® Predictive Analyticsでモデルを作成し、他のシステム(BIツール)に接続して、モデルの結果をビジネスユーザのダッシュボードに表示する

などなど、Python APIを利用した実装アイデアは色々と考えられそうですね。

 

Python APIの今後の課題

とはいえ、SAP® Predictive Analytics DesktopのPython APIについては、若干取り扱いづらい面もあります。

  1. 包括的なAPIドキュメントが整備されていない
    現在、Python APIの仕様を確認できるサイト、ドキュメントが存在しません。SAP® Predictive Analyticsのヘルプ(SAP PartnerEdge)や、サンプルコード等をベースに、手探りでコーディングする必要があります。
  2. Pythonの対応バージョンが3.5のみ
    現在、Python APIはPython3.5 のみの対応となっています。現行のPython 3.6以降の利用をサポートしていません。

 

今回のPython APIリリースについては、開発途上のようですが、SAP LeonardoSAP Analytics Cloud の発表など、クラウド化を目指した機能拡張を精力的に行っているため、今後の機能拡張を期待したいと思います。

 

SAP® Predictive Analyticsの活用セミナー開催(2018.09.04)

ブレインパッドでは、SAP® Predictive Analyticsを活用した事例やデモをご紹介するセミナーを2018年9月4日に開催いたします。本ブログにてご興味をお持ちいただけましたら是非ご参加ください。

www.brainpad.co.jp

席に限りがあるため、早めのお申込みをおすすめしています。

 

最後までご覧いただきありがとうございます。

 

当社では、SAP® Predictive Analyticsをはじめ、独自性の強い海外製品を活用したデータ活用支援も積極的に行っています。ご興味のある方は、ぜひエントリーください!

www.brainpad.co.jp