WPS Analytics を使用した SAS や Python、R、SQLなどのデータサイエンス用言語の結合

ブログ

投稿日

2018年05月03日

カテゴリー

データサイエンス

共有

筆者:英国 World Programming シニアデータサイエンティスト Borja Comendeiro

データサイエンティストがどのプログラミング言語を学習すべきかということはよく議論になります。SAS 言語や R、Python、SQL、Julia などにはそれぞれ支持者や批判者がいます。最良の言語は生産性を最大にして目的を達成するのを支援してくれるものと想定しておくと安全です。

組織には通常あらゆるプログラミング言語の用途がありまた、専門家がいます。つまり、組織の異なる部署では異なる言語が好まれ、その単独の部署では1つの言語を異なる作業に使用する理由があるかと思われます。

各言語はそれぞれ、その強みを持っています。

Structured Query Language (SQL)
SQL は主にデータベースとのやりとりのための言語として広く知られていいます。シンプルかつパワフルであり、しばしばデータ分析を学習するための出発点となります。データ抽出や並べ替え、要約を含むタスクにとっては全く差支えのないツールです。異質なデータソースや複数ステップもしくは手続き型プログラムを含むタスクにとっては、やっかいもしくは非現実的なものにすぐなってしまいます。

SAS 言語
SAS 言語では単純なデータ処理や高度な分析タスクを容易に行うことができ、最小限の計算リソースと数行のコードで巨大なデータを処理することができます。SAS 言語は安定した統計手法と共に拡張性の高いデータ準備をもたらします。通常はデータをメモリ上に収めなければならないという制約はありませんSAS 言語コンパイラーの商用ベンダーは、統計に関するライブラリの重要なデータや分析環境に対して高水準な対応を行っています。

R 言語
R 言語は視覚化に特化した強力な機能があり、ユーザーは最先端であったりニッチである統計分析を行うことができます。R にはオープンソースの貢献者の大きなコミュニティがあり、様々な統計パッケージのこれまでの成長を支援していますが、非常に沢山ある使用可能なライブラリを網羅することは難しいです。R 言語は一般的にはデータをメモリ上に収めなければならず、これが R がサイズの大きなデータを処理するための制限になっています。R 言語のデータ準備機能はあまり強力ではありません。

Python 言語
学生に人気で、 R や SAS 言語と比べて、より汎用的な目的のプログラミング言語です。PySpark とその API のように Python で書かれた様々な Hadoop エコシステムのコンポーネントなどビッグデータ分析ライブラリや Therano や Tensorflow のような深層学習のフレームワークなど人気のものがあります。

Julia 言語
データ言語市場に最近追加され、よく設計されており効率的に実行することができます。幅広いユーザー基盤や他の言語のエコシステムには欠けています。

その他の言語
上記の言語はデータサイエンスに関連する最も一般的なものです。多様な言語でデータ分析を行うことが可能で、Java や C Fortran、Octave、SPSS その他には数値・統計解析のための大きなライブラリがあります。

データサイエンティストがデータサイエンスのタスクの各局面で最良のツールを使用するプログラムを作成できることが理想的です。SQL データベースからデータを読み取り、SAS 言語で FREQ プロシジャを使用して数行に渡る度数分析を行い、その結果を R の GGPLOT2 を使用して描画すると想像してみてください。もしくは、高度に熟練した SAS 言語のアナリストが、 Python の高度なスキルを持っている新入社員が活用できるデータ準備のワークフローを生成できると想像してみてください。

R と Python の切り替えは、Python の rpy2 ライブラリや R の RPython パッケージなどの拡張機能を使用してある程度行うことができます。

しかし、ツールの切り替えはしばしば、1つのツールから他のツールへのデータのシリアライズとデシリアライズの実行や、ワークフロー管理ツールを使用して異なる言語を結合させたり、もしくは管理が難しくなりがちな、複雑なバッシュやシェルスクリプトの生成を行ったりすることが必要になります。この作業は非常に煩雑でエラーを発生させがちで、エンドツーエンドの大きくて複雑なスクリプト以外ではめったに行われることがありません。

このような状況では WPS は理想的な総合データサイエンスプラットフォームであり、データサイエンティストが同じプログラムを使用して SAS 言語や R、Python、SQL、Java を同じプログラムで同じ開発環境で記述することができます。

フィールドの1つが構造化されていないテキストデータがある顧客情報の入った大きなデータセットを持っていると想像してみてください。WPS を使用すると1つのスクリプト内で以下を結合することができます。

  • データベースと相互にやりとりする SQL
  • データ準備とレポートのための SAS 言語
  • テキストマイニングのための R
  • モデリングのための SAS 言語
  • 追加のモデリングのための Python

上記の SAS 言語でのモデリングの例は、年齢や関係の種類、教育歴と収入水準によるキャピタルゲインを予測し、年齢に応じて別のモデルを作成しています。

WPS Analytics プログラム。1つのプログラムで複数の言語。

ほとんどの顧客履歴は構造化されたリレーショナルデータベース内にあると仮定します。データベースから直接データを読み込んだり、データベースのネイティブな言語を使用できたり、前もって記述されたストアドプロシージャを起動したりもしくは、データベース管理チームが前に作成したクエリを張り付けたりできれば理想的です。もし追加のデータが Hadoop クラスター内にあるとしたら?SAS 言語を使用してデータベースへ接続し、データを読み込むことができます。例えば以下のような SQL プロシジャを使用します。

SAS 言語はインポートやマージ、フィルター、変換と再形成、欠損値の補完、検証などを含む複数のデータ準備機能と共にデータ準備を行うのに理想的です。例えば、次の SAS 言語の変換プロシジャを使用してデータセットの構造を編集することができます。


SAS 言語には、構造化されていないデータに容易に使用できる機能が多くはありません。R と Python 言語は双方とも、感情分析もしくは tf-idf 分析を実施し、モデリングのためにアウトプットを構造化されたフォーマットへ変換するための強力なフレームワークを活用することができます。SAS 言語の R プロシジャは、感情変数を導き出せる R へのデータセット送信を以下のように容易にしてくれます。

ユーザーといくつかのテキストフィールドと共にインプットを使用する。

ユーザーテキスト
ユーザー1この店では失礼な店員やレベルの低い顧客サービスなど酷い体験をしたので、絶対にもう一度訪れることはない
ユーザー2適切なサービス、スピードは遅いが、全体的には良い体験
ユーザー3信頼性、価格面で彼らのサービスに満足している

さらに詳細なモデリングやレポートで使用できる、感情スコアと共にアウトプットを取得します。

ユーザーテキスト感情
ユーザー1この店では失礼な店員やレベルの低い顧客サービスなど酷い体験をしたので、絶対にもう一度訪れることはない-0.963
ユーザー2適切なサービス、スピードは遅いが、全体的には良い体験0.158
ユーザー3信頼性、価格面で彼らのサービスに満足している0.915

Python 言語には scikit-learn と Keras など有益なモデリングパッケージや Tensorflow や、 Theano という深層学習フレームワークのための高度な API があります。SAS 言語の Python プロシジャを使用すると、同じプログラム内でこの Python の機能を活用することが容易になります。

World Programming の WPS プラットフォームでこの方法を使用することで以下のように多くの利益を得ることができます。

  • 分析プログラムのデプロイが容易である - コマンドラインを通して単独のプログラムの実行を予定したり起動することができます。
  • 設定管理やバージョン管理のためのファイルを1つだけ把握するだけでよいため、分析パイプラインやワークフローの維持が容易です。
  • いいとこどりをした異なる技術に組み込まれているライブラリを使用することで境目なく異なるスキルセットを活用できます。知的財産を保存し全般的に再利用できます。

単独の分析過程の各箇所で最も適した技術を使用すると、全ての長所を生かすことが容易になります。ビッグデータや構造化・非構造化データ、データ準備、処理速度、機械学習、AI 機能、本番環境でのデプロイメント、経費、1つの技術での制限から解放され、かつ統一性があり、管理されたフレームワークとユーザーインターフェース内でのアクセスの必要性とのバランスを取ることができます。