BLOG

新人ブログ
初心者向けのAzure MLの使い方について-②Azure MLでのモデル作成手順-

2017/02/14 09:59
たらい

こんにちは、たらいです。
今回は、前回の「Azure MLで使うデータの準備」の続きとして、「Azure MLでのモデル作成手順」について記載します。


1. 前回までのおさらい

Azure Machine Learningの基本的な使い方を知って頂くために、「Restaurant feature data」というサンプルデータを用いて、市(「city」)、提供するアルコール飲料(「alcohol」)、ドレスコード(「dress_code」)」等といった情報から、そのレストランの価格帯(「price」)を予測する機械学習モデルを構築していきます。前回は、予測をするモデル作成の準備として、データを整備し、欠損値を含む行を削除しました。今回は、前回整備したデータを利用してモデルを作成するところまで行います。


2. データの分割とモデルの作成

■データの分割
欠損値を含む行を削除したデータを、モデル作成に使うデータと、それ以外のデータに分割します。ここでは、データのうち70%をモデルの学習に利用します。残りの30%はは、作成したモデルを評価する際に利用します。前者のデータを教師データ、後者のデータをテストデータと呼びます。
キャンバスに、モジュール[Split Data]を追加して、[Clean missing data]の出力ポート①と、[Split Data]の入力ポートを接続します。そして[Split Data]を選択し、画面右の設定欄にて、[Fraction of rows in the first output dataset]を[0.7]として、[Randomized Split]にチェックをいれます。これによって、ランダムにデータが分割され、[Split Data]の出力ポート①からは70%の教師データが、出力ポート②からは30%のテストデータが出力されます。

画面下の[RUN]を押下すると実行が始まりますので、エラーを出さずに実行が完了することを確認しましょう。これによって、教師データとテストデータに分割することができました。

■モデルの作成
続いて、いよいよモデルを作成していきます。[Multiclass Logistic Regression]と[Train Model] をキャンバスに追加します。画面左上の検索欄から探すか、もしくは[Machine Learning] >[Initialize Model] >[Classification] >[Multiclass Logistic Regression]、[Machine Learning] > [Train] >[Train Model]から選択してください。そして、[Multiclass Logistic Regression]の出力ポートを[Train Model]の入力ポート①に接続し、[Split Data]の出力ポート①を[Train Model]の入力ポート②に接続します。
[Multiclass Logistic Regression]は、データを分類するアルゴリズムの一つです。この[Multiclass Logistic Regression]と、[Split Data]から出力されるモデル作成用データを組み合わせることによって、「Train Model」で学習が行われ、モデルが作成されます。

[Train Model]モジュールでモデルの学習を行う前に、どの項目を予測したいのか、を指定してあげる必要があります。今回はレストランの価格帯を予測したいので、予測対象の項目は「price」である、ということを[Train Model]に設定しなければなりません。[Train Model]を選択した状態で、画面右の設定欄で[Launch Column Selector] を押下し、表示されたウィンドウで「price」を選択して、最後にチェックマークをクリックしてください。これによって、入力されたデータに含まれる「price」以外の項目の値を使って、「price」を予測するモデルを構築する、という設定ができたことになります。

画面下の[RUN]をクリックし、エラーが出ないことを確認してください。エラーが出なければ、無事レストランの「price」を予測するためのモデルが生成されました。

■モデルを使って予測
モデルを用いた予測モデルが作成できましたので、早速、このモデルを使って予測をしてみましょう。[Machine Learning] >[Score] >[Score Model]を設置し、入力ポート①は[Train Model]、入力ポート②は[Split Data]の出力ポート②と接続してください。これによって、[Train Model]のアウトプットである学習済みのモデルを用いて、[Split Data]の出力ポート②のデータの、「price」列の値を予測せよ、という設定ができます。[RUN]をクリックして、実行してみましょう。

実行が終わったら、予測の結果を確認しましょう。[Score Model]の出力ポートをクリック >[Visualize]を選択してください。新たに、[Scored Labels]という列が一番右に追加されていることが確認できます。この[Scored Labels]列が、モデルの予測結果となります。予測結果には、「price」列の値である、「low」「medium」「high」といった値が入っており、「price」に関する予測がなされている、と確認することができます。


ここまでの作業で、レストランの価格帯を予測するためのモデルを作成することができました。しかし、まだ終わりではありません。次に、作成したモデルがどの程度信頼できるのかを「評価」する必要があります。さらに、もし評価の結果が悪ければ、モデルの精度をもっと向上させる作業も必要となります。
次回は、作成したモデルの評価について、ご紹介したいと思います。