Azure Machine Learning Studio のチュートリアルでデータサイエンス実験

#Azure Machine Learning Studioとは
Microsoft Azure Machine Learning Studio は、データを活用した予測分析ソリューションの構築、テスト、デプロイをドラッグ アンド ドロップで行うことができるサービス

データセットを Machine Learning Studio にアップロードすることで、これらのデータセットをモデル作成プロセスで使用できるようになります。 Machine Learning Studio には数多くのサンプル データセットが既に含まれているため、これらを実験で試すことができます。[引用](https://docs.microsoft.com/ja-jp/azure/machine-learning/machine-learning-what-is-ml-studio)

**まとめると、GUI操作でScratchと同じような感覚で、Machine Learningができるという優れものです。また、自分の持っているデータセットも使えると！　**


#Azure Machine Learning Studio のチュートリアル
この機械学習のチュートリアルでは、簡単なデータ サイエンスの実験手順を説明しています。 製造仕様と技術仕様などのさまざまな変数に基づいて自動車の価格を予測する線形回帰モデルを作成します。 これを行うには、Microsoft Azure Machine Learning Studio を使用して、簡単な予測分析の実験を開発し、繰り返します。[引用](https://docs.microsoft.com/ja-jp/azure/machine-learning/machine-learning-create-experiment)
[こちら](https://docs.microsoft.com/ja-jp/azure/machine-learning/machine-learning-create-experiment)の引用元のページのチュートリアルを実際に試してみたいと思います！
**※注意基本的に作業画像を多めでやっていきますのでページが長いのはご了承ください！**
##AzureからAzure Machine Learning Studioの起動
まず、Azureのポータルを開き下記のように**Machine Learning ワークスペース**を開きます
**【新規】➡︎【Intelligence + analtics】➡︎【Machine Learning　ワークスペース】**

![１.png](https://qiita-image-store.s3.amazonaws.com/0/130097/1dacec9a-3410-e552-e3e1-585e1c89168b.png)

すると設定ができるので適当に設定します。ないものは新規で作ってください！
ストレージ アカウントはML(Machine Learning)で使うデータセットを保存するために使うので設定する必要があるようです

![2.png](https://qiita-image-store.s3.amazonaws.com/0/130097/4de79838-5993-cc4e-e84e-d06a605b8c7c.png)

すると、MLワークスペースが開くので、その中にある **Machine Learning Studioの起動**を実行することで、Machine Learning専用のページに飛ばされます！

![3.png](https://qiita-image-store.s3.amazonaws.com/0/130097/d6d916c7-b316-50aa-d02d-0303827200fc.png)

とりあえず、試しにやるだけなので、私は**Quick Evaluation**を選択し、Machine Learning Studioが立ち上がります

![4.png](https://qiita-image-store.s3.amazonaws.com/0/130097/9e035944-ae18-e0b2-faec-152920752694.png)

##データを取得する
早速、チュートリアル通り進めていきます！
まず、Machine Learning Studioの左下にある**【新規】**から【空のファイル】を選択します。
**【新規】➡︎【EXPERIMENT】➡︎【空のファイル】**

![5.png](https://qiita-image-store.s3.amazonaws.com/0/130097/68b1d302-6e7a-5e82-57a6-6677bd80586f.png)

今回のチュートリアルでは、もともとあるデータから**「自動車の価格を予測」**というものです。
【空のファイル】を選択すると空のキャンバスができるので、左上の検索タブから**automobile**と検索し、**[Automobile price data]**をキャンバスにドラックします。
データセットを見たい場合はVisualizeを選択することでデータセットを見れます。
また、下の丸い点を右クリックすることで詳しくデータセットについて見れます！

![7.png](https://qiita-image-store.s3.amazonaws.com/0/130097/c016d10b-fdcc-fe15-ac29-2f99e53c404e.png)

##データを前処理する
一言で言えばデータの整形をします。
このデータセットの行に値が不足している列があります。 そこで、モデルがデータを正しく分析するには、これらの不足値を削除する必要があります。 そこで、値が見つからない行をすべて削除する処理を加えます。また、見つからない値の大部分は、**正規化された損失列**にあります。

まず、 正規化された損失 列を削除してから、見つからないデータがある列をすべて削除します。

まず、左上の検索タブから**Select columns**と検索し、**[Select Columns in Dataset]**をキャンバスにドラッグします。その後、右のプロパティーから**Launch column selector**をクリックします。

![9.png](https://qiita-image-store.s3.amazonaws.com/0/130097/4ee38181-d0aa-cdf2-a0c5-2aab614a5eb3.png)

**WITH RULES**でALL COLUMNSにチェックを入れ、
[Exclude] [Column names]　**[normalized-losses]**を記入し追加します。
これにより、**正規化された損失列**が除去されます

![10.png](https://qiita-image-store.s3.amazonaws.com/0/130097/fc396168-d567-bd8d-d0ac-590bdb8cbfd6.png)

同様に左上の検索タブから**Clean Missing Data**と検索し、**[Clean Missing Data]**をキャンバスにドラッグし、右のプロパティーからCleaning Modeから**Remove entire row**を選択します。
これで、**値が見つからない列を削除してデータを整理**します。 

![11.png](https://qiita-image-store.s3.amazonaws.com/0/130097/b0ff58a1-a0fc-710d-0669-6c64037dabe9.png)

キャンバスの一番下の**RUN**を実行し完了すると緑のチェックマークができると上手く実行されたことが確認できます。ここまでの流れは、自動車の価格に関するデータセットから損失列を削除し、値が不十分な列を削除したところです。

![12.png](https://qiita-image-store.s3.amazonaws.com/0/130097/480b9e6a-ecfc-8cd3-2cfb-f5cdebd05d57.png)

##特徴を定義する
データセット内の特徴のサブセットを使用するモデルを構築します。ここで特徴を変えることでデータ全体の精度が変わったりするので、模索が必要が部分です。

同様に左上の検索タブから**Select Columns in Dataset**と検索し、**[Select Columns in Dataset]**をキャンバスにドラッグし、右のプロパティーから**Launch column selector**をクリックします。

![13.png](https://qiita-image-store.s3.amazonaws.com/0/130097/e0a4725a-f73a-9d4f-5e7d-be668bf7c238.png)

**WITH RULES**でNO COLUMNSにチェックを入れ、
[Include] [Column names]　**[make,body-style,wheel-base,engine-size,horsepower,peak-rpm,highway-mpg,price]**を記入し追加します。
これらの特徴を例として使ってみます。ここで、特徴の抽出をしてくれます。

![14.png](https://qiita-image-store.s3.amazonaws.com/0/130097/7303b182-9abb-08a8-e81e-039038629a95.png)

##学習アルゴリズムを選択して、適用する
同様に左上の検索タブから**Splite Data**と検索し、**[Splite Data]**をキャンバスにドラッグし、右のプロパティーから**Fraction of rows in the first**を**0.75**に設定します。
これは**データの75%をモデルのトレーニングに使用し、25% をテスト用に保持**という意味になります。

![15.png](https://qiita-image-store.s3.amazonaws.com/0/130097/2d38544d-c894-6722-a9a1-0b46dc26ebe2.png)

もう一度、**RUN**をして、データがしっかり整形され動作するかを確認します。
次にRUNすると左の枠に項目が表示されるので下記のように**線形回帰**を選択します。
どういう方式で分けるのかを選択できます。

**【Machine Learning】➡︎【Regression】➡︎【Linear Regression(線形回帰)】**

![16.png](https://qiita-image-store.s3.amazonaws.com/0/130097/53adfc4e-657c-4728-9e56-a639e7558bcb.png)

同様に左上の検索タブから**Train Model**と検索し、**[Train Model]**をキャンバスにドラッグし、右のプロパティーから**Launch column selector**をクリックします。

![17.png](https://qiita-image-store.s3.amazonaws.com/0/130097/4228136e-7e0d-8bbc-5340-299842b2e911.png)

**WITH RULES**で[Include] [Column names]　**[price]**を記入し追加します。
ここで行なっているのは、このモデルで予測するものになります。ここではPrice(価格)になります。
もう一度**RUN**すると結果として、トレーニングされた回帰モデルが作成され、新しいサンプルにスコアを付けて予測するのに使用できるようになります。

![18.png](https://qiita-image-store.s3.amazonaws.com/0/130097/41f6014b-154e-b45a-c3fc-f4d2b100ef28.png)


##新しい自動車の価格を予測する
これまでにデータの 75% を使用してモデルをトレーニングしました。ここからは残りの 25% のデータにスコアを付け、モデルの機能の効果を確認します。

同様に左上の検索タブから**Score Model**と検索し、**[Score Model]**をキャンバスにドラッグします。

![19.png](https://qiita-image-store.s3.amazonaws.com/0/130097/4fa45626-50ac-36d8-0b65-20b88a4b0fb0.png)

同様に左上の検索タブから**Evaluate Model**と検索し、**[Evaluate Model]**をキャンバスにドラッグします。
この評価モジュール(Evaluate Model)は、2 つのモデルの比較に使用できるため、2つの入力ポートがあります。(上の二つの丸ぽち)

最後に**RUN**すると**新しい自動車の価格を予測精度**を確認することができます。
評価の結果は、Evaluate Modelの下の赤い丸ぽち(出力ポート)を右クリックすることで確認できます。

![20.png](https://qiita-image-store.s3.amazonaws.com/0/130097/391afb9e-6577-9361-99a2-0e1a95db29b4.png)

すると、**Coefficient of Determination**が0.910と1.0に近い値になっているので予測が実際の値をより厳密に照合することを示します。
これが全体のチュートリアルの内容になります。

![21.png](https://qiita-image-store.s3.amazonaws.com/0/130097/72e3dfbe-c5ff-bdb6-f45b-004666cf907f.png)

##全体のキャンバス
<img width="337" alt="22.png" src="https://qiita-image-store.s3.amazonaws.com/0/130097/48f03219-ac95-a67c-32ed-f559e78cc586.png">

#終わりに
まずはチュートリアルをやってみたが、すごく分かりやすくて良かったです。
しかし、使いこなすのはまだまだ難しいと感じます。もう少し触って応用的なことができれば紹介したいと思います。