夏休みの自由研究に!わずか2時間。Azureでカンタン機械学習を!

microsoft-azure-logo

https://azure.microsoft.com/ja-jp/

はじめまして、坂部です。

 

皆さまこの夏、どうお過ごしでしょうか。

今年は比較的涼しかったせいか、あまり夏とは感じませんでした。

 

しかし遠く積乱雲を見ると、

小学生のころの、宿題が終わっていない・・・なんてことを思い出しました。

 

そんなわけで、ノスタルジックな雰囲気に浸りながら

夏休みの宿題の中でも最も めんd 楽しかった、「自由研究」をしてみようと思います。

 

研究テーマは

「機械学習で遊ぶ!」(Azure版)

です。

 

ちなみに機械学習とは、コンピュータがデータからパターンを見つけ、予測を行っていく…みたいな物です。

翌日の株価はどのくらい?といった予測や、画像に写っているのは何?といった画像処理など様々な事に用いられます。

 

そんな機械学習ですが、実際にやってみるとこんな知識が必要になります。

 ・RやPythonなど、解析に用いられるプログラミング言語の知識

 ・データ解析や数学の知識

 ・専門記事を読む際に必要な英語力

 

これを学ぶとなると数年かかってしまいます。

それでは夏休みが何度も終わってしまう・・・

 

しかし、Azureならばそれらの知識は(ほとんど)必要ありません!

その上、無料で利用することが出来ます!!

https://azure.microsoft.com/ja-jp/

 

筆者はデータ解析の知識がほとんど無く、英語力に至っては中学生並みです。

しかし、そんな筆者でも簡単に機械学習が出来てしまいます。

そう、Azureならね。

 

①事前準備

まず、機械学習で予測したい事を考えましょう。これについては何でも構いませんが、

今回は株価についての予測を行っていくので、近い物を設定するとやりやすいと思います。

 

今回は、個人的にドバイが好きなので、ドバイ金融市場総合指数(以下DFMGI)について考えていきます。

まずは予測したい事について、仮説を立てます。

仮説:日経平均株価とDFMGIは密接な関係にあるのではないか。

(根拠:ドバイの所属するアラブ首長国連邦の最大の収入源は石油である。 その石油の最大の取引相手は日本であるため、日本円の上下はその株価と関係がある)

そんな仮説をもとに、円ドルレートからDFMGIを予測します。

 

②機械学習に必要なデータを作成する。

はじめにデータを取得します。

ネット上などから必要な情報を取ってきてください。

必要な情報は、今回の場合で言えば、円ドルレート・DFMGIです。

一年分くらい取ってくれば十分でしょう。

 

というわけで良い感じにとってきた情報をazureが読み込みやすい形に編集します。

 

こんな感じ

画像1

しかし、よく見てみると・・・

画像2

日付がずれている・・・!

どうやらドバイは金・土曜が休みで、ドル円レートは土・日曜が休みであるため、
このようなズレが発生しているようです。

・・・これはなんかまずい気がする。

というわけで、もう一段階加工します。

画像3

(この作業で30分くらいかかりましたが、ある程度我慢しましょう。)

(最悪やらなくてもいい気もします・・・)

 

Azureが読み込みやすい形に編集したら、そのファイル形式をcsvという形式に変更して保存します。

(csvファイルはデータの区切りを「,」で表す形式のファイルです。)

画像4

最後に作成したcsvファイルの文字コードを変更します。

(文字コードとは、コンピュータ上での文字の表し方を規定した物で、文字化けの原因でもあります。)

 

まず、メモ帳を開いてください。

メモ帳を開いたら、作成したCSVファイルをドラック&ドロップし、[名前を付けて保存]してください。

その際、文字コードが変更できますので、[ANSI]から[UTF-8]に変更して保存してください。

画像5

これでデータの加工は完了です。

 

③Azureにデータをアップロードする

次にAzure側の作業です。

 

まず、アカウントを作成してください。

(※ちなみに登録の際の「勤務先の電話番号」は自宅の物が使えました。)

 

 

ログインをするとこんな感じの画面が表示されるので

画像6

黒いリボンの下にある [参照]-[Machine Learning ワークスペース] に進んでください。

画像7

するとmachine learning の画面に進めますので、左下の[新規]を押下してください。

画像8

ワークスペースの作成画面に進むので、好きなワークスペース名とアカウント名を入力して、ワークスペースを作成しましょう。

 画像9

無事、ワークスペースが作成されたら、ワークスペース名をクリックし、ML Studioにサインインしてください。

 

ここから先は英語のみになりますので、気を確かに持ちましょう。

 

サインインすると、下の図のようなページに飛びますので、[DATASETS]を押した後、左下の[NEW]を押してください。

画像10 [NEW]を押した後、[FROM LOCAL FILE]を押すと

画像11

こんな画面が現れますので、先ほど加工したCSVファイルをアップロードしましょう。

 

アップロードが完了しましたら、[EXPERIMENT]-[NEW]を選択し、[Blank Experiment]を押下してください。

画像12

④学習させる

というわけでついに実験開始です!

開始すると、びっくりするほど英語であふれた画面が出てきますが、

実際に使う箇所は数か所しかないのでご安心ください。

 画像13

まず、この画面についてですが、先ほど作成したCSVファイルや、modulesをいい感じに配置するだけで機械学習ができる azure MLのコンソールです。

 

まずは、先ほど作成したファイルをドラック&ドロップしてみましょう。

 

配置できましたか?

 

では次に、そのデータを学習用と評価用に分けましょう。

左のリボンから[Data Transformation]-[Sprit Data]を先ほどと同じようにドラック&ドロップしてください。

 

配置が出来たら、[Sprit Data]を選択し、右の欄の [Fraction of rows in the…]の数値を0.8にしてください。

この数値は学習用に使うデータの割合を示しています。

今回、扱うデータ量があまり多くないので、8割を学習に使います。

画像14

次に [Train Model]と[Linear Regression]を設置します。

Train ModelはSplit Dataから学習用データを受け取り、分析用のアルゴリズムに渡す役割を持っています。

 

Linear Regressionは分析用のアルゴリズムです。日本語で言うと線形回帰となります。

数学が解らない私の理解では、データの相関関係をモデル化する事・・・みたいな感じです。

場所はそれぞれ

[Machine Learning]-[Train]-[Train Model] [Machine Learning]-[Initialize Model]-[Regression]-[Linear Regression]

にあります。

 

配置出来ましたか?

 

出来ましたら、下の図を参考にそれぞれを線でつないでみましょう。

画像15

上の図のようになりましたら、[Train Model]をクリックし、右欄の[Launch column selector]を押下してください。

 

押すと下の図のような画面が出ます。この画面では予測をしたい項目を選択します。

この場合では、DFMGIを予測したいため、終値(ドバイ)を選択しました。

画像16

予測させたいカラムを選択したら、右下のチェックを押下してください。

ここまでが、学習となります。

⑤予測させる

次は予測の工程です。

予測はScoreと呼ばれるアルゴリズムで行われます。

今回は[Score Model]を使います。

 

[Machine Learning]-[Score]-[Score Model]を選択し、配置してください。

配置しましたら、下の図のように接続してください。

画像17

これで予測準備が完了しました。

それでは実行してみましょう。

 

下の黒いリボンから[SAVE]してください。

[SAVE]できましたら、[RUN]を押下し、実行してください。

 

[Score Model]までチェックが入れば完了です!

 

というわけで結果を見てみましょう!!

[Score Model]の下についている○をクリックし、[Visualize]を選択してください。

画像18

結果は・・・!

 

 

画像19

はい、大惨敗です。

 

Scored Labelsが予測結果になります。かすってもいません。

一応、この予測の精度を確認します。

確認方法は、[Score Model]の下に、[Evaluate Model]を配置してRUNするだけです。

[Machine Learning]-[Evaluate]-[Evaluate Model]にあります。

 

ちなみに結果はこんな感じ

画像20

この一番上の[Mean Absolute Error]が解りやすいですね。

予測値が正解から平均的にどれだけのかい離があるかを示しています。

0に近いほど優れた値であるようです。

 

というわけで、機械学習による予測でしたが、残念な結果になってしまいました。

 

今回の反省点は、

 

  • 学習するデータ量が少なかった事
  • 課題自体が難しかった事

 

  • なにより仮説が甘かった事

 

ですね、

もう少し仮説を練り込んで、データ量を増やせば、もう少しましな結果が返ってくるのではないでしょうか。

 

Azureは無料体験でたくさん遊べるので、皆さまぜひお試しください。

 

 

 

コメントを残す

メールアドレスが公開されることはありません。

ABOUTこの記事をかいた人

アバター

インフラエンジニア。PaaSの技術に興味あり。 将来的にはサービスを組み立てられるような人間になろうと日々精進中。 …ちなみにプロフィール写真は飼い犬のもの。 2016年、株式会社ヘッドウォータース新卒入社。