BLOG

新人ブログ
初心者向けのAzure MLの使い方について-①Azure MLで使うデータの準備-

2016/11/11 13:40
たらい

はじめまして、たらいと申します。
入社2年目で、データサイエンスの部隊では新人です。
私は現在、Microsoft社のAzure Machine Learning(以下、Azure ML)を触る機会が多いため、
本ブログでは数回に分けて初心者向けのAzure MLの使い方について記載したいと思います。

第一回目となる本記事では、「①Azure MLで使うデータの準備」について記載します。


1 Azure MLでの作業の前段

Azure MLを使う際に前提となる知識と、前準備について確認していきます。


■Azure Machine Learningとは
まずは、Azure MLとはなんぞや、ということを簡単にご説明します。
Azure ML(Azure Machine Learning)とは、マイクロソフト社が提供する機械学習(後述)のクラウドサービスです。 数学や統計学に親しくない方でも、手軽に機械学習を使って予測などができる点が、このサービスの大きな魅力の一つです。 しかも、このサービスには無期限の無償版(機能の制限はありますが)がありますので、お金をかけずに利用することが出来てしまうのです。完全に太っ腹です。

■機械学習とは
では、機械学習とは何なのか。Wikipediaで検索してみました。
すると、こんな記載がありました。

‘’明示的にプログラムしなくても学習する能力をコンピュータに与える研究分野‘’‘
https://ja.wikipedia.org/wiki/機械学習

少し抽象的なので、具体的にご説明してみます。
例えば、Aさんは、自分の中古PCがいくらで売れるのかを知りたいとします。 PCの値段は、メーカー、スペック、使用年数の3つの要素で決まるとします。 そして、Aさんは「スペック,メーカー,使用年数,値段」という形の100台分の買取履歴データを持っているとします。
それをぼんやりと眺めていると、Aさんは「これくらいのスペック、メーカー、使用年数だと、これくらいの値段になるな」という法則を学習し、自分のPCの価格が予想できるようになりました。
機械学習とは、Aさんがしたようなことを機械が行うことです。通常、機械に値段を出力させるためには、
メーカー=B社、スペック=8G/2.5Ghz、使用年数=1年 ⇒ 8万円
メーカー=C社、スペック=4G/1.25Ghz、使用年数=5年 ⇒ 2.5万円
といったようなパターンを記述する必要があります。 機械学習では、そのようなパターンを記述しなくても、機械が100台分の買取履歴データから学習して値段の法則を見つけ出し、その法則に当てはめて予測した値段の出力などを行うのです。

■モデル、アルゴリズムについて
機械学習では、上記のような、入力に応じて出力をする法則をモデルと呼びます。例えば、モデルに自分のPCのスペック、メーカー、使用年数を入力することで、価格が出力されます。
そして、データからモデルを作る仕組みをアルゴリズムと呼びます。例では、Aさんは100台分の買取履歴データをぼんやり眺めて学習することで、価格を予測するモデル(=法則)を考えました。この場合、データからモデルを作ったAさんの頭の中の仕組みが、アルゴリズムにあたります。


■Azure Machine Learning Studioの利用環境について
Azure MLはAzure Machine Learning StudioというWEB上の環境で利用することとなります。
Azure ML Studioは、マイクロソフトアカウントさえあれば利用することができます。
なお、Azure ML Studioの会員登録は、こちらから行えます。先にも少し触れましたが無償版があり、本記事でご案内する内容はすべて無償版でも実施可能です。
 また、マイクロソフトアカウントが無い方は、こちらから無料で登録することが出来ます。 

2 Azure MLでの作業

今回は、最終的にレストランの価格帯を予測するモデルを作成します。レストランの価格帯は、立地、ドレスコードの有無、アルコールの有無、チェーン店か否か、、、、といったデータから予測することが出来ますが、このデータセットはAzure ML上にデフォルトで用意されています。このデータセットを、モデルを作成するために使えるような形にすることが、今回の目標です。


■新規Experimentの作成
さて、それではいよいいよ、Azure MLを使ってみましょう。
Azure ML Studioにログインすると、以下のような画面が表示されます。画面の左から[Experiment]を選択して、 画面左下の[New]をクリックしてください。[Experiment]では、モデルの作成や編集作業を行います。



新規作成用のウィンドウが表示されたら、[Blank Experiment]を選択します。名前のとおり、完全に白紙の状態から[Experiment]を作成します。



画面上のタイトルが作成した日付となったExperimentキャンバスが表示されます。タイトルが日付では趣が無いので、ここでは、「RestaurantInfo」としておきましょう。


■データの準備
次に、データセットの準備をしていきます。
データセットは、デフォルトでAzure MLに用意されているサンプルのデータセットを用います。
[Saved Datasets] > [Samples] > [Restaurant feature data]をドラッグしてキャンバス上に移動し、キャンバス上の任意の場所でドロップしてください。 (キャンバス上の模様は無視して大丈夫です。ドロップされると模様は消えます。)
設置した[Restaurant feature data]のように、キャンバス上に設置できるものをAzure MLでは「モジュール」と呼びます。
次に、[Data Transformation] >[Select Columns in Dataset] >[Select Columns in Dataset]を選択して、 先に設置した[Restaurant feature data]の下あたりにドラッグ&ドロップします。[Select Columns in Dataset]は、 データセットから、使う列のみを抽出するためのモジュールです。なお、モジュールは、画面左の検索欄からキーワードで検索を行うことができます。
これによって、使用するモジュールを素早く見つけることが出来ます。



二つのモジュールをセットしたら、[Restaurant feature data]の下にある「出力ポート」と、[Select Columns in Dataset]の上にある 「入力ポート」を接続します。 前者を選択してドラッグし後者の上でドロップをすると、二つのポートは結び付けられます。
ここまでで、以下のようになっていると思います。



次に、[Select Columns in Dataset]を選択し、画面右から[Launch columns selector]を押下します。
データソースに含まれている列が表示されますので、 今回は、city, alcohol, dress_code, accessibility, franchise, other_servicesの6列を選択し、 右下のチェックマークを押下します。



ここでいったん、画面下にある[RUN]を押下して、エラーが出ないことを確認します。 これによって[Restaurant feature data]のデータが[Select Columns in Dataset]に流し込まれて、列が抽出されました。
それでは、次にデータの欠損値を確認してきます。欠損値とは、空白になってしまっているデータです。 [Select Columns in Dataset]モジュールの出力ポートを右クリックし、[Visualize]を選択します。ここから、取り込んだデータを確認することができます。



このウィンドウで、列名を選択すると、右側の[Statistics] >[Missing Values]に欠損値が含まれる行数が表示されます。今回のデータでは、[city]列に欠損値が18個含まれています。



教師データの質を高めるため、今回は欠損値が含まれる行を削除します。欠損値を削除するために、モジュール[Clean Missing Value]を追加し、[Select Columns in Dataset]と接続します。[Clean Missing Value]を選択して、画面右の設定欄で [Cleaning mode]を「Remove entire row」に設定し、画面下の[RUN]を押下します。



本当に欠損値がなくなっているかどうか、確認しましょう。こんどは、[Clean Missing Data]の出力ポート①で右クリック >[Visualize]を選択し、表示されたウィンドウで[city]を選択してみます。ウィンドウ左の[Statistics] >[Missing Values]が「0」となっていることをご確認ください。


最後に
以上で、モデルを作成するためのデータの準備が出来ました。
第二回では、今回きれいにしたデータを用いて、モデルの作成と評価を行います。


■第二回 Azure MLでのモデル作成手順
http://www.sbt-digitalmarketing-solution.jp/blog/index/201702141000/


■Azure Machine Learning 分析支援サービスについて
https://www.softbanktech.jp/service/list/azure-ml/