今回の記事はこの分野では初投稿となります、Azure Machine Learningについてです。

天気予報システム(精度は別として)を自分で作れるなんて思ってもいませんでしたが、Azure Machine Learningはそれを可能にしました。

余談はさておき、今回は結果からお見せします。

これは、2016年5月14日のYahoo Japanさんの天気結果で、「晴れ」です。

以下は、Azure Machine LearningのExcel作成機能を少し加工して見やすくした予測結果です。

ご覧の通り、60.94%の確率で晴になりました。

別の日で試してみます。2016年5月10日のYahoo Japanさんの天気結果は「曇り」でした。

Azure Machine Learningの答えは78.13%で「曇り」です。

2016年5月11日のYahoo Japanさんの天気結果は「曇り」でした。

Azure Machine Learningは…晴れ。残念…

ということで、必ず当たるわけではありませんが、個人で天気予報ができるなんて凄いなっと感じます。

仕組み

この天気予報ですが、データの元となったのは、気象庁によって一般公開されているデータダウンロードのサイトから、東京の1989年1月~2016年4月30日までの天気データです。ただ、一度にダウンロードできるのは2年分なので、ダウンロードするのは一苦労でした・・・

こちらから私が加工した後のCSVをダウンロードできます。tokyo1989-2016

これをAzure Machine Learningに最高気温、最低気温、湿度、降水量と日付情報を使って機械学習させて、可能にしました。

作成方法

それでは作り方をご紹介します。

まず、Azure Machine Learning Studioを開きます。

新たに画面が立ち上がるはずです。

画面左下の「New」をクリックし、

「Dataset」を選択します。

ここで、ダウンロードした天気データを選択します。名前は分かりやすく「Tokyo Weather」等にしましょう。

 

これで下準備は完了です。

次に「New」をクリックし、「Experiment」を選択します。

 

先程アップロードしたデータを使用するために、画面左側から「Saved Dateset」をクリックし、「Tokyo Weather」を選択します。すると画面に「Tokyo Weather」が表示されたと思います。

 

次に使用する列を選びます。列を選ぶには、「Select Columns in Dataset」を使用します。

「Data Transformation」の、「Manipulation」の中にあります。

 

このままでは列が選択されていません。画面右側の「Launch column selector」を選択します。

 

次にデータを機械学習で使うデータと、学習結果をテストするためのデータに分けます。ここでは「Split Data」を使用します。

「Data Transformation」の「Sample and Split」の中にあります。

 

「Split Data」をクリックすると、分ける割合が設定できるようになっています。既定では半々の割合として0.5になっていますが、今回は0.7にします。数値が高ければ高いほど、より高い比率で機械学習のデータとして使用され、残りは学習結果のテストに使用されます。

 

Split Dataの箱をよく見ると、上にはまるが1個ついているのに対して、下にはまるが2個あります。これは上がデータの入力、下が出力になっているからです。Split Dataはデータを2個に分けているため、下は2個あります。

 

次にMachine Learningから、「Initialize Model」の「Classification」にある、「Multiclass Decision Forest」を選択します。このモデルは、を予測するために使用します。今回の天気を予測するために適しています。

「Machine Learning」、「Initialize Model」、「Classification」の中にあります。

 

次に、データを学習させるため、追加したモデルをTrain Modelへ結びつけます。

これで、「Split Data」から出力されたデータをもとに、「Multiclass Decision Forest」を使って、学習させるということになります。

 

Train Modelの隣が赤い表示になってますが、これは、予測する対象が選択されていないからです。

「Launch column selector」をクリックし、

 

予測する列を選択します。

 

今度は「Train Model」と「Score Model」を結びつけます。「Score Model」は学習結果を実績データの中に新たな列として追加します#Azure。

 

次に「Evaluate Model」を「Score Model」と結びつけます。

これでこのモデルがどれほど精度の高いものだったのか等の情報が得られます。

 

画面下にある、「RUN」をクリックし、実行します。

 

実行が完了すると、各箱に緑色のチェックが入ります。

 

これだけでも、学習できた状態になります。「Score Model」を右クリックし、「Visualize」をクリックします。

 

すると、各天気に対する確率が「Scored Probabilities for Class “晴”」等と表示されます。

実際のCSVデータは左側の「天気大分類(昼:06時~18時)(2)」で、機械学習が予測した結果は一番右側の「Scored Labels」に表示されます。

 

次に、正解率などを確認してみます。

「Evaluate Model」を右クリックし、「Evaluation Results」の中の

「Visualize」を選択します。

 

「Confusion Matrix」では、実際の天気結果(Actual Class)と、予測された天気(Predicted Class)が表形式で表示されます。

例として、実際は晴れの日だった場合で見てみましょう。

晴れと予測している確率が、83.5%で、曇だと判断してしまった確率は16.3%、雨は0.2%でした。

以下の表からは、霧の日とみぞれの日に関しては、間違えて判断してしまう可能性が高いみたいですね。

 

次にWebサービスを公開します。

公開することにより、他のWebページやアプリケーションで予測結果が使用できるようになります。

まず、Webサービスの入力と出力を設定する必要がありますが、ボタン1つで可能です。

 

これで公開する準備が整いました。

をクリックし、公開します。

 

公開すると、アクセスするための認証キーの情報や、開発のためのAPI情報なども用意されています。今回は自動で生成できるExcelをダウンロードします。「Excel 2013 or later」をクリックします。

以下の画面が表示されますが、気にせず右下のチェックをクリックしましょう。

 

Excelファイルがダウンロードされます。早速開いてみましょう。

開くとセキュリティ機能によって、必要な機能が無効化されています。

「編集を有効にする」をクリックします。

 

すると、画面右側にAzure Machine Learningのアドオンが表示されます。

「Tokyo Weather [Predictive Exp.]」をクリックします。

 

まずは、「Use sample data」をクリックします。

データが多く、わかりにくいので、ヘッダー行と、データ行の2行だけにします。

 

次に、「Input」の右にある範囲選択ボタンを押し、表示されたサンプルデータの表を選択します。

 

次に予測結果の出力先を選択します。どのセルでも大丈夫です。

 

「Predict」をクリックすると、予測できます。