dashDB & Rを使ったデータ分析 In-database Analytics を試す。


###**dashDB & Rを使ったデータ分析 -In-database Analytics-**
***
今回からdashDBとR言語を使用したデータ分析に関連する内容を投稿していきたいと思います。昨今エンタープライズ用途で大量データ分析を行う際に、新たなキーワードとして「In-database Analytics」が出てきています。データ分析言語としてRが非常にパワフルであることは言うまでもありませんが、Rを使用した分析環境に存在する制約、課題を解決するアプローチの1つとして昨今注目をあびています。そこで今回はIn-database Analyticsを備えたクラウドデータベースであるdashDBとRを使ったデータ分析を試してみたので、そのメリットや使い方をまとめて投稿していきます。

###**従来型のデータ分析環境とIn-database Analyticsを使用した分析環境の違いとは?**
***
通常、Rでデータ分析を行う場合、分析対象のデータが格納されているデータベースにRODBC等でアクセスを行い、分析用サーバーもしくはクライアントPC上で該当データをデータフレームオブジェクトに格納した上でデータ分析を行います。この場合、分析対象データが大きくなるとデータを取得してくる時間(ネットワークデータ転送時間)に長時間かかったり、クライアント環境HW制限からデータ分析処理そのものが非常に時間がかる場合があります。(例:クライアント側のCPU処理能力、メモリ不足、ディスク性能にも起因する)もちろんデータ量が大きくなければ、クライアント上のメモリにも入りますし、データ転送時間も大したことないため、全く問題ありませんが、大量データもしくは全量データを使用した分析を行いたい場合には話が変わってきます。

それに対してdashDB In-database Analyticsは、Rプログラムで使用されるデータフレームへの処理をdashDBの中で行わせることができます。つまりdashDB側からデータを持ってくるのではなく、dashDBの中で大量データの分析処理時間の短縮を狙ったソリューションがいわゆる In-database Analyticsとなります。使ってみた実感としては、従来のRを使用したデータフレーム処理と使用感を大きく変えずに分析処理を実行できるところもメリットにもなると思います。

![R分析_3.png](https://qiita-image-store.s3.amazonaws.com/0/94920/8a0f3e78-04b4-ac56-23e2-1bef9db8849f.png)

![R_分析1.png](https://qiita-image-store.s3.amazonaws.com/0/94920/6d1f81ab-e763-3b78-05c8-d39526131900.png)

###**dashDB データウェアハウスと分析環境との統合**
***
dashDBとRを使用したデータ分析環境のユニークな点として、分析する人がすぐにデータ分析に取りかかれるような環境が提供されている点です。Rを使用した分析としては、クライアント環境にRGUIやRStudioを入れて分析することが多いと思いますが、dashDBを使用したデータ分析としては下記3パターンから分析環境を選択することができます。またクラウド上で提供されるフルマネージドのサービスとして提供されるため、面倒な構築作業が不要、すぐに始められて、初期投資が抑えられるというポイントがあります。

![R_分析2.png](https://qiita-image-store.s3.amazonaws.com/0/94920/022d1424-7cff-1a14-58ab-be42594ee257.png)

①.dashDB Web Console、②.dashDB R Studio Serverを使用するパターンは、sabotenさんが投稿している記事が使用方法含めわかりやすいので、リンク先をご紹介しておきます。
  [BluemixでAnalytics 〜dashDBをRから使ってみる - (dashDB Web Console) ](http://qiita.com/saboten10/items/57c3ebb882656a9c5c35)
  [BluemixでAnalytics 〜dashDBにR Studioから接続してみる -(dashDB R Studio Server)](http://qiita.com/saboten10/items/ad537283fb1269ecb3fa)

その他、IBM Developer Worksの記事もとても参考になります。
  [Use dashDB with R](https://developer.ibm.com/clouddataservices/docs/dashdb/analyze/use-dashdb-with-r/)
  [Connect R Commander and dashDB](https://developer.ibm.com/clouddataservices/docs/dashdb/analyze/connect-r-commander-and-dashdb/)

###**分析者でも簡単にWebコンソールからデータをロードできる仕組み**
***
dashDBのよい点はクラウド上に提供されるデータウェアハウスとして分析者、エンドユーザーにとっても分かりやすいWebインターフェイスを提供している点です。例えば分析者の方がデータをロードするといった場合に、管理者にやってもらうのではなく、分析者自身がデータロードできるような管理コンソールが用意されています。例えばAsperaやクラウドストレージを使用したデータロードも下記リンク先記事にあるようにそんなに難しい作業ではありません。

  [参考:Asperaを使用したdashDBデータロード方法 ](http://qiita.com/e33119/items/9175b084d828e77aeb66)
  [参考:AWS S3を使用したdashDBへのデータロード方法 ](http://qiita.com/e33119/items/406aa96c8a49fc84b48f)

###**dashDBを使用したデータ分析はどんなことができるのか？**
***
現時点で使用できるIn-database Analyticsとしては、Rでできる全てのことを網羅しているというわけではなく、調べた限りだと下記のような機能に対応しているようです。まだまだ使用できる分析アルゴリズムは多くはありませんが、主要な分析は含まれています。

![R_5.png](https://qiita-image-store.s3.amazonaws.com/0/94920/59799aee-67fa-7439-f446-a392edbaba66.png)

次にRプログラムにどのようなin-database Analytics関数が存在するか調査してみました。今回はよく使われそうなところざっと表で一覧にしています。こちらは主にIDAデータフレーム(IDA=In-database Analytics)に対する操作に使用できる関数を一覧しています。R-Studioにライブラリを導入してマニュアルを見る方がわかりやすいですが、ざっとどういうことができるかまとめてます。

dashDB & R を使用したデータ分析 IDA dataframeを使用したR構文(抜粋) 
![R_6.png](https://qiita-image-store.s3.amazonaws.com/0/94920/99b5d15a-0fac-93d0-299e-98a94f39bcd6.png)
![R_7.png](https://qiita-image-store.s3.amazonaws.com/0/94920/25fb7962-a8c3-c3e4-65a9-6d8d2f29ddc2.png)

詳細はこちらを参照：ibmdbR: IBM in-database Analytics for R
https://cran.r-project.org/web/packages/ibmdbR/index.html

###**まとめ**
***
今回はdashDB & R を使ったデータ分析のメリットや何ができるの？という点をサマリーしてまとめてみました。次回以降はdashDB In-database Analytics関数を使用したRプログラムの記載の仕方フォーカスしてR Studioを使用したデータ分析の流れをご紹介したいと思います。