22
dashDB & R によるデータ分析 ‐In-database Analyticsによるデータ分析 基礎- 2016年5月

dashDB & R によるデータ分析 - In database Analytics 基礎編 -

Embed Size (px)

Citation preview

Page 1: dashDB & R によるデータ分析 - In database Analytics 基礎編 -

dashDB & R によるデータ分析‐In-database Analyticsによるデータ分析 基礎-

2016年5月

Page 2: dashDB & R によるデータ分析 - In database Analytics 基礎編 -

Disclaimerワークショップ、セッション、および資料は、IBMまたはセッション発表者によって準備され、それぞれ独自の見解を反映したものです。それらは情報提供の目的のみで提供されており、いかなる参加者に対しても法律的またはその他の指導や助言を意図したものではなく、またそのような結果を生むものでもありません。本資料に含まれている情報については、完全性と正確性を期するよう努力しましたが、「現状のまま」提供され、明示または暗示にかかわらずいかなる保証も伴わないものとします。本講演資料またはその他の資料の使用によって、あるいはその他の関連によって、いかなる損害が生じた場合も、IBMは責任を負わないものとします。本講演資料に含まれている内容は、IBMまたはそのサプライヤーやライセンス交付者からいかなる保証または表明を引きだすことを意図したものでも、IBMソフトウェアの使用を規定する適用ライセンス契約の条項を変更することを意図したものでもなく、またそのような結果を生むものでもありません。

本資料でIBM製品、プログラム、またはサービスに言及していても、IBMが営業活動を行っているすべての国でそれらが使用可能であることを暗示するものではありません。本講演資料で言及している製品リリース日付や製品機能は、市場機会またはその他の要因に基づいてIBM独自の決定権をもっていつでも変更できるものとし、いかなる方法においても将来の製品または機能が使用可能になると確約することを意図したものではありません。本講演資料に含まれている内容は、参加者が開始する活動によって特定の販売、売上高の向上、またはその他の結果が生じると述べる、または暗示することを意図したものでも、またそのような結果を生むものでもありません。パフォーマンスは、管理された環境において標準的なIBMベンチマークを使用した測定と予測に基づいています。ユーザーが経験する実際のスループットやパフォーマンスは、ユーザーのジョブ・ストリームにおけるマルチプログラミングの量、入出力構成、ストレージ構成、および処理されるワークロードなどの考慮事項を含む、数多くの要因に応じて変化します。したがって、個々のユーザーがここで述べられているものと同様の結果を得られると確約するものではありません。

記述されているすべてのお客様事例は、それらのお客様がどのようにIBM製品を使用したか、またそれらのお客様が達成した結果の実例として示されたものです。実際の環境コストおよびパフォーマンス特性は、お客様ごとに異なる場合があります。

IBM、IBM ロゴ、ibm.com、Cloudant、dashDB、DB2、Insight、SoftLayerは、世界の多くの国で登録されたInternational Business Machines Corporationの商標です。他の製品名およびサービス名等は、それぞれIBMまたは各社の商標である場合があります。現時点でのIBM の商標リストについては、www.ibm.com/legal/copytrade.shtmlをご覧ください。

Microsoft, Windows, Microsoft ExelおよびMicrosoft ExelロゴはMicrosoft Corporationの米国およびその他の国における商標です。JavaおよびすべてのJava関連の商標およびロゴはOracleやその関連会社の米国およびその他の国における商標または登録商標です。TwitterおよびTwitterロゴは、Twitter, Inc.の米国およびその他の国における商標です。

Page 3: dashDB & R によるデータ分析 - In database Analytics 基礎編 -

© 2016 IBM Corporation3

dashDB & R によるデータ分析のメリット

大量データ分析処理の高速化 DWHと分析環境の融合 簡単に構築。直ぐ使える。月額払い。

高速かつセキュアなデータベースエンジンの中でRを使用した分析処理を実現。

分析モデルの適用(スコアリング)

分析モデルの作成(モデリング)

分析データの準備(データ加工, 前処理)

Rプログラムで開発

データサイエンティストエンドユーザー

ビジネスへの適用、評価の実施

Page 4: dashDB & R によるデータ分析 - In database Analytics 基礎編 -

© 2016 IBM Corporation4

dashDB & Rによるデータ分析のメリット① 大量データ分析処理の高速化

• データの移動が発生しない。Rプログラムの分析処理をdashDBにオフロード。• データ参照、加工、分析モデル作成、モデル適用といった一連の分析処理をdashDBデータベース内で実行• クライアント環境のHW制約を越え、大量メモリ、並列DBエンジンを分析処理に活用。分析時間の短縮化につなげる。

大量データ分析処理の高速化:高負荷なR処理をdashDBにオフロード

大規模データ分析時の課題点

HW処理性能の問題(CPU,メモリ,ディスク) 大量データの移動による待ち時間

dashDBを使用した分析処理の高速化

大量メモリを積んだ並列DBエンジンで高速な分析大量データの移動が発生なし。

Rプログラムは自動的にSQL,プロシージャに変換実行Rで作成したオブジェクトをDB内に作成

データをクライアント側に移動させて分析作業を実施。

SQL/プロシージャ

結果

分析データ

Page 5: dashDB & R によるデータ分析 - In database Analytics 基礎編 -

© 2016 IBM Corporation5

SSD

CPU

メモリ

DB

R⇒SQL,プロシージャとして各ノードで並列実行

SSD

CPU

メモリdashDB

MPP層

Rプログラム- xxx

DB

SSD

CPU

メモリ

DB

SSD

CPU

メモリ

DB

SSD

CPU

メモリ

DB

SSD

CPU

メモリ

DB

SSD

CPU

メモリ

DB

SSD

CPU

メモリ

DB

SSD

CPU

メモリ

DB

SSD

CPU

メモリ

DB

SSD

CPU

メモリ

DB

SSD

CPU

メモリ

DB

SSD

CPU

メモリ

DB

dashDB MPP & R 処理による大量データ分析の高速化• Rプログラム実装をSQL言語、プロシージャに自動変換、データベース並列エンジンで処理を行う

⇒ 時間のかかる大量データを使用した複雑な分析処理にかかる時間を短縮化• 全ての論理コンピュータが同時に並列処理を実行し、ハイパフォーマンスとスケーラビリティを提供

・Shared Nothing MPPアーキテクチャ & インメモリカラムナーDBエンジンによる並列処理・不必要なデータ読出しをスキップ、圧縮されたデータを解凍せずに検索機能を使用

分析対象表、データフレーム表、分析モデル

物理サーバーノードは3ノードから25ノード(最大100TBまで拡張可能 :2016/04/01時点)

Page 6: dashDB & R によるデータ分析 - In database Analytics 基礎編 -

© 2016 IBM Corporation6

dashDB & R によるデータ分析のメリット② データウェアハウスと分析環境と統合

• データをロードすればすぐに分析できるクラウド環境(クラウドデータウェアハウス + R分析環境の統合)• 分析者が直接データをロードできる、わかりやすいWeb管理コンソールと操作性• 分析者にとっては通常のRプログラムを書くイメージでデータベースへの処理プログラムを開発可能。

データウェアハウスと分析環境の統合データをロードすれば、すぐに分析を開始できる統合分析環境

②.dashDB R Studio Serverを使用

Webブラウザ

RStudioServer

dashDB クラウド環境

R Studio Serverへ接続

dashDB

Web

console

①.dashDB web Console上を使用

Webブラウザ

dashDB web console interface for R

dashDB

③.クライアント

R Studioより接続

R Studio

結果を表示

結果を表示

Page 7: dashDB & R によるデータ分析 - In database Analytics 基礎編 -

© 2016 IBM Corporation7

クラウド環境としてのメリット:簡単に構築。すぐ使える。月額払い。

dashDB & R によるデータ分析のメリット③ 簡単に構築。すぐ使える。月額払い。

• クラウド上のフルマネージドサービスとして提供され、インフラへ投資は必要なく、迅速に結果を得る。

・ ボタンを数回クリックすれば、自分だけのデータウェアハウスを用意。

• 物理設計、パラメータ、インデックスチューニングといった作業は不要。ロードしたらすぐ分析にかかれる。

・ データウェアハウスの維持管理ではなく、本当に必要な作業に集中。

• 月額単位での支払いのため、初期投資を抑えて、ビジネス状況に応じた柔軟な選択が可能。

・ 使用負荷、スピード、目的に応じてノード追加による拡張が可能 ※1

※1 MPPノード構成時。

Page 8: dashDB & R によるデータ分析 - In database Analytics 基礎編 -

© 2016 IBM Corporation8

ユースケース例:適材適所、用途に応じたデータマート、分析環境の提供

• セントラルウェアハウス(例:Netezza)から分析する

用途に合わせて適材適所にデータマートを配置。

• オンプレミス、クラウドに関わらずデータソースに

対してR分析言語を使用したIn-DB分析が可能

データマートN3001-001

アーカイブ/非構造化データ

セントラルDWH

N3000-010

用途別の切り口ユーザー自由管理DWH分析

SQL insert ofall daily activity

Discover/exploreHistorical data

FluidQuery

ETL処理

トランザクション

廉価DWH基盤/Hadoop基盤

ハイブリッドクラウドロジカルデータウェアハウス ソリューション

Puredata System for Analytics(Netezza) & dashDBIn-DB Analytics Ready

• IBM FluidQueryにより問い合わせを各データソース

にオフロード。ロジカルデータウェアハウスを実現

Page 9: dashDB & R によるデータ分析 - In database Analytics 基礎編 -

© 2016 IBM Corporation9

dashDBを使用したR分析で実現できること

1RプログラムからDB操作, 加工処理をin-databaseで実行

・ 表、ビューに対する参照、結合、削除、更新、サンプリング・ データフレームに対する各種処理(集計、計算、値の取得)・ SQL文を使用したデータ取得

2・ K-Means分析・ 決定木分析・ 相関ルール分析・ 線形回帰分析・ Naive Bayes・ 系列パターン&ルール・ k近傍法

Rプログラムから分析モデルの作成、適用をin-databaseで実行

K-means Clustering Lear Regression Decision tree

ibmdbR: IBM in-Database Analytics for R :https://cran.r-project.org/web/packages/ibmdbR/index.html

Page 10: dashDB & R によるデータ分析 - In database Analytics 基礎編 -

© 2016 IBM Corporation10

dashDB & R を使用したデータ分析 -Rコードの書き方1. 開始-

1.dashDB in-database Analyticsを使用したR分析のためにはibmdbRとRODBCライブラリのインストールが必要です

install.packages("ibmdbR") ※ CRANライブラリよりダウンロードすることが可能です。

Version: ibmdbR 1.47.1 (2015/12 時点)

Depends: R バージョン 2.15.1以上, methods, RODBC, Matrix, arules

Imports: MASS, rpart, rpart.plot, ggplot2

library(ibmdbR) driver.name <- “{ODBCドライバ名}" #BM DB2 ODBC DRIVERdb.name <- “データベース名" host.name <- “ホスト名" port <-“ポート番号" user.name <-“ユーザー名”pwd <- “パスワード" con.text <- paste("DRIVER=",driver.name, ";Database=",db.name, ";Hostname=",host.name, ";Port=",port,

";PROTOCOL=TCPIP", ";UID=", user.name, ";PWD=",pwd,sep="") # Connect to using a odbc Driver Connection string to a con <- odbcDriverConnect(con.text)

2-1. 次にRODBCを使用してdashDBに接続設定を行います。

con <- idaConnect(“dashDB”, “”, “”)

2-2.ODBCデータソースとして事前に接続定義を作成している場合は下記構文から接続可能です。

※dashDBはODBCシステムリソース名。接続定義は事前に記載必要

Page 11: dashDB & R によるデータ分析 - In database Analytics 基礎編 -

© 2016 IBM Corporation11

dashDB & R を使用したデータ分析 -Rコードの書き方2. 初期化、終了-

idaInit(con)

3.dashDBへのODBC接続定義を初期化します。

4.例としてORDER_DETAILS表を使用したIn-DBデータフレーム(IDAデータフレーム)オブジェクトを作成。

orderDetails <- ida.data.frame('ORDER_DETAILS')

5.orderDetails データフレームをdimにて件数確認を実施。

dim(orderDetails)

[1] 44602300 2 ※ select count(*) from 表クエリをDBにオフロード

6.接続しているDBの中にある表を参照する場合は、下記IDA関数が使用できます。

idaShowTables(con)・・・

7.終了時はRODBC接続をクローズします。

idaClose(con)

※order_Details表のIn-DBデータフレームに格納In-database Analytics用オブジェクト= IDAida.data.frame(‘表名’) でアクセスします。

Page 12: dashDB & R によるデータ分析 - In database Analytics 基礎編 -

© 2016 IBM Corporation12

dashDB & R を使用したデータ分析 -Rコードの書き方3. 参照、加工、結合

例: 複数表のIDAデータフレームを結合して結果を参照する

#2つの表から参照する列データのみを抽出したIDAデータフレームを作成orderDetails <- ida.data.frame(‘ORDER_DETAILS’)[,c('PRODUCT_NUMBER','ORDER_NUMBER')]product <- ida.data.frame('PRODUCT')[,c('PRODUCT_NUMBER','PRODUCT_TYPE_CODE')]

#orderdetailsとproducts IDAデータフレームをproduct_number列の値で結合orderDetails2 <- idaMerge(orderDetails,product,'PRODUCT_NUMBER')head(orderDetails) PRODUCT_NUMBER ORDER_NUMBER PRODUCT_TYPE_CODE

1 68110 700193 9612 70240 700193 9613 71110 700193 961・・・

※select xxxx,yyy,zzz from order_details, o products p where o.product_number = p.product_number;

例: IDAデータフレームから条件指定により特定のデータのみを参照する

#PRODUCT表から製品カテゴリがthinkpadのものだけ抽出するprod <- ida.data.frame('PRODUCT')prod2 <prod[prod$prod_name==‘thinkpad’,c('PRODUCT_NUMBER','PRODUCT_TYPE_CODE‘,’PROD_NAME’))]

※select product_number,product_type_code,prod_name from product where prod_name = ‘thinkpad’;

Page 13: dashDB & R によるデータ分析 - In database Analytics 基礎編 -

© 2016 IBM Corporation13

dashDB & R を使用したデータ分析 -Rコードの書き方4. オブジェクト作成・削除-

例: 既存表、ビュー、既存モデルの削除の記述

#IDAデータフレームの作成idf <- ida.data.frame('IRIS')

#IDAデータフレームを参照するVIEWを作成vname <- idaCreateView(idf)

#VIEWの削除idaDropView(vname)

#実表の削除idaDeleteTable(‘IRIS’)

#モデルの削除idaDropModel(modelName)

#モデルが存在している場合は、該当モデルを削除if(idaModelExists(modelName)) {

idaDropModel(modelName);}

idaExistTable()で同じ実装が可能if(idaExistTable(‘table name’)) {idaDeleteTable(‘table name’);

}

Page 14: dashDB & R によるデータ分析 - In database Analytics 基礎編 -

© 2016 IBM Corporation14

dashDB & R を使用したデータ分析 -Rコードの書き方5. サンプリング、クエリ-

例: IDAデータフレームのデータをランダムサンプリングで抽出

iris.ida <- ida.data.frame('IRIS')df <- idaSample(iris.ida,6,'Species‘)df

SepalLength SepalWidth PetalLength PetalWidth Species X Y Z

1 6.4 2.7 5.3 1.9 virginica 9.1 a 6.4E0

2 5.8 2.7 4.1 1.0 versicolor 8.5 a 5.8E0

3 5.0 3.3 1.4 0.2 setosa 8.3 b 5.0E0

4 6.3 2.9 5.6 1.8 virginica 9.2 a 6.3E0

5 6.1 3.0 4.6 1.4 versicolor 9.1 a 6.1E0

6 5.1 3.3 1.7 0.5 setosa 8.4 a 5.1E0

idaSample()ファンクションにより、iris.ida データフレームのSpecies列のデータをランダムで

6レコードサンプリング。結果を表示する。

例: 接続しているDBに対して直接SQL文を記載して、DBに処理させることも可能。(ただしクエリ結果セットが大きくなる場合は、データ取得に時間がかかるため使用時は注意)

p <- IdaQuery (“select * from product”);

P

PRODUCT_NUMBER BASE_PRODUCT_NUMBER INTRODUCTION_DATE

1 3110 3 2001-02-15 00:00:00.000000

2 20110 20 2003-03-05 00:00:00.000000

3 92110 92 2001-02-15 00:00:00.000000

Page 15: dashDB & R によるデータ分析 - In database Analytics 基礎編 -

© 2016 IBM Corporation15

dashDB & R を使用したデータ分析 -Rコードの書き方6. リスト-

例: ida.list 複数ユーザーでIDA Rオブジェクトを共有させる (セッション間でのIDA Rオブジェクト共有)

#他のユーザーが参照できない占有のコンテナの中にRオブジェクトを保存r <- ida.list(type='private')

# データベースの全てのユーザーによって参照可能なRオブジェクトとして保存r <- ida.list(type='public')

# 特定のユーザーに対して参照可能なRオブジェクトを保存r <- ida.list(user='userA')

作成したオブジェクトはRプログラムのlist構文と同じように活用できます。

※ オブジェクトはアクセスしているスキーマの表として保存されます。

Page 16: dashDB & R によるデータ分析 - In database Analytics 基礎編 -

© 2016 IBM Corporation16

参考: dashDB & R を使用したデータ分析 -Kmeans分析-

library(scales)library(grid)library(ibmdbR)con <- idaConnect("dashDB", "", "")idaInit(con)

# 既にモデル、表が存在している場合は削除するif(idaExistTable('KMEANS_OUT_TBL'))

idaDeleteTable('KMEANS_OUT_TBL')if(idaModelExists('KMEANS_MODEL'))

idaDropModel('KMEANS_MODEL')#IDAオブジェクトの読込み(明細データを5億件を顧客単位で製品カテゴリごとに売上金額平均を算出した表)idf <- ida.data.frame('RECEIPT_AVG_500M')#IDAオブジェクトに対するK-meansモデル作成(モデリング)bkm <- idaKMeans(idf,maxiter=3,id="CUST_CODE",outtable="KMEANS_OUT_TBL", modelname="KMEANS_MODEL")#IDAオブジェクトに対するK-meansモデルを適用(スコアリング)pred <- predict(bkm,idf,id="CUST_CODE")head(pred)#顧客マスタとの結合dataWithClusters <- idaMerge(cust,pred,by.x="CUST_CODE",by.y="ID")head(dataWithClusters)idaClose(con)

Page 17: dashDB & R によるデータ分析 - In database Analytics 基礎編 -

© 2016 IBM Corporation17

参考: dashDB & R を使用したデータ分析 -相関ルール・バスケット分析-

library(arulesViz)library(ibmdbR)con <- idaConnect('dashDB','','') idaInit(con)# 分析対象表の加工、作成 (オーダー明細表と製品表を結合)orderDetails <- ida.data.frame(‘ORDER_DETAILS_100M')[,c('PRODUCT_NUMBER','ORDER_NUMBER')]products <- ida.data.frame('PRODUCT')[,c('PRODUCT_NUMBER','PRODUCT_TYPE_CODE')]orderDetails2 <- idaMerge(orderDetails,products,'PRODUCT_NUMBER')head(orderDetails2)# 相関ルール分析モデルの作成r <-idaArule(orderDetails2,tid="ORDER_NUMBER",item="PRODUCT_TYPE_CODE",minsupport=0.05,maxlen=2,nametable = "PRODUCT_TYPE",namecol = "PRODUCT_TYPE_EN")# 相関ルール分析モデルの適用q <- idaApplyRules(idaGetModelname(r),orderDetails2,"ORDER_NUMBER","PRODUCT_TYPE_CODE")head(q) # オブジェクトの削除(オプション)idaDeleteTable(orderDetails2)idaDropModel(idaGetModelname(r))idaClose(con)

Page 18: dashDB & R によるデータ分析 - In database Analytics 基礎編 -

© 2016 IBM Corporation18

R構文 補足説明idaConnect, idaClose 既存のデータベースに対してIDAを使用するために接続を行う。接続を閉じる

idaInit In-database Analytics 機能の初期化を行う

ida.data.frame IDAオブジェクトを作成する(IDA=in-database analytics)

as.ida.data.frame ローカル環境にあるRデータを使用してIDA オブジェクトを作成する

ida.col.def IDAオブジェクトに対して列を追加定義する

Ida.list IDAオブジェクトとしてRオブジェクトを表に保存する。Private, Public, User と参照範囲を指定可能

idaCreateView, idaDropView IDAオブジェクトとしてビューを作成する。ビューを削除する

idaDeleteTable,idaExistTable, IDAオブジェクトして参照している表の削除、存在の有無の確認を行う

idadf,idaSave,idaUpdate データベースに対して問い合わせ、保存、更新を実行する。

idaSample ランダムサンプルを生成させる

idaMerge 2つの表を結合させた結果を取得する

idaKMeans K-means分析モデルを作成する

idaLm 線形回帰分析モデルを作成する

idaNaiveBayes ネイブベイズ予測分析モデルを作成する

idaTree 決定木分析モデルを作成する

idaRulesidaApplyRules

相関ルールモデルを作成する作成した相関ルール分析モデルの適用を行う

idaRetrieveModel データベースからモデルを取り出す

idaListModels, idaModelExists データベース中にあるモデル一覧を取得する。データベースにモデルが存在するか確認する

idaGetModelName データベース中にあるRモデル名を取得する

idaDropModel データベース内に作成したRモデルを削除する

idaShowTables データベース内にある表の一覧を取得する

colnames, cor, cov, dim, head, length, max, mean, min, names, print, sd, summary, var

これら関数は通常のデータフレームと同様にIDAデータフレームでも使用が可能。

dashDB & R を使用したデータ分析 -IDA dataframeを使用したR構文(抜粋)-

Page 19: dashDB & R によるデータ分析 - In database Analytics 基礎編 -

© 2016 IBM Corporation19

32

①.dashDB Login ⇒ Analytics ⇒ R Scripts ⇒ ボタンをクリック+

②.Schema、Table Name、Columnsを選択。 R Script上に選択した表。

※Rスクリプトが自動的に生成され、ibmdbRパッケージが自動的に読みこまれます。

③. Rプログラムを記述、ファイルをsaveで保存。Submit にて実行

※予め分析対象の表はdashDB上に存在しており、データはロードされている必要があります。

参考: dashDB Web Console環境を使用した分析の始め方

Page 20: dashDB & R によるデータ分析 - In database Analytics 基礎編 -

© 2016 IBM Corporation20

参考:R Studio Server環境を使用した分析の始め方

①.dashDB Login ⇒ Analyticsタブをクリック ⇒ R Studio ボタンをクリック

②.R Studioログイン画面がブラウザ上に立ち上がるため、

dashDB ユーザー名、パスワードでログイン

③. R Studio Cosoleを使用してRプログラムの開発をおこないます。

1 2 3

Page 21: dashDB & R によるデータ分析 - In database Analytics 基礎編 -

© 2016 IBM Corporation21

参考資料

Qiita: BluemixでAnalytics 〜dashDBをRから使ってみるhttp://qiita.com/saboten10/items/57c3ebb882656a9c5c35

dashDB Knowledge Center : Analyzing with R https://www.ibm.com/support/knowledgecenter/SS6NHC/com.ibm.swg.im.dashdb.doc/learn_how/explorer_Dynamite.html

Developer works: Use dashDB with Rhttps://developer.ibm.com/clouddataservices/docs/dashdb/analyze/use-dashdb-with-r/

Developer works: Publish apps that use R analysis with Shiny and dashDBhttps://developer.ibm.com/clouddataservices/docs/dashdb/analyze/publish-apps-that-use-r-analysis-with-shiny-and-dashdb

Developer works: Perform market basket analysis using dashDB and Rhttps://developer.ibm.com/clouddataservices/docs/dashdb/analyze/perform-market-basket-analysis-using-dashdb-and-r/

Developer works: Connect R Commander and dashDBhttps://developer.ibm.com/clouddataservices/docs/dashdb/analyze/connect-r-commander-and-dashdb/

Page 22: dashDB & R によるデータ分析 - In database Analytics 基礎編 -

© 2016 IBM Corporation22

Analytical Platform and CDS Technical Sales

[email protected]

For questions about this document, please contact

Yasutaka Emoto