データサイエンスの一般的な用途


日付: 2020-05-18 閲覧数: 669



今回はデータサイエンスについて面白い情報と考慮しても良いことを共有したいと思う。単刀直入だが、データサイエンスの定義からデータサイエンスの底知れぬ海に飛び込もう。


データサイエンスとは


インターネットは革命を起こすデータサイエンスと人工知能の話に溢れている。金融関連サービスにおいて個人のニーズに合わせたサービス、不正防止、リスク管理、ポートフォリオ分析と取引戦略への応用が挙げられる一方、通信ビジネス、販売動向予測、オーダーメイド治療、予知保全を下支えるデータサイエンスについても記事をたくさん読める。


このような用途もニューラルネットワークを実現するアルゴリズムも決して新しくないが、近年、AIの製品化も進み、専用ハードウェアのコストも下がり、計算コストの高いデータサイエンスをAPIを用いることによって容易に導入できるようになったのである。


機械学習とデータサイエンスを定義


データサイエンスに精通していない読者の為にいくつかの専門用語を説明したいと思う。


データサイエンスを用いた情報処理とは、いったいいかようなものだろうか?基本的には、様々な情報源からのデータを変換し、意思決定の為に数理モデルと学習を使用すること指す。その結果、意思決定を自動的に行えるようなり(検索エンジン、不正販売防止など)、人間の意思決定を下支えるデータサイエンスはポートフォリオ分析や企業向けの融資の交渉時に用いられることもある。


アルゴリズム、実装、ビジネス洞察の分野の架け橋となった専門知識のサイエンティスト稀ではないし、大学時代の研究活動を楽しんでいた工学者が博士課程を卒業したのち最高技術責任者となりAIに基づいたアルゴリズムの開発に携わる天才科学者もたくさんいる。彼らの指導によって会社の専門家がアルゴリズム実装、研究、情報処理、在庫管理、ソフトウェアとアプリ開発といった課題を容易に分割し、その進捗を報告し、場合によって自動的に実行できるようになる。


それでは専門用語をいくつか学んでおこう。


機械学習:”明示的にプログラムしなくても学習する能力をコンピュータに与える研究分野” ー アーサー・サミュエル


この分野をさらに分けることができる:


機械学習の場合は、ラベル付きのデータを用いた学習を行う。例題からの学習とも言う。教師あり学習(英: Supervised learning)の場合はモデルを学習させる時に入力と出力データも事前に用意されている。一方、教師なし学習の目的は、入力データの背後に存在する本質的な構造を明らかにすることだ。


ディープラーニング(深層学習、英:Deep Learning)とは、画像、文章、信号や音声データを識別するために学習させるコンピューター・モデルのことを指す。このようなモデルの学習を行う時に巨大なラベル付きデータと多層の人工ニューラルネットワークが用いられる。


金融業界で用いられるディープラーニングの実例


郊外の駐車場の衛星画像の特徴を抽出するために畳み込みニューラルネットワークを使用し、台数の集計と販売業績の分析を下支える仕組み


長・短期記憶ネットワークを使い、ニュース、ツイート、収益発表の内容を処理し、その感情を認識することによって取引戦略を立てる仕組み


強化学習システム:この方法では人間的な試行錯誤によって、成果を導く経路を徐々に教え込ませる。間違った経路を放棄するという学習方法である。このような学習システムは、複雑な人間的な行動を模倣できるため検索エンジン、販売システム、取引戦略などに用いられることが多い。なお、先進運転支援システムとして機械と人間を繋げる強化学習システムも注目を集めている。


情報処理のためになぜJavaを?


全てのプログラミング言語に魅力があるが、蓼食うむし好き好きともいうよね。


2010年から2015年頃まではPythonとRはデータサイエンス分野の覇権者となった。その前に早期の革新的なニューラルネットワークに基づいた計算手法を実装するためにはMATLABが用いられていた。PythonとRの製品化のありかたについて様々な意見が存在する。研究分野において活用できるR言語は豊かなライブラリー・システムを有する。しかし、SciPyPandasを含むTensorflowPyTorchKerasなどの主要なライブラリーはPythonからアクセス可能となっていることも事実だ。


ここ数年、Java、C++と.NETも使用されるようなってきた。


性能を出すために、前述の言語を1つに絞って開発しなければならないと言われることが多いが、必ずしもそうではあるまい。言語を選ぶ際、二点を考慮しよう:


1。既存のシステムとの統合の難度


2。本番環境でも利用可能な情報処理ライブラリーの有無


現在、だいたいどの言語を使っても高効率な情報処理ライブラリーも利用できる。Javaも良い例である。多数のJVM言語が既に存在するため、Javaを使った開発が注目を集めている。そして、C++で実装された典型的なアルゴリズムもた数多くあり、専用システムとしても知られている.NETを使って、最先端のアルゴリズムと学習モデルの実装も利用できる。なので、ある専門家にディープラーニングだとPython以外の言語はやめた方がいいと言われたら、若干の疑問を抱いてもおかしくない。


Javaの使用を主張する理由


データサイエンスの計算手法の根元は統計学、機械学習とディープラーニング(特にニューラルネットワーク)にあり、Python、RとMATLABの実装領域は他の言語にも広がっていく。例えば、Javaで下記のフレームワークを利用できる:


- DeepLearning4J:ニューラルネットワークのコンパイル、学習と展開の為のツールを含む。RL4Jの強化学習拡張を画像処理に利用でき、マルコフ決定過程とディープQネットワーク手法の実装も含む。


-ND4J: NumPyとMatlabの核心に基づき、JVMのために主要な研究用ライブラリーを含む。ディープラーニング機能もついている。


-Amazon Deep Java Library: MXNet, PyTorchとTensorFlowフレームワークに基づく機械学習とディープラーニングモデルの開発・展開。


科学的な熱意を持つ開発者には以下のためにもJavaを勧める。

企業向けの環境として知られているSAS、KNIMEとRapid MinerもJavaに基づく堅実なデータサイエンス・プラットフォームを提供することも忘れてはいけない。MATLABはAPI接続によって昔からJavaとも併用可能であり、MATLAB Production Serverを使うことでMATLABで実装したプログラムをJavaの本番環境に展開できるようになった。Java言語のソースコードでMATLAB関数を表すJavaインターフェースを定義でき、本番環境のサーバーとの接続でMATLABで生成した関数を呼び出すことも可能だ。

なお、RServeパッケージなどを使うと、R言語のソースコードをJavaで実装したプログラムに展開できる。


ということは、データサイエンスの計算手法をJavaで実装できるようになっており、場合によってJavaから他の言語の関数を呼び出すことも1つのやり方だ。


C++に一瞥すると、TensorflowとPyTorchなどを含んでPythonで実装したライブラリーはC++に基づく堅実な基盤を持っていることがわかる。


企業向けのデータサイエンスの仕組み(特に安全なデータ出力に重点を置くもの)は、Javaに基づくか、Java Virtual Machine(JVM)と切っても切り離せない関係を持つ言語(例えばScalaClojureなど)に基づくシステムである。その中で次のようなフレームワークが存在する:


Hadoop(ハドゥープ)MapReduceを用いた分散型データストレージとビッグデータ処理


Spark(スパーク):ハドゥープと同類。情報伝播も行える。


Kafka(カフカ):メッセージと情報伝播


Cassandra(カサンドラ):NoSQLデータベース


Neo4J:人気なNoSQLデータベース


ElasticsearchLuceneライブラリーに基づく分散型検索エンジン。文章入力可能。HTTPウェブインターフェースとSchemaなしJSON文章にも対応。


Javaは間違いなく分散コンピューティング環境のための優れた言語であり、安全な情報処理、変換、伝播と接続は本質的な強みとして使用でき、Sun Microsystems、Oracleと活性化したOpenJDKが確保する安全な仕組みを安心して導入できるようになった。JVMが下支える互換性を考慮した開発アプローチによって企業向けの展開過程も容易に行える。熱意を持つコミュニティによって開発されているProject Panamaを利用すると計算コストの高いCUDAOpenClに基づくライブラリーとGPUハードウェアへの扉も開く。


企業向けのソフトウェア開発のために、Javaは疑いなく有力な言語だあるが、最近データサイエンスへの応用も考慮される。Python、R、MATLABとC++を取り替える言語ではなく、無限の可能性を秘めているJavaの導入が既存の言語での開発と並行するはずだ。



コメント (0)


記事特選