Part1(↓のURL)のお遊び編に続いて、Part2です。軽く触ってみました。
http://qiita.com/azzeten/items/ba37da865deb120a296c
Part2では、人間の年齢、婚姻、収入等等のデータを使って決定木分析をしてみました。
かんたんな流れ
- dashDBにログインして、ブラウザから使えるR Studioに入る
- Rのスクリプトを書く(スクリプトの内容としては「専用ライブラリ読み込む→dashDBに接続→処理をつらつらコーディング」。以上!)
- スクリプトを走らせる!
それでは、やってみましょー
ブラウザからRの環境にログイン
左ペインの「Analytics」から「R Scripts」をクリックします。で、R Studioをクリックします。
ログイン画面が出てきますので、dashDBにログインするのに必要なIDとPWを入力します。
そうすると、それっぽいかっこよい画面が出てきます。これがR Studioの環境です。
Rのスクリプトを書く
(1)専用ライブラリ読み込む→dashDBに接続
dashDBのこのR機能(正式にはIn-DB Analytics)を利用すると、
DBのデータをクライアント側に持ってくることなく、DBの中でRを使用した分析ができるというが嬉しいポイントです。なので、それを行うためのライブラリ「ibmdbR」を読み込む必要があります。
そして次にDBに接続します。本来はDSNを自分で設定する必要があるのですが、WEBブラウザからやるとそれが必要ないみたい。
#ライブラリを読み込む
library(ibmdbR)
#DBに接続する
con <- idaConnect('BLUDB')
idaInit(con)
(2)処理をつらつらコーディング
①ADULTテーブルの内容をデータフレームという箱に入れます。
#テーブルをデータフレームに入れる
adult_df <- ida.data.frame('adult')
#データフレームの中身を確認する
adult_df
で、内容を確認するとこんな出力なのです。
SELECT "ID","AGE","WORKCLASS","FNLWGT","EDUCATION","EDUCATION_NUM","MARITAL_STATUS","OCCUPATION","RELATIONSHIP","RACE","SEX","CAPITAL_GAIN","CAPITAL_LOSS","HOURS_PER_WEEK","INCOME" FROM adult
なるほど。データそのものが入っているのではなく、SQLが定義されているようです。
これだと、データをクライアント側に持ってくるのではなくてSQLを投げる、ということになるので、確かに不要データをいちいち持ってくる必要はなさそうです。
②モデルを適用してみます。
先ほどのSQLが格納されたデータフレーム「adult_df」をdashDBの中に実装されているRの決定木モデル「idaTree」に適用します。これで、dashDBの中でごりごりと処理を進めてくれるようです。
#決定木モデルにデータを入れる
tr <- idaTree(INCOME~WORKCLASS+EDUCATION+EDUCATION_NUM+RACE+CAPITAL_GAIN+AGE,data=adult_df,minsplit=50,maxdepth=10,id='ID')
#プロット(絵を描いてみる&コンソールに文字で結果を出力する)
plot(tr)
print(tr)
#DBとの接続を閉じる
idaClose(con)
結果はこちら
参考文献