Azure MLで相関行列の作成

「Azure Machine Learningで相関行列の作成ができないか」というご質問があったのでやってみたらできた。

TL;DR
=======================================================

1. Azure Machine Learning Studioで相関行列は計算できる。
2. Statistical Functionsから、[Compute Linear Correlation](https://msdn.microsoft.com/library/en-us/Dn905819.aspx)を使えばOK。
3. サンプルは[Cortana Intelligence Gallery: 相関行列サンプル](https://gallery.cortanaintelligence.com/Experiment/7f716a4feadd4dbb83c0b151a8f8fbd5)を参照。

用語の説明
=======================================================


相関行列
-------------------------------------------------------

大雑把に言うと、異なるデータ間の関係性の強さを表すもの。

正確な定義は例えば、[分散共分散行列と相関行列](https://upo-net.ouj.ac.jp/tokei/xml/k3_06022.xml)にある。

Azure ML (Azure Machine Learning)
-------------------------------------------------------

Microsoftの提供する機械学習プラットフォーム。

様々なことができるみたいだけれど、あまり詳しくない。

[Azure Machine Learning](https://azure.microsoft.com/ja-jp/services/machine-learning/)


手順
=======================================================

I. 使うデータセットの選定
-------------------------------------------------------

Azure Machine Learning Studio上で使いやすいデータとして、Automobile price data (Raw)が提供されているのでそれを用いる。

参考: [Machine learning tutorial: Create your first data science experiment in Azure Machine Learning Studio](https://azure.microsoft.com/en-us/documentation/articles/machine-learning-create-experiment/)

II. 前処理
-------------------------------------------------------

### 欠損値の処理

Automobile price data (Raw)には欠損値が含まれるのでそれを省く。今回は欠損値をいかに補うかは主眼としないので、単純に欠損値の多いデータや、欠損値を含むデータを削除する。

手順は[Machine learning tutorial: Create your first data science experiment in Azure Machine Learning Studio](https://azure.microsoft.com/en-us/documentation/articles/machine-learning-create-experiment/)のStep2にほとんど同じ。

### 1. normalized-lossesカラムの削除

Select Colums in Datasetを使う

![スクリーンショット 2016-11-10 22.35.40.png](https://qiita-image-store.s3.amazonaws.com/0/41266/9df6367a-2c62-c056-b1c3-4840c9ecc8ca.png "スクリーンショット 2016-11-10 22.35.40.png")

繋いで…

![スクリーンショット 2016-11-10 22.36.46.png](https://qiita-image-store.s3.amazonaws.com/0/41266/7ac3ab6f-318c-2f5d-d9f6-bd5074bba881.png "スクリーンショット 2016-11-10 22.36.46.png")

normalized-lossesカラム以外のデータを取り出す

![スクリーンショット 2016-11-10 22.37.44.png](https://qiita-image-store.s3.amazonaws.com/0/41266/c5c9b51a-cd0e-b37b-a640-244e66c2f6e9.png "スクリーンショット 2016-11-10 22.37.44.png")

### 2. 欠損値を含む行の削除

num-of-doors, bore, stroke, horsepower, peak-rpm, priceは欠損値を含む。欠損値を含む行を削除する。

Clean Missing Dataを使って実行。

![スクリーンショット 2016-11-10 22.44.08.png](https://qiita-image-store.s3.amazonaws.com/0/41266/b88e5078-237a-0dd6-871a-4f85bb99ae1b.png "スクリーンショット 2016-11-10 22.44.08.png")

### 3. 数値データの抜き出し

今回は文字列を数値に置き換える(ダミー変数を用いるとか)ことはせずに、数値データだけ抜き出す。

Select Colums in Datasetを使う。

![スクリーンショット 2016-11-10 22.53.54.png](https://qiita-image-store.s3.amazonaws.com/0/41266/3872e8e2-901d-497c-a428-4f043d98d49c.png "スクリーンショット 2016-11-10 22.53.54.png")

設定はこのようにする。

![スクリーンショット 2016-11-10 22.54.30.png](https://qiita-image-store.s3.amazonaws.com/0/41266/d8ce59b4-0be6-4ffa-9dcf-70872a504e1c.png "スクリーンショット 2016-11-10 22.54.30.png")

そうすると、文字列で構成される行をフィルタリングできる。

![スクリーンショット 2016-11-10 22.55.09.png](https://qiita-image-store.s3.amazonaws.com/0/41266/848c807f-2251-5faf-b71c-4b7d2ee79e7e.png "スクリーンショット 2016-11-10 22.55.09.png")


II. 相関行列の計算
-------------------------------------------------------

Statistical Functionsから、[Compute Linear Correlation](https://msdn.microsoft.com/library/en-us/Dn905819.aspx)を使う。設定はないのでつなぐだけ。

![スクリーンショット 2016-11-10 22.57.58.png](https://qiita-image-store.s3.amazonaws.com/0/41266/ada1599f-b741-4929-b1be-6d67206c245c.png "スクリーンショット 2016-11-10 22.57.58.png")

無事出力された。

![スクリーンショット 2016-11-10 22.59.11.png](https://qiita-image-store.s3.amazonaws.com/0/41266/6cf7bf99-233c-2e20-f69b-af2f32406a55.png "スクリーンショット 2016-11-10 22.59.11.png")

III. CSVでダウンロード
-------------------------------------------------------

「エクセルで扱いたいんだけど」という声がなんとなく聞こえたので、CSVで出力する。

Data Format Conversionsから[Convert to CSV](https://msdn.microsoft.com/library/en-us/Dn906002.aspx)を使う。これもつなぐだけ。

![スクリーンショット 2016-11-10 23.00.56.png](https://qiita-image-store.s3.amazonaws.com/0/41266/003d1b6a-b46b-2565-f1bf-b4b82661de66.png "スクリーンショット 2016-11-10 23.00.56.png")

最後の◯を右クリックすると、Downloadが出現する。

![スクリーンショット 2016-11-10 23.03.24.png](https://qiita-image-store.s3.amazonaws.com/0/41266/c04bb2bf-aaff-6750-f21a-4d57fec4b053.png "スクリーンショット 2016-11-10 23.03.24.png")

これをクリックするとCSVファイルがダウンロードできる。

Reference
=======================================================

[Cortana Intelligence Gallery: 相関行列サンプル](https://gallery.cortanaintelligence.com/Experiment/7f716a4feadd4dbb83c0b151a8f8fbd5)