2020年3月29日日曜日

Dataiku Version7 新機能 : Interactive Statistics

Dataikuの最新バージョンがリリース

2020年3月16日週にDataikuの最新バージョンがリリースされました。
大きな目玉は、
  • Interactive Statistics
    • データセットの統計値(代表値)の算出・検定・分布・主成分分析・相関行列をワンクリックで表示
  • Enhanced Git Integration for Projects
    • Git(Github)との連携強化
  • Individual Prediction Explanations
    • 予測した各個別のデータがどのような変数から影響を受けたかを示す。
      (Interpretable Machine Learning:説明できる機械学習)
などです。

これまでは、Data Wringling(データ加工)やAutoML(自動的に適切なモデルを選択してくれる)などの特徴的だったのですが、今回のリリースではここ数ヶ月でトレンドとなっている「説明できる機械学習」や「Git(Github)との連携」などが組み込まれており、現場で機械学習を使う人、結果を解釈して判断をするマネージャー以上の人達にとっては嬉しい機能が盛り込まれています。

これから一つずつどのような機能がリリースされたのかを紹介していきます。

Interactive Statistics

これまでのDataikuでは、既存のデータセットの分析(代表値・分布など)を取得しようとすると、カラムレベルでAnalyzeをしたり、Chart タブを使いグラフを作成して、使おうとしているデータの特徴を掴む必要がありました。これらの機能は嬉しい反面、一つずつ選択する必要があり、面倒な部分もありました。

今回のバージョンアップで、そういった面倒な作業を行わなくても統計値を集計できるようになりました。また合わせて検定も行えるように実装がされています。

Statisticsの種類

これからは、みなさん大好きな iris(アヤメのがくの長さ、花びらの長さのデータ)を使って紹介します。ちなみにこのデータセットはRStudio から AWS S3に保存して、Dataikuで読み出しています。RStudioからAWS S3へのエクスポートの仕方はこちらの記事を参考にしてください。

データセットをインポートした後、インポートしたデータセット開くと、画面上のメニューに「Statistics」が追加されています。ここからInteractive Statisticsを実行ができます。


このStatisticsをクリックすると、どの分析をするかを聞かれます。
水色背景で記載をどのような分析ができるかを追記しています。


Univariate Analysis

まずは、Univeriate Analysis(一変量統計)を選択してみましょう。
Univariate Analysisを選択すると、以下のように変数を選択することができます。
この場合はすべての変数を選択しています。(左側の1 available variables から右側のVariables to describeに各変数をドラッグアンドドロップできます)
また、Optionsでは作成するチャートを選択できます。

選択後、右下の「CREATE CARD」をクリックすると実行され、以下のようなチャートが自動的に生成されます。数値項目については箱ひげ図や四分位点、Percentileが表示され、テキスト項目(グルーピングに使う項目)は棒グラフとFrequecyが表示されます。

また、あるグループごとで集計した結果を見たい場合もあるかと思います。
その際は、Splitを使います。
Splitを使ってみると、グループごとで集計して統計値を返してくれます。
今回はirisのデータの中のSpeciesを使ってグループごとに集計をしています。
同じチャートがこの後設定した数値変数ごとで続きます。


RやPythonを使うと一つ一つの集計やチャート作成にコードを作成する必要がありますが、このStatisticsを使うとコードを書かずともこのような数字・チャートを作成することが可能です。

Statistical Test

次はStatistical Test、日本語だと「検定」になります。今回のバージョンアップで利用できるようになった検定方法は以下となります。


今回は比較的よく使うであろう、t検定(Two-sample test > Student t-test)を行ってみます。二つのグループの平均値に違いがあるかどうかを検定します。

Two-sample test から Student t-test を選択すると、以下のような画面が表示され、それぞれ変数を選択し、比較したいグループを入力します。
今回は、分析対象として、Sepal.Length を選択し、比較カテゴリはSpecies内のsetosa と versicolor を選択しています。この2つのグループのSepal.Lengthの平均値が異なっているかどうかを検定します。
右下のCREATE CARDをクリックすると、以下のような結果が表示されます。
一番下に結果が表示され、この2つのグループの平均値は異なるということがわかりました。

Correlation Matrix

相関行列です。統計を始めたばかりの人にはあまり馴染みが無いかもしれませんが、相関係数を行列形式で表示し、どれとどれの変数の相関が強いのかをひと目で分かるものです。
Correlation Matrixを選択すると、以下のような画面からスタートします。
相関行列を作成したい変数をVariablesに移したら、右下のCREATE CARDをクリックします。そうすると、以下のような相関行列が表示されます。

こちらもUnivariate Analysisと同様にSplitをすることができます。
以下は上で作成した相関行列をSpeciesで分割した結果となります。種類によって相関行列の値が異なることがひと目で分かるかと思います。

Principal Components(主成分分析)

最後は、主成分分析です。変数をまとめて(縮約)して解釈をしやすい形にしてくれる分析手法になります。
Principal Components を選択し、どの変数を対象にするかを選びます。今回は数値項目すべてを選択しました。

必要な変数を選択したら、いつものように右下のCREATE CARDををクリックすると、以下のようなチャートが作成されます。
PCAを行ったことがある方はご存知かもしれませんが、左側のチャートが第一主成分 〜第四主成分までを表し、線グラフが累計割合を示しています。
下のグラフは各変数ごとに第一主成分〜第四主成分がどのような構成になっているかを示しています。

これまで紹介した一部の内容が一つのWorkSheet 単位にまとめられます。このWorkSheetは新規に追加したり、複製させることができます。


また他の人とデータセットの分析結果を共有したいと場合は、「︙」 をクリックし、Publishが出てくるので選択します。そうすると、どのDashboardに掲載するかの画面が表示されます。選択し終わると、今回作成した分析結果をDashboardに取り込むことができ、共有することが可能です。


 今回作成した結果(PCA・t検定・一変量統計の結果)を一枚のDashboardに取り込むことができました。これを他のユーザーと共有することで、どのようなデータセットなのかが他のユーザーもひと目で分かります。

まとめ

今回のバージョンアップの目玉の一つである、Interactive Statistics はこれまでRやPythonで一つずつコーディングが必要だった作業を、変数選択するだけで集計・チャートを作成してくれるだけでなく、検定や主成分分析もサポートしています。

データサイエンスで大事な作業として、分析対象のデータがどのような分布をしているかを理解するのが大事で、この機能を使うことで探索の時間が短縮されるのではないかと感じました。

次回以降は残り2つの紹介をしていきます。

2020年3月28日土曜日

RStudioからAWS S3 へオブジェクトをUpload、Download

RStudioからAWS S3へはいつかは試してみなければと思いながらだいぶ日が経ってしまったが、やっと試せるときがきたので、まとめてみました。






























IAMを使って認証情報を作成する

まずはともあれ、AWSのアカウントが無いと始まりません。AWSのアカウントを作成して、IAMにアクセスしてAWS S3にアクセスできるユーザーを作成してください。
この際、重要になるのが「AWS_ACCESS_KEY_ID」と「AWS_SECRET_ACCESS_KEY」です。これらの情報はこの後で使います。

{aws.s3}パッケージとSys.setenvへの登録

次にRStudio上で、{aws.s3}パッケージをインストールします。(install.packages() , library()を利用してください)
その後、上記で取得したAIMの情報を以下の内容に追記します。


Sys.setenv("AWS_ACCESS_KEY_ID" = "mykey",
           "AWS_SECRET_ACCESS_KEY" = "mysecretkey",
           "AWS_DEFAULT_REGION" = "us-east-1")

AWS_DEFAULT_REGONはAWS S3はグローバルで共通になっており、特にしてする必要はありまませんが、私はEC2を使う際に利用しているリージョンを指定しました。

接続できているか確認

うまく接続できているかを確認してみましょう。
RStudio上で、AWS S3のバケットがうまく取得できているかを確認します。

bucketlist()

の関数を実行すると、IAMで作成したユーザーがアクセスできるバケットのリストが参照されているはずです。

RオブジェクトのUpload

ここまでくれば、あとは実際にRの関数を適応していくだけです。

まずはみんな大好きirisデータフレームをAWS S3へUploadしてみます。
コマンドは以下を実行します。

s3save(iris, bucket = "[bucket_name]" , object = "iris.Rdata")

そうすると、AWS S3画面上に.Rdata ファイルが見えるはずです。
この中にirisが入っています。

RオブジェクトのDownload

次に、AWS S3にあるRオブジェクトをRStudioの環境にダウンロードします。

s3load("iris.Rdata" , bucket = "[bucket_name]")

この関数でirisが入っている.Rdataをダウンロードし、RオブジェクトがRStudioの環境にロードされます。

ローカルにあるデータファイルのUpload

RStudioで作業をしていると、CSVファイルなどの様々なファイルを作成することがあるかと思います。その場合もこのパッケージを使えばAWS S3へファイルをアップロードが可能です。

irisをwrite.csv()でCSVファイルに作成をしておいて、以下のコマンドを使ってCSVファイルをアップロードします。

put_object(file = "iris.csv" , object = "iris_from_RStudio.csv", bucket = "[bucket_name]")

file= にはアップロードしたいファイル名、object = には、AWS S3のオブジェクト名、bucket = にはAWS S3のバケット名を指定します。
今回はfileとobject の名前は異なってつけています。AWS S3の画面にはobject の名前が表示されます。

AWS S3にあるデータファイルのDownload

次にAWS S3 のデータファイルをダウンロードします。

save_object("iris_from_RStudio.csv", file = "[file path]" , bucket = "[bucket_name]")

関数がsave_objectとなっているので、わかりにくいですが、この関数を使って、AWS S3 → ローカルのファイルパスにファイルをダウンロードします。ファイル名を指定するだけだと、getwd() で表示されるディレクトリに保存されます。