Azure Machine LearningをPowerShellで操作してみた

今回から3回にわたり、
Azure Machine Learning (Azure ML)をPowerShellで操作するモジュール「AzureMLPS」をご紹介します。

「AzureMLPS」はこれまでAzure ML Studioを使ったGUI操作でしか利用できなかった
Azure MLをCLIで利用することができるため、
コマンドによるバッチ処理や自動化といった利用方法が可能になります。

今回は第1回として、AzureMLPSモジュールの設定と基本操作についてご紹介します。

※ AzureMLPSは2016年8月現在ベータ版のため、仕様が変更される場合があります。
また、AzureMLPSの使用にはPowerShell 4.0以上の環境が必要になります。
Windows 7を使用している場合にはPowerShellのアップデートが必要になる場合があります。

AzureMLPSモジュールの設定

PowerShellでAzure MLを操作するにあたり、下記のURLから「AzureMLPS.zip」をダウンロードしておきます。
今回はAzureMLPS Beta 0.28を使用しています。

ダウンロードはこちらから

「AzureMLPS.zip」を展開すると、PowerShellモジュールの「AzureMLPS.dll」とともに使用するWorkspaceの設定ファイル「config.json」が同梱されています。
「config.json」をテキストエディタで開くと、「Location」、「WorkspaceId」、「AuthorizationToken」
の3つの情報が必要になることが分かります。

上述の3つの情報をAzure ML StudioのWorkspaceのページから取得していきます。
「Location」はAzure ML Studioの画面右上のWorkspaceリストの「REGION」から、
「WorkspaceId」は「SETTINGS」からそれぞれ取得することができます。

また、「SETTINGS」の「AUTHORICATION TOKENS」タブから「AuthorizationToken」が取得できます。
「PRIMARY」、「SCONDARY」の2つがありますがどちらを使っても構いません。

Workspaceの情報を取得したら、「config.json」にWorkspace情報を入力し、保存します。

以上がAzureMLPSモジュールの初期設定になります。

Azure MLの操作とExperimentの実行

初期設定が済んだので、PowerShellを使って実際にAzure MLを操作します。
PowerShellを起動したら、AzureMLPSの格納されたフォルダまで移動し、以下コマンドを実行してモジュールを
インポートします。
※ インポートは対象の PowerShell セッションでのみ有効のため、PowerShellを起動するたびに同操作が必要になります。

[crayon-60988fe5991b2266945520/]

正しく読み込まれていれば、下記のコマンドで使用しているWorkspaceの情報が取得できます。
指定したWorkspaceの情報が表示されていることが分かりました。

[crayon-60988fe5991bc875495401/]

また、下記のコマンドでAzureMLPSのコマンド一覧が取得できます。

[crayon-60988fe5991c0252562233/]

それでは、まずWorkspaceにあるExperimentの一覧を取得します。
下記のコマンドでExperimentの一覧を取得することができます。

[crayon-60988fe5991c3100137266/]

続いて、一覧の中から「Run Selected - Sample」というExperimentを実行してみます。
下記のコマンドでExperiment名を指定して実行すると、緑色でExperiment進捗状況が表示されます。

[crayon-60988fe5991c6092267646/]

終了後はExperimentの実行成否が返されます。

いかがでしたか?
次回は管理編としてWorkspaceの作成やExpermentのコピーを紹介します。
次回もお楽しみに!!


Azure Machine Learningでオンプレミスのデータベースからデータを取得する。(プレビュー)

今回は、Azure Machine Learning (Azure ML)でオンプレミスのデータベース(DB)からデータを取得する方法をご紹介します。

※ 今回使用する「Data Management Gateway」は2016年6月現在、Windows OSのみのサポートのためオンプレミス側にWindows系サーバーが必要になります。

「data gateway」の設定

オンプレミスのデータベースからデータを取得するにあたり、まずはAzure MLで「data gateway」の設定を行います。
Machine Learning Studio (ML Studio)の「SETTINGS」から「DATA GATEWAYS」タブを選択し、画面下部の「NEW DATA GATEWAY」をクリックします。


「GATEWAY NAME」に任意の名称を入力して「→」をクリックします。

Azure ML上での「data gateway」の設定は以上になります。続くオンプレミス側での設定のため「Download data management gateway」のリンク先から「Data Management Gateway」をダウンロードしておき、また「GATEWAY REGISTRATION KEY」をメモしておきます。

Data Management Gatewayの設定

続いてオンプレミス側での設定を行っていきます。
先ほどダウンロードした「Data Management Gateway」をオンプレミス側のサーバーにインストールします。DBにアクセスできる環境であれば、異なるサーバーにインストールしてもかまいません。

※ 今回はSQL ServerをインストールしたローカルのPCをオンプレミスサーバーに見立てて接続を行っています。

インストールが終わるとそのまま「Data Management Gateway」が起動し、「ゲートウェイの登録」画面が表示されますので、先ほどメモしておいた「GATEWAY REGISTRATION KEY」を枠内に入力して「登録」をクリックします。

しばらく待つとゲートウェイの登録が完了し、「Data Management Gateway」のホーム画面でML Studioで設定したゲートウェイ名と登録、接続の状況が確認できます。

ML Studio上でも「Gateway registered」と登録が確認できました。

続いて「証明書」タブをクリックします。
「Data Management Gateway」ではSSLでデータを暗号化しながら通信することでAzureとオンプレミス間のセキュリティを確保しています。初期設定では自己証明書が設定されているため障害発生時のためにエクスポートしておきます。SSL証明書に関しては本番稼働時に認証局による証明書に切り替えて使用することもできるようです。

以上でオンプレミス側の設定は完了です。

Azure MLとオンプレミスDBの接続

それではAzure MLとオンプレミスDBの接続を行います。
まずは「Data Management Gateway」でオンプレミスDBに接続できることを確認しておきます。「Data Management Gateway」の「診断」タブを開き、接続するDBの情報を入力して「接続のテスト」をクリックします。接続に成功すると緑のチェックが表示されます。

続いて、ML Studioでデータ取得の設定をします。オンプレミスDBからのデータ取得は、BLOB StorageやSQL Data Warehouseと同様に「Import Data」モジュールを使用します。
「Import Data」を配置したら、「Properties」の「Data source」で「On-Premises SQL Database (Preview Feature)」を選択し、先ほど接続確認を行ったDBの情報を入力します。

※「User name and password」に関しては、Microsoft Edge、Internet Explorer以外のブラウザでは設定不可またはプラグインのインストールが必要になる場合があります。一度対応ブラウザで設定すれば、未対応ブラウザでもモジュールの使用が可能になります。

DB接続の認証が確認できたら、「Database query」にクエリを入力して、「RUN」で実行します。

Experimentの実行が終わったら、「Import Data」を右クリックして「Results dataset」→「Visualize」でデータを確認します。
オンプレミスDBと同じデータが取得できていることが分かりました。

・Microsoft SQL Server Management Studio (オンプレミス)

以上がAzure MLとオンプレミスDBの接続方法になります。

いかがでしたか。
残念ながら、「Export Data」モジュールでオンプレミスDBに分析結果を出力する機能は提供されていないため、ストレージをオンプレミスDBで完結させるという使い方はできませんが、オンプレミスのDBに大量のデータがあっていちいちクラウドに移して分析するのは大変、というような場合には重宝するのではないでしょうか。
現在はプレビュー版のため、オンプレミスDBに分析結果を出力する機能が実装されることも今後期待したいところですね。
次回もお楽しみに!!


Azure Machine LearningでSQL Data Warehouseと接続する。

今回は、Azure Machine Learning (Azure ML)で新たにサポートされたSQL Data Warehouse (SQL DW)との接続についてご紹介します。

操作手順は下記ドキュメントに基づいて行います。
Cortana Intelligence and Machine Learning Blog - How to Use Azure ML with Azure SQL Data Warehouse
https://blogs.technet.microsoft.com/machinelearning/2016/03/08/how-to-use-azure-ml-with-azure-sql-data-warehouse/

※SQL DWの作成については下記の記事を参照してください。
「SQL Data Warehouseを触ってみた」

接続情報の取得

SQL DWとの接続にあたり、あらかじめ接続情報を取得しておきます。
Azureポータルの「SQL Server」から作成したSQL DWのデータベースを選択し、「サーバー名」、「データベース名」、「サーバー管理者」の3項目の情報をメモしておきます。

SQL DWとの接続

SQL DWとの接続はBLOBストレージと同じく「Import Data (旧名:Reader)」モジュールを使います。

※BLOBストレージとの接続については下記の記事をご参考ください。
「AZURE MACHINE LEARNING からBLOBストレージに接続してみる。」
http://azure-recipe.kc-cloud.jp/2016/02/azure-mlblob/

「Import Data」の「Data source」で「Azure SQL Database」を選択すると、データベースとの接続情報およびクエリの入力欄が表示されるため、まず下記4項目についてメモしておいた接続情報を入力します。

項目 入力内容
Database sever name サーバー名
Database name データベース名
User name サーバー管理者
Password ※サーバー作成時に設定したパスワード

 

続いてデータベースからデータを取り出すクエリを入力します。
今回はSQL Data Warehouseのサンプル「AdventureWorksDW」を使用しているため、下記のクエリを入力しています。
[crayon-60988fe599dd5791585886/]

入力が終わったら「RUN」をクリックしてExperimentを実行し、接続確認を行います。
モジュールに緑のチェックが付けば接続成功です。モジュールを右クリックし、「Results Dataset」→「Visualize」を選択すると取得したデータが確認できます。

クラスタリング結果の出力

SQL DWからデータを取得できたので、取得データのクラスタリングをしてSQL DWに結果を出力してみます。
「K-Means Clustering」、「Train Clustering Model」を追加して簡単なクラスタリングモデルを構成し、「K-Means Clustering」の分類数を5、「Train Clustering Model」の参照パラメータを「CustomerKey」以外の全項目として設定します。
設定が終わったら、一度Experimentを実行して正常にクラスタリングができることを確認しておきます。

※Azure MLを使ったクラスタリングについては下記の記事もご参照ください。

「Azure Machine Learningでクラスタリングを試してみた。」

続いてSQL DWにクラスタリング結果を出力しますが、その前にSQL DWに出力用のテーブルを作成しておく必要があります。この操作はAzure ML上ではできないため、Visual Studioを使って行います。
Visual StudioでSQL DWに接続したら、「SQL Serverオブジェクトエクスプローラー」上で該当のサーバーを右クリックし「新しいクエリ」を選択します。

クラスタリング結果はクラスタの割り当ておよびクラスタ重心までの距離が出力されるため、出力内容に合わせて下記のクエリを実行し、「ClusteringResults」というテーブル作成します。
[crayon-60988fe599de0929238578/]

テーブルを作成したら、「Train Clustering Model」の「Results Dataset」コネクタから「Export Data (旧:Writer)」に接続します。
「Export Data」の「Please specify data destination」で「Azure SQL Database」を選択すると接続情報の入力欄が表示されるため、下記4項目について「Import Data」と同様に入力をします。

項目 入力内容
Database sever name サーバー名
Database name データベース名
Server user account name サーバー管理者
Server user account password ※サーバー作成時に設定したパスワード

続いてその下の出力データとテーブルの情報を入力します。下記の4項目について出力したいデータと先ほど作成したテーブルの情報を入力します

項目 入力内容
Comma separated list of columns to be saved CustomerKey, Assignments, DistancesToClusterCenter no.0, DistancesToClusterCenter no.1, DistancesToClusterCenter no.2, DistancesToClusterCenter no.3, DistancesToClusterCenter no.4
Data table name ClusteringResults
Comma separated list of datatable columns [CustomerKey], [Assignments], [DistancesToClusterCenter no.0], [DistancesToClusterCenter no.1], [DistancesToClusterCenter no.2], [DistancesToClusterCenter no.3], [DistancesToClusterCenter no.4]
Number of rows written per SQL Azure operation 1

 

※ 「Export Data」を使ってSQL DWに出力を行う場合は「Number of rows written per SQL Azure operation」の値を必ず1に設定してください

すべて設定したら、「RUN」でExperimentを実行して結果の出力を行います。
出力内容については、Visual Studioで下記のクエリを実行することで確認できます。
[crayon-60988fe599de7125423224/]

いかがでしたでしょうか。
Azure MLでは様々なストレージと連携してデータ分析を行うことができるので、データが溜まっているけど分析ができていないという場合には是非お試し下さい。

次回もお楽しみに!!


Azure Machine Learningでクラスタリングを試してみた。

今回は、Azure Machine Learning (Azure ML)を使ったクラスタリングをご紹介します。クラスタリングは多項分類と異なり、データの分類に教師データを必要としない点が特徴ですが、実際にどの程度正確に分類が行われるかを検証していきます。

サンプルデータ

サンプルデータには、多項分類で用いた乱数パターンを使用しました。
※サンプルデータの詳細については、Azure Machine Learningで多項分類を試してみた。を参照ください。

・基本パターン

・サンプルデータ

クラスタリングモデルの作成

クラスタリングは教師なし学習のため、教師あり学習の回帰分析や多項分類とは異なるモジュールを使います。
「K-Means Clustering」、「Train Clustering Model」および「Assign Data to Clusters」がそれぞれクラスタリングにおけるアルゴリズム、教師モデル作成、モデルの適用に関するモジュールになります。以下が基本的なクラスタリングのモジュール構成になります。

モジュールが組み上がったら、各モジュールの設定を行います。
まず、「K-Means Clustering」で分類するクラスタの数を設定します。今回は5個のパターンに分類するため、「Number of Centroids」を5に設定しています。

続いて「Train Clustering Model」で、クラスタリングの参考にするパラメータを設定します。
右ペインで「Launch Column Selector」をクリックし、参照パラメータを選択していきます。
乱数パターンは10個のパラメータで構成されるため、10個のパラメータすべてを選択しました。

設定が終わったら、「RUN」をクリックしてモデルを実行します。実行にかかった時間は約20秒でした。

モデル評価

多項分類と異なり、クラスタリングでは教師データを必要としません。
裏を返せば、答えとなるデータがないため、そのクラスタリングの精度を評価する機能が存在しないということになります。
実際に「Assign Data to Clusters」の結果を「Visualize」で表示しても、クラスタのチャートが表示されるだけで、評価に関する項目は表示されません。
このチャート自体も何を示しているかよくわかりません。

そこで、どの程度正しくクラスタリングができているのかを評価するため、出力されたデータを処理して、マトリクス図として出力してみます。
最初のモデルでは出力されたデータをダウンロードすることができないため、「Assign Data to Clusters」の後段に「Convert to CSV」を追加して改めてモデルを実行します。
「Convert to CSV」を右クリックし「Results Dataset」→「Download」を選択すると、出力された結果をCSV形式でダウンロードすることができます。

※今回は簡易的な方法でダウンロードしていますが、「Writer」モジュールを使ってストレージ経由で取得することもできます。
参照: 「Azure Machine Learning からBLOBストレージに接続してみる。」

出力データの「Assignment」が分類されたクラスタになります。
教師データはないため、番号についてはAzure MLで自動的に採番されます

出力結果を基にデータ処理を行い、多項分類と同じような形式で分類の正答率を算出してみました。
今回使用したデータでは、多項分類と遜色なく分類ができていることが分かりました。

・クラスタリング

・多項分類

多項分類と同様に参照するパラメータを半分の5個にした場合も検証してみました。
こちらも多項分類と同等の分類ができており、やはり有意なパラメータが多いほど分類精度が上がることが分かりました。

・クラスタリング

・多項分類

いかがでしたでしょうか。
クラスタリングでは教師データがなくてもデータの傾向から自動で分類を行えるため、関係性が分からないデータを一先ず流し込んでみるだけでも有用な情報が得られるのではないでしょうか。

注意点としては、分類の判断は機械学習によって行われるため、ヒトの感覚とは異なる分類が行われることがあるということで、クラスタ数や分類条件といったモジュールのパラメータ調整を行わなければならない場合もあります。
ですので、教師データを作れるなら「多項分類」、作らず簡単に分類するなら「クラスタリング」というように用途を分けて使ってみてください。

次回もお楽しみに!!


Azure Machine Learningで多項分類を試してみた。

今回は、Azure Machine Learning (Azure ML)を使った多項分類をご紹介します。

サンプルデータ

今回は乱数パターンをサンプルデータとして検証を行いました。
サンプルの作成にあたっては、まずプログラムにて0~9の10個の整数乱数パラメータ(重複許容)を持つ、5組の基本パターンを用意しました。

さらに基本パターンに対し、パラメータそれぞれに任意の標準偏差となる正規分布の乱数(ノイズ)を付加したものを、3000個生成してサンプルデータとしました。5個のパターンについては均等な確率でランダムにパターンが出現するように調整しています。

注意深く見比べても、ヒトの目での分類は困難であることがわかると思います。
これをAzure MLで分類してみましょう。

多項分類モデル

多項分類の基本的なモジュール構成は回帰分析と大きく変わりません。唯一異なる点はモデル作成のアルゴリズムに「Multiclass Neural Network」といった「Multiclass」と付く多項分類用のモジュールを組み込む点です。
多項分類モジュールは左ペインのモジュール一覧の「Machine Learning」→「Initialize Model」→「Classification」に格納されています。
今回の構成は、入力データを「Split Data」で50%ずつに分割し、50%分で教師モデルを作成、もう50%分を「Score Model」でモデルによる分類を実行して「Evaluate Model」で評価を行います。「Train Model」には教師データとなるパターンの識別「Type」を設定しました。

分類の実行と結果

それでは作成した多項分類モデルでサンプルデータの分類を行ってみましょう。
モデルを実行する場合には「RUN」をクリックします。
モデルの作成から1500個の分類、評価を行うのにかかった時間は約30秒でした。

分類結果の精度を確認する場合には、「Evaluate Model」を右クリックして「Evaluation Results」→「Visualize」を選択します。

「Visualize」ではAccuracy (正答率)、Precision (精度)、Recall (再現率)の情報が取得できます。これらの値は1に近いほど良好な分類結果となることを示します。
また、マトリクス図では、実際のパターンに対して予測がどのパターンに分類したかを割合で示しており、右下がりの対角線方向がパターンごとの正答率になります。
以下は、初めに示したサンプルの結果になりますが、たった30秒で95%を正しく分類できていました。

サンプルに付加するノイズの標準偏差を1、3、5と変化させた場合の分類の精度を確かめてみました。標準偏差が大きいほどにノイズが大きくなるため、分類の精度は低下していきますが、パラメータの期待値4.5に対して100%以上の標準偏差のノイズを付加しても、65~80%の正答率と良好な分類ができていることが分かります。

また、同サンプルデータでパラメータ数を半分の5個にして同様の分類を行いました。パラメータ数を減少したものでは、正答率が40~60%程度と低くなっており、有意なパラメータが多いほど分類精度が上がることが分かりました。

「One-vs-All Multiclass」モジュール

「One-vs-All Multiclass」モジュールを使うと、二項分類モジュールを多項分類に適用することができます。
二項分類モジュールを「Train Model」に接続すると多項分類のサンプルであっても、二項分類として結果が出力されます。

「One-vs-All Multiclass」モジュールを介して「Train Model」に接続すると二項分類モジュールでありながら、多項分類の結果が出力できます。

現状では多項分類アルゴリズムは4種類しかありませんが、「One-vs-All Multiclass」を使うことで、事実上、二項分類アルゴリズムを含めた13種類のアルゴリズムが使用可能となります。

いかがでしたでしょうか。
一見して関係性のわからないような数値の羅列でも、機械学習であれば教師データとパターンの対応を識別して分類してくれるため、情報の分類に苦心されている方は一度試してみてはいかがでしょうか。

次回もお楽しみに!!


Power BI ダッシュボードを共有してみた。

今回は、Power BIで作成したダッシュボードの共有方法を紹介します。

スマートフォンとの共有

作成したレポートを「Power BI モバイル」を使用してスマートフォンで表示します。
iPhoneのApp Store (Androidの場合はGoogle Play)で「Power BI」と検索すると「Microsoft Power BI」のアプリが表示されるため、インストールします。

「Power BI」のアプリを開いたら「開始する」→「Power BIにサインイン」をタップしてPower BIのアカウントでサインインをします。

サインインすると「マイワークスペース」が表示され、作成したダッシュボードが確認できます。ダッシュボードをタップするとピン留めしたグラフのタイルが表示され、さらにグラフのタイルをタップすることでグラフの詳細を見ることができます。

ピン留めしたレポートシートをタップした場合は、レポートそのものが表示され、Power BI Desktop同様にグラフの一か所をクリックすると他のグラフも連動してその内訳を表示することができます。

スマートフォンとの共有は以上になります。

メンバーとの共有

他のメンバーとダッシュボードを共有する場合は「ダッシュボード」画面右上の共有をクリックします。

「ダッシュボードの共有」の「招待」タブで共有相手のメールアドレスと通知メールの文面を入力します。「受信者がダッシュボードを共有できるようにする」は、共有相手に対して別のメンバーとの共有を許可するもので、共有相手に合わせて適宜チェックを入れてください。必要事項を入力したら、共有をクリックします。

共有相手のメールのドメインが異なる場合、「電子メールアドレスが組織外のものです」と警告が表示されますが、共有は可能です。なお、gmailなどのフリーメールではドメインでブロックされてしまい共有できません。

「受信者に電子メールで通知を送信する」にチェックを入れた場合、共有相手にダッシュボードへの招待の通知がメールで送信されます。「Open ‘ダッシュボード名’」のリンクをクリックするとダッシュボードにアクセスできます。

「ダッシュボードの共有」の「共有先」タブをクリックすると、ダッシュボードを共有しているメンバーのステータスが表示されます。同じ組織内のメンバーであればダッシュボードに招待した時点で「表示可能」となり、共有が有効になります。

メンバーとの共有を停止する場合は、共有相手の右端にある「…」をクリックし、「共有を停止する」を選択します。

以上がメンバーとの共有方法となります。

いかがでしたでしょうか。
スマートフォン、メンバーとも簡単に共有することができ、組織内で場所を選ばず情報を閲覧することができますね。

次回もお楽しみに!!


Azure Machine LearningのデータセットをローカルのR環境から操作してみた。

今回は、R環境向けに公開されているパッケージ「AzureML」を導入して、ローカルのR環境からAzure Machine Learning (Azure ML)上のデータセットを操作する方法をご紹介します。
ローカルのR環境にはMicrosoft R Openを使用していますが、R for Windowsでも同じ操作で実行できます。

AzureMLパッケージのインストール

R環境にAzureMLパッケージをインストールします。
メニューバーから「パッケージ」→「パッケージのインストール」を選択します。

パッケージの一覧から「AzureML」を選択し、「OK」をクリックします。

ダウンロードされているパッケージのバージョンが「0.2.10」以上であることを確認します。
旧バージョンがダウンロードされる場合は、メニューバーの「パッケージ」→「CRANミラーサイトの選択」で「Japan(Tokyo)」を選択し、改めてインストール操作を行います。

ワークスペース資格情報の取得

AzureMLパッケージを使用するにあたり、Azure MLのワークスペースの資格情報を取得しておきます。
使用するAzure MLのワークスペースにログインした後、左ペインの「SETTINGS」をクリックし、「WORKSPACE ID」に表示されている文字列をメモしておきます。
また、「AUTHORIZAION TOKENS」タブの「PRIMARY AUTHORIZAION TOKEN」の文字列も同様にメモしておきます。

メモしたワークスペース資格情報をRで定義します。
下記のコマンドにより「AzureML」パッケージの読み込みとワークスペース資格情報の定義を行います。

[crayon-60988fe59bf96649732491/]

データセットの操作

ここからはAzure MLのデータセット操作として、データのアップロードから確認、ダウンロード、削除までの一連の作業を行います。

まず、データのアップロードを行います。
upload.dataset関数で、下記コマンドの[データフレーム]にアップロードするデータフレーム、[データセット名]に任意の名称を付け、実行します。
[データフレーム]についてはあらかじめファイルから読み込むなどして用意しておきます。

[crayon-60988fe59bf9f391062008/]

Azure ML Studioの「DATASETS」でアップロードできていることが確認できました。

続いて、アップロードしたデータセットを確認します。
datasets関数によりワークスペースに保存されているデータセットの一覧を表示させることができます。
そのまま実行すると全リストが表示されるため、head関数で6行のみ表示していますが、一覧の中にアップロードしたデータセットが確認できました。

[crayon-60988fe59bfa3341357485/]

Azure ML上のデータセットをローカルのRに読み込むときにはdownload.datasets関数を使用します。
下記のコマンドでデータフレームにデータを読み込み、head関数で6行分だけ表示させます。

[crayon-60988fe59bfa6499853148/]

データフレームにワークスペース上のデータセットが読み込まれていることが分かります。

最後にデータセットを削除します。
delete.datasets関数で削除したいデータセット名を指定して実行します。
「Deleted」の列が「True」になっていれば削除ができています。

[crayon-60988fe59bfaa908994985/]

以上がAzureMLパッケージによるデータセット操作になります。

いかがでしたでしょうか。

今回はデータセット操作のみですが、AzureMLパッケージではRのスクリプトをAzure MLのWeb Serviceとして発行したり、Web ServiceをR環境から利用したりといった機能もあるため、RとAzure MLを相互に利用した高度な分析も可能になるのではないでしょうか。

次回もお楽しみに!!


Power BI レポートのアップロードとダッシュボードの作成をしてみた。

今回は、Power BI Desktopで作成したレポートのアップロードとレポート共有のためのダッシュボードの作成方法をご紹介します。

レポートのアップロード

作成したレポートをクラウドのPower BIにアップロードします。サンプルとしてチュートリアルで作った売り上げデータを使用します。
アップロードをするにあたり、まずはPower BIにサインインしておきます。
サインインの方法は以下の記事を参照ください。

AZURE SQL SERVER編~5分でできるPOWER BI接続~

続いて、レポートをクラウド上にアップロードします。
リボン上の「発行」をクリックすると「Power BIへ発行する」が表示されます。


しばらく待つと「成功しました!」と表示されてアップロードが完了します。
ウィンドウの「Power BIで‘ファイル名’を開く」をクリックするとブラウザでアップロードしたレポートを確認できます。

レポートのアップロードは以上で完了です。

ダッシュボードの作成

作成したレポートをメンバーやスマートフォン等のデバイスと共有するにはダッシュボードを作成してレポートをピン止めする必要があります。

まず、ブラウザ版のPower BIのレポートで、グラフにカーソルを合わせたときに表示される画鋲のマークをクリックします。

「ダッシュボードにピン留め」が表示されたら、「新しいダッシュボード」を選択し、ダッシュボード名を入力して「ピン留め」をクリックします。

続けて、レポート上の個々のグラフをそれぞれ「既存のダッシュボード」にピン留めしていくと、随時グラフのタイルがダッシュボードに追加されていきます。
「ダッシュボード」の画面ではタイルの大きさを変更して、見栄えよくダッシュボードを加工することができます。

また、「レポート」画面の「ライブページをピン留めする」をクリックするとレポートのページそのままをダッシュボードに反映させることができます。

以上で、ダッシュボードの作成は完了です。

いかがでしたでしょうか。
ワンクリックでレポートのアップロードができ、ダッシュボードの作成、加工も非常に簡単に行うことができました。
ダッシュボードを作成しておけば、スマートフォン、タブレットといったPC以外の端末や他のユーザーとも共有できるようになりますので、ぜひ試してみてください。

次回もお楽しみに!!


Power BI Desktop チュートリアルで売上げ分析を試してみた。② レポート作成編

前回の「Power BI Desktop チュートリアルで売上げ分析を試してみた。① データ加工編」に引き続き、今回はレポート作成編として前回取得した商品データ、注文データを用いていくつかのグラフを作成していきます。

データの関連付け

Power BI Desktopでは、データの要素を関連付けることで、インタラクティブなグラフを自動で作成してくれる機能があります。
そこで、商品データの「Products」と注文データ「Orders」の関連付けを行います。
まず、「ホーム」タブの「リレーションシップの管理」をクリックし、表示される「リレーションシップの管理」で「新規」をクリックします。
「リレーションシップの作成」のドロップダウンリストから「Products」を選択すると関連付けるデータを選択できるようになります。
Power BI Desktopではヘッダーの情報から自動的に関連付けを行うため、共通要素である「ProductID」がデータ取り込み時点で関連付けられています。
今回の場合、「ProductID」の関連付けが目的のため、確認のみで特に変更の必要はありません。

データの関連付けは「リレーションシップビュー」でも確認できます。
左サイドバーの「リレーション」をクリックするとクエリのつながりが表示され、矢印をダブルクリックすると、「リレーションシップの編集」ダイアログが表示されます。
「ProductID」が関連付けられていることが分かります。

以上でデータの関連付けは終わりです。

データのビジュアル化

続いてグラフの作成に移ります。
今回は、製品ごとの在庫数、年ごとの売上合計および国別の売上合計を示すグラフを作成します。
まずは、製品ごとの在庫数を示すグラフですが、「可視化」ペインで「集合縦棒グラフ」を選択し、「軸」、「値」にそれぞれ「ProductName」、「UnitsInStock」をドラッグ&ドロップであてはめます。
このとき「UnitsInStock」の表示形式が「カウント」となるため、右クリックで「合計」に変更しておきます。

キャンバス上にあるグラフ右上の「…」をクリックし、「並べ替え」から「UnitInStock」を選択し、グラフを在庫の多い順に並べ替えます。

続いて、年ごとの売上合計を示すグラフを作成します。
リボン上の「新しいビジュアル」をクリックしてグラフエリアを作成したら、「可視化」ペインで「折れ線グラフ」を選択し、「軸」、「値」にそれぞれ「OrderDate」、「LineTotal」をドラッグ&ドロップであてはめます。
このとき、「OrderDate」の表示形式は「日付の階層」となるため右クリックで「OrderDate」に変更しておきます。また、「LineTotal」も「カウント」から「合計」に変更しておきます。

グラフの色は可視化ペインの「形式」(筆マーク)で変更できます。

最後に国別の売上合計を示すバブルチャートを作成します。
「新しいビジュアル」をクリックしてグラフエリアを作成し、可視化」ペインで「マップ」を選択します。
「地域」、「値」に「ShipCountry」、「LineTotal」をあてはめるとマップ上にバブルチャートが作成されます。

以上でチュートリアルは終了です。
データ同士が関連付けられているため、グラフの一か所をクリックすると他のグラフも連動してその内訳を表示するようになっています。

いかがでしたでしょうか。
無料のBIツールながらインパクトのある多彩なグラフが作成できるため、ちょっとしたデモンストレーションにも効果的かと思います。
実のところ、チュートリアルで紹介されている作業は実際には行わなくても支障のないものが多いのですが、クエリエディターの操作といった基本的な操作方法を覚えるという点でも一度やっておくといいかもしれません。
また、Power BI Desktopのバージョンによって少しずつ操作性も変わってきているため、
紹介されている方法でうまくできなくても諦めずにトライしてみてください。

次回もお楽しみに!!


Power BI Desktop チュートリアルで売上げ分析を試してみた。① データ加工編

Power BI Desktopのチュートリアルについて「データ加工編」、「レポート作成編」の2回にわたりご紹介します。

Power BI Desktopとは

Power BI DesktopはMicrosoftが提供するBIサービス「Power BI」のクライアント用ソフトウェアで、ストレージやデータベースからデータを取得して対話型のレポート、グラフを作成することができます。
作成したレポートは、クラウドのPower BIに発行することでPCやスマートフォンといった様々な端末で共有できるようになります。

データの編集からグラフ、レポート作成までを行うことができるPower BI Desktopですが、多様な機能ゆえに初心者にはなかなか手の付けにくいものとなっています。
そこで、操作解説用のチュートリアルが用意されており、サンプルデータを使いながら基本的な操作について学習できるようになっています。
以下では、チュートリアルの一つである「売上データの分析」について実際に操作した場合の注意点も含め解説していきます。

参考:https://powerbi.microsoft.com/en-us/documentation/powerbi-desktop-tutorial-analyzing-sales-data-from-excel-and-an-odata-feed/

Excelデータの取得と編集

まずは、商品データのExcelファイルをPower BIに取り込みます。
データに関しては、以下のURLからダウンロードできます。
http://download.microsoft.com/download/1/4/E/14EDED28-6C58-4055-A65C-23B4DA81C4DE/Products.xlsx

リボン上の「データを取得」をクリックし、表示される「データを取得」でExcelを選択して接続をクリックします。

ファイル選択画面で先ほどダウンロードした「Product.xlsx」ファイルを選択すると「ナビゲーター」ウィンドウが表示されるので、左ペインの「Products」にチェックを入れて「編集」をクリックします。

「編集」をクリックすると新たに「クエリエディター」が表示されます。
今回取り込んだ「Products」データは可視化するうえで必要のないデータも含まれているため、「クエリエディター」上で必要データのみを抽出します。
Ctrlキーを押しながらクリックで「ProductID」、「ProductName」、「QuantityPerUnit」、「UnitsInStock」の列を選択し、選択した列のヘッダーで右クリック→「他の列の削除」で選択列以外のデータを消去します。

続いて在庫数を示す「UnitsInStock」のデータ型を「整数」に変更します。
「UnitsInStock」列のヘッダーをクリックして選択し、リボン上の「データ型」をクリックしで整数を選択します。
※Power BIでは入力データのデータ型を自動で識別するため、実際には確認程度の操作になります。

以上が商品データの取得と編集の操作となります。

ODataフィードの取得と編集

続いてOData フィードから注文データを取得します。
「クエリエディター」で「新しいソース」ボタンをクリックし、「データを取得」で「ODataフィード」を選択して接続をクリックします。

「URL」に下記のURLを入力し、接続をクリックします。
http://services.odata.org/V3/Northwind/Northwind.svc/

「ナビゲーター」ウィンドウでチェックリストから「Orders」探し、チェックを入れて「OK」をクリックします。

「Orders」テーブルには、個別製品の注文データが記された「Order_Details」テーブルへの参照が含まれています。
データの可視化にあたりそのデータが必要となるため、「Orders」に対し「Order_Details」のデータの取り込みを行います。

「Order_Details」列の横にある「展開ボタン」をクリックし、表示されるチェックリストからProductID、UintPrice、Quantityにチェックを入れ「OK」をクリックします。

続いて、可視化に不要な列を削除します。
必要なOrderDate、ProductID、Quantity、ShipCity、ShipCountry、UnitPriceのそれぞれの列をCtrl+クリックで選択し、右クリック→「他の列の削除」で削除をします。

注文詳細から注文、商品ごとの売上合計を示す列を作成します。
「列を追加」タブから「カスタム列の追加」をクリックし、表示されるウィンドウの「新しい列名」、「カスタム列の式」に下記の内容を記入して「OK」をクリックします。

新しい列名 LineTotal
カスタム列の式 = [Order_Details.UnitPrice] * [Order_Details.Quantity]

追加された「LineTotal」の列は、データ型が決まっていないため、データ型を指定します。
「LineTotal」の列を選択し、ヘッダー部分で右クリック→「型の変更」→「10進数」をクリックして10進数型に変更しておきます。

データ処理をしやすくするため「LineTotal」の列を「ShipCity」の後ろに移動させます。
「LineTotal」のヘッダーをドラッグし「ShipCity」の後列に持っていくことで列の移動ができます。

「Order_Details」から統合した「Order_Details.ProductID」、「Order_Details.UnitPrice」、「Order_Details.Quantity」の各列から 「Order_Details」のプレフィックスを削除します。
それぞれの列ヘッダーをダブルクリックした後、列名からテキストを削除します。

以上でクエリの編集は終了です。
「ホーム」タブの「閉じて適用」をクリックすると、編集したクエリがPower BIに反映されます。

いかがでしたでしょうか。
次回は、今回作成したデータを基にしてレポートを作成していきます。

次回もお楽しみに!!