2017年5月10日水曜日

第9回 オープンデータを利用した予測/分類(3/3)-1

~機械学習(Azure Machine Learning)の入門からビジネス活用へ~

前回の記事では、オープンデータを基に作成したデータセットに対して学習、評価、予測精度の改善を行う手順をご紹介しました。今回は、これまでの方法とは異なり、データセットの入出力にブラウザを使用しない方法をご紹介します。皆様が既にお持ちのデータがどのような場所に格納されているかに応じて、今回ご紹介する様々な入出力先から適合するものを選択し、活用していただければと思います。

~目次~ 
 3.1.入出力(対クラウドサービス)
  3.1.1.Azure BLOBの利用
   3.1.1.1.Azure BLOB側の初期設定
   3.1.1.2.Azure BLOBにアップロードしたファイルの確認
   3.1.1.3.Azure BLOBにアクセスするためのキーの確認
   3.1.1.4.Azure Machine Learning側のインポート設定
   3.1.1.5.Azure Machine Learning側のエクスポート設定
   3.1.1.6.Storage Explorerの使用方法

ブログアーカイブ 

 

3.1.     入出力 (対クラウドサービス)


今までは、データセットをCSVファイルとしてローカルPCへ保存する手順を紹介していましたが、Azure Machine Learning上で分類/予測するための基になるデータセットや、分類/予測を行った結果が格納されたデータセットを、クラウド上のストレージやデータベースに配置して、読み書きすることもできます。

Azure上で運用しているサービスのログをAzureストレージに順次出力させて、蓄積された大量のログを対象に分析を行うといった応用例が考えられます。

 

Azure Machine Learningで現在対応している入出力先には、以下の8種類があります。


3.1.1.    Azure BLOBの利用


Azure Machine Learningの外側にデータを入出力する第一歩として、最初にAzure BLOB(Azureストレージ)に対してファイルをインポート、エクスポートするための手順を紹介します。Azure BLOBは「オブジェクトストレージ」とも呼ばれるサービスで、テキストファイルや画像ファイル、動画ファイルといった様々な種類のファイルを混在させて保管できます。ただし、現在のところAzure Machine Learningの「Import Data」「Export Data」モジュールを使用して直接入出力できるファイルの種類は以下のものに限定されています。


そのため、画像ファイルやPDFファイルを入出力するためには、「Execute R Script」モジュールや「Execute Python Script」モジュールを配置し、独自のソースコードを記述する必要があります。

また、画像ファイルの入力のみについては、「OpenCV Library Modules」→「Import Images」モジュールを使用することによっても実現できます。この場合、以下の表に示すような制限事項があります。


例えば「画像の画素数」の項目を見てみると、1枚あたりの最大画素数が65536と、それほど大きくない値となっています。つまりスマートフォンやデジタルカメラで撮影した画像ファイルをそのままAzure BLOBにアップロードして、機械学習アルゴリズムに入力することはできず、予め画像を縮小したりトリミングしたりといった事前加工を行う必要があります。

また、「Import Images」モジュールと組み合わせて使用できるモジュールが、現在のところ、画像の中に存在する正面を向いた人の顔を検出するための「Pretrained Cascade Image Classification」モジュールしか提供されていません。そのため、例えば横向きの顔画像を検出したり、犬を検出したりといった実験を作成したくても全く役に立ちませんし、独自の学習データを追加してモデルを更新し、精度向上を図ることもできません。こうした、「Pretrained Cascade Image Classification」モジュールで実現できない画像解析を行わせたい場合、Azure Machine LearningではなくCognitive Servicesを使用することになります。Cognitive Servicesについては、後々ご紹介いたします。

 

3.1.1.1. Azure BLOB側の初期設定


Azure Machine LearningからアクセスするためのAzureストレージを作成します。
まず、Azureポータルを開き、「+新規」をクリックします。


左側に表示されているメニューのうち、「Storage」をクリックします。すると、メニューの右側に「Storage」パネルが表示されるので、先頭に表示される「ストレージアカウント」をクリックします。



ストレージアカウントの作成」パネルが表示されます。必要事項を入力します。



入力例を以下に示します。


レプリケーションの種類名と動作内容の一覧を以下に示します。



入力が終わった後、「作成」ボタンをクリックします。


「デプロイが開始されました」という通知が表示されるので、完了するまで待ちます。



処理が終了すると、「デプロイメントが成功しました」という通知が表示されます。



一度、Azureポータルのトップページに戻り、「ストレージアカウント」メニューをクリックします。



作成時に指定した「名前」をクリックします。続いて、画面中央のパネルにある「概要」をクリックします。



右側に表示されたパネルの中の「BLOB」をクリックします。



さらに右側にパネルが表示されるので、上部の「+コンテナー」ボタンをクリックします。



新しいコンテナー」パネルが表示されたら、コンテナーの名前と、アクセスの種類を指定します。アクセスの種類に指定する値は、制限の大きいものから順に「プライベート」「BLOB」「コンテナー」となっています。その後、「作成」ボタンを押してコンテナーを作成します。


コンテナーの作成処理が終了すると、「ストレージコンテナーが正常に作成されました」という通知が表示されます。


続いて、Azure Machine Learning上で実際にデータセットとして呼び出すためのファイルをコンテナーへアップロードします。

「コンテナー」パネル上部にある「アップロード」ボタンをクリックします。



ファイルの選択」の右端にあるボタンをクリックして、アップロードするファイルを選択します。



今回は、Azure Machine Learning上で直接CSVファイルをアップロードした場合と比較するために、「rice.csv」を選択しました。

ファイルを選択したら、「アップロード」ボタンをクリックします。



アップロード処理が終了すると、(翻訳された日本語メッセージが間違っていますが)rice.csvの完了をアップロード」と、ファイルがアップロードされたことを示す通知が表示されます。



3.1.1.2. Azure BLOBにアップロードしたファイルの確認


コンテナーを作成する時に、アクセスの種類として「プライベート」以外の値を指定した場合には、ストレージに格納されたデータにブラウザを使用して直接アクセスすることができます。

ファイルを直接ブラウザで確認するために、一時的に公開範囲を変更します。

一度、Azureポータルのトップページに戻り、「ストレージアカウント」メニューをクリックします。



作成したストレージの名前(今回は「qesml)をクリックします。


概要をクリックします。



開いたパネルの中にある「BLOB」をクリックします。


作成したコンテナーの名前(今回は「qesml)をクリックします。



「コンテナー」パネルが開き、アップロードしたファイルが一覧表示されます。



コンテナーの「アクセスポリシー」ボタンをクリックします。



「コンテナーの編集」パネルが表示されるので、「BLOB」を選択し、「保存」ボタンをクリックします。



「コンテナー」パネルに戻るので、確認したいファイルの名前をクリックし、「BLOBのプロパティ」パネルを開きます。

開いたパネルの中にURLが表示されているのでテキストボックスの右隣にある「コピー」ボタンをクリックして、URLをクリップボードにコピーします。


クリップボードにコピーしたURLをブラウザで開きます。ブラウザのファイルダウンロード通知が表示されるので、「開く」ボタンをクリックします。今回の例の場合、確認対象のファイルがCSVファイルなので、Excelが起動し、ファイルの内容が表示されます。



3.1.1.3. Azure BLOBにアクセスするためのキーの確認


Azure Machine LearningからAzure BLOBにアクセスするために使用するアカウントとキーを確認します。

まず、「ストレージアカウント」パネルを開きます。



アクセスキー」をクリックするとパネルの右側に「ストレージアカウント名」、「key1」、「key2」が表示されるので、このうち「ストレージアカウント名」と「key1」を控えておきます。




3.1.1.4. Azure Machine Learning側のインポート設定


取得した「ストレージアカウント名」、「key1」を使って、Azure BLOBのデータをAzure Machine Learningにインポートするための手順を紹介します。

まず、Azure Machine Learningの実験画面を開いて、「Data Input and Output」→「Import Data」モジュールを画面中央の灰色領域に配置します。


データセット「rice.csv」モジュールと「Clean Missing Data」モジュールの間の接続を削除します。灰色の矢印を右クリックしてメニューを開き、「Delete」メニューをクリックします。



続いて、「Import Data」モジュールと「Clean Missing Data」モジュールを接続します。


Import Data」モジュールが選択された状態で、右側のパネルに、Azure BLOBに接続するための必要事項を設定します。

設定項目と設定値は以下の通りです。認証に関する項目は、Azure BLOBコンテナーのアクセスポリシーを「プライベート」に設定していることを前提にしています。


 

一度「SAVE」ボタンをクリックして保存しておきます。



Run」ボタンをクリックして処理を実行します。



全てのモジュールについて実行が終了した後、「Import Data」モジュール下部の丸印からメニューを開き、「Visualize」をクリックします。



rice.csv」モジュールと同様のデータセットが表形式で表示されることを確認します。



3.1.1.5. Azure Machine Learning側のエクスポート設定


次に、Azure Machine Learningの計算結果をAzure BLOBにエクスポートするための手順を紹介します。

まず、Azure Machine Learningの実験画面を開いて、「Data Input and Output」→「Export Data」モジュールを画面中央の灰色領域に配置し、「Score Model」モジュール下部の丸印と接続します。



続いてAzure BLOBへ接続するための設定を行っていきます。

Export Data」モジュールが選択された状態で、右側のパネルに、Azure BLOBに接続するための必要事項を設定します。

設定項目と設定値は以下の通りです。認証に関する項目は、Azure BLOBコンテナーのアクセスポリシーを「プライベート」に設定していることを前提にしています。


 

SAVE」ボタンをクリックして、一度保存しておきます。


Run」ボタンをクリックして処理を実行します。



全てのモジュールについて実行が終了したことを確認します。



CSVファイルが正常にエクスポートされていることを、Azure BLOBで確認します。
まず、Azureポータルを開き、「ストレージアカウント」をクリックします。



ストレージアカウントの名前(今回は「qesml)をクリックします。



ストレージアカウント」パネルが開くので、「BLOB」をクリックします。



BLOB service」パネルが開くので、コンテナーの名前(今回は「qesml)をクリックします。



「コンテナー」パネルが開き、ファイル一覧の中にAzure Machine Learning上の「Export Data」モジュールで指定したCSVファイル(今回は「rice_result.csv)が含まれていることを確認します。



エクスポートされたファイルの名前をクリックして「BLOBのプロパティ」パネルを開きます。続いて、パネルの上部にある「ダウンロード」ボタンをクリックします。



ブラウザのファイルダウンロード通知が表示されるので、「開く」ボタンをクリックすると、rice_result.csvExcelで開かれます。Azure BLOBに直接アップロードしたrice.csvの内容に加えて、Azure Machine Learningでの予測結果である「Scored Labels」列が追加されていることを確認します。


3.1.1.6. Storage Explorerの使用方法


ここまでの手順では、Azure BLOBに対する操作を全てブラウザ上で行いました。しかし、これらの操作をローカルPC上で実行するためのGUIアプリケーションである「Storage Explorer」が用意されています。本条では、Storage Explorerを使用するための初期設定方法、ファイルのアップロード、ダウンロードについての手順を紹介していきます。

始めに、Storage Explorerのインストーラーをダウンロードします。Storage ExplorerWebサイトへアクセスします。



Free download for Windows」をクリックして、インストーラーをダウンロードします。ブラウザのファイルダウンロード通知が表示されるので、「実行」ボタンを押して直接実行するか、一度保存した後エクスプローラから起動します。インストーラーを起動したら、全て既定値のまま最後まで実行します。


インストール処理が終了すると、自動的にStorage Explorerが起動します。


そのまましばらく待つと、認証情報を設定するためのウィザードが表示されます。「Sign in using your Azure Account(s)」が選択されていることを確認し、「Connect」ボタンをクリックします。


MicrosoftアカウントのIDとパスワードを入力する「アカウントにサインイン」ウィンドウが表示されるので、IDだけを入力します。



職場用アカウントと個人用アカウントのどちらを使用するか選択するためのウィンドウが表示されるので、当てはまるアカウントを選択します。



パスワードを入力します。


Microsoftアカウントへのサインイン」ウィンドウが閉じた後、Storage Explorerのウィンドウの左側のパネルに、サブスクリプションが追加されます。


左側のパネルで、「Visual Studio Enterprise」→「Storage Accounts」→「qesml」→「BLOB Containers」→「qesml」と展開していくと、右側のタブに先ほどアップロードした「rice.csv」と、Azure Machine Learningからエクスポートした「rice_result.csv」が表示されることを確認します。


続いて、Azure BLOBからファイルをダウンロードする場合は、対象のファイルを選択した上で、ツールバーにある「Download」ボタンをクリックします。


ダウンロードするファイルを格納するフォルダを選択するためのダイアログが表示されるので、任意のフォルダを指定します。


ダウンロードが完了すると、ウィンドウ右下の「Activities」パネルにログが出力されます。


次に、Azure BLOBにファイルをアップロードする手順を紹介します。今回は、デスクトップに置かれた「iris.csv」をアップロード対象のファイルとします。

アップロード先のコンテナーを開いた後、ツールバーにある「Upload」ボタンをクリックし、表示されるメニューのうち「Upload Files…」をクリックします。


ダイアログが開くので、「Files」テキストボックスの右隣にあるボタンをクリックし、アップロード対象のファイル(今回は「iris.csv)を選択します。





 
アップロード対象のファイルを選択したら、「Upload」ボタンをクリックします。


アップロードが完了すると、ウィンドウ右下の「Activities」パネルにログが出力されます。


ブラウザを使って操作したときと同様に、コンテナーのアクセスポリシーを変更することもできます。

まず、左側のパネルでコンテナー名を選択した後、左下にある「Set Public Access Level…」リンクをクリックします。このリンクのすぐ上に、「Manage Access Policies…」というリンクもありますがそちらではありません。


Set Container Public Access Level」ダイアログが表示されるので、変更先の値をクリックして、「Apply」ボタンをクリックします。



ブログアーカイブ

前回までのブログと今後の予定
 
機械学習(Azure Machine Learning)の入門からビジネス活用へ
 
 第10回 オープンデータを利用した予測/分類(3/3)-2 5月中旬予定
 
 
その他以下ブログを発信中です。