Amazon Machine Learningで多項分類やってみた

# Amazon Machin Learningとは

学習には"教師あり学習"(Supervised Learning), "教師なし学習"(Unsupervised Learning)の2種類ありますが、Amazon Machine Leariningでは”教師あり学習"が可能です。つまり、過去の膨大な教師データを元に、未来の予測が可能です。

Amazon Machin Learningでは以下の3種類の学習が可能です

* 二項分類（Binary Classification）
	* 0, 1の予測を行う。例えば、このお客様は商品を買うか、買わないかなど 
* 多項分類（Multiclass Classification）
	* A,B,Cのどれにあたるかといった、複数の分類の予測を行う
* 回帰分析（Regression）
	* 具体的な値を予測します。 明日の気温は何度かなど。

Amazon自体は機械学習を過去から行っていたと思われるが、そのノウハウが入っている。例えば、過学習を防ぐなどのチューニングがされている模様(正規化処理)。

# 入力データ

今回は、機械学習のサンプルで良く使用される有名なIris Dataを使用致します。

https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data

三種類のあやめの品種のそれぞれからの 150の花の、センチメートル単位の蕚(がく)片の長さと幅、花弁の長さと幅の計測結果を与えています。

Amazon Machine Learningのデフォルトでは単純に上から70%が教師データ、下の30%が検証データになるので、シャッフルしておきます。

今回はデータ量も少ないので、以下のようにExcelで並べ替えします

まずColumnで以下のようにRAND関数で乱数を追加します

![スクリーンショット 2015-08-01 10.26.31.png](https://qiita-image-store.s3.amazonaws.com/0/85182/88df0569-8a2a-5b93-d028-920d66b749a3.png)

次に"Custom Sort"で乱数を元にソートします

![スクリーンショット 2015-08-01 10.28.58.png](https://qiita-image-store.s3.amazonaws.com/0/85182/fda5891e-d3c4-d29c-0a14-cb7252a39f72.png)

これで入力データはランダムになりましたので、このデータをCSVファイルにコピーでもして下さい。

最後に重要な点なのですが、<b>文字コードをUTF-8、 改行コードをLF</b>に変更して下さい。

# 入力データ(DataSource)の登録

まずAWSのMachin Learningから入力データを読めるようにS3にCSVをアップロードします。

その後、Machine Learningのサービスを起動します。初めての人は"Get Start"の後にCustom SetupをLunchします。先ほどアップロードしたS3ファイルを指定します。

![スクリーンショット 2015-08-01 10.54.02.png](https://qiita-image-store.s3.amazonaws.com/0/85182/2c2f622f-081e-fe64-fc5d-7cc23cbf437e.png)

Machine LearningのサービスからS3のアクセス許可を求められるので許可します

![スクリーンショット 2015-08-01 10.54.37.png](https://qiita-image-store.s3.amazonaws.com/0/85182/2df69ead-edab-972b-f98c-ccf5a5911149.png)

その後に"Verify"でデータの確認をします。最後の列が"Categorical"になっていることを確認して下さい。そして左のチェックボックスをチェックして下さい。このCategoricalなデータをターゲット指定したということで、Val1,2,3,4のパラメーターからVal5を推定するといったモデルを作成することになります。

![スクリーンショット 2015-08-01 11.10.05.png](https://qiita-image-store.s3.amazonaws.com/0/85182/a8b52ae3-be52-bca2-c8b1-1fb94d2d685d.png)

# 学習および学習結果の評価
先ほど登録した入力データ(DataSource)より学習を行います。Defaultでは上から70%を学習データ、下から30%を評価データになります。今回はこれで良いのでデフォルトの設定を用います。

![スクリーンショット 2015-08-01 11.11.12.png](https://qiita-image-store.s3.amazonaws.com/0/85182/0e15f8bd-aa32-78df-2135-c7ebeca2be7d.png)

学習した結果はモデルとして作成がされます。モデルは言わば学習データより帰納的にアルゴリズムが実装されたモジュールのようなものになります。

その後、コンソールのインタクラクションに従うと学習が始まるのですが、150個なのですぐできるかと思ったら、意外に時間がかかりました。（といっても数分ですが）

学習が完了時には、DataSourceには学習用データと、評価データが作成されています。

![スクリーンショット 2015-08-01 14.10.50.png](https://qiita-image-store.s3.amazonaws.com/0/85182/09d0a2c8-54ad-1fb6-da2b-1eda3af7c78b.png)


またモデルも作成されています

![スクリーンショット 2015-08-01 14.11.11.png](https://qiita-image-store.s3.amazonaws.com/0/85182/369e4981-23d9-a25d-3e2a-de9f415e9a66.png)

評価結果をクリックしていくと詳細な結果が見れます

![スクリーンショット 2015-08-01 14.11.23.png](https://qiita-image-store.s3.amazonaws.com/0/85182/717c0561-b599-af47-b4b6-a0e27ecfc05e.png)

![スクリーンショット 2015-08-01 14.11.39.png](https://qiita-image-store.s3.amazonaws.com/0/85182/34c547d2-c679-930f-d650-9dda9f7f77d8.png)

今回の評価では、93%の正答率という結果が出ています

![スクリーンショット 2015-08-01 14.12.02.png](https://qiita-image-store.s3.amazonaws.com/0/85182/6a3e6e74-e5b9-aa74-c5e4-a8b5b2889790.png)

# さいごに
以上、Amazon Machine Learningを使ってきましたが、とにかく非常に簡単に結果を得ることができます。次回は作成したモデルを使った簡単なWebアプリケーションの作成をしてみようと思います。