AI・機械学習

AWS Amazon Machine Learning で MNISTを分類

更新日:

実際に機械学習アプリを使用するにあたってはAWSとGCPで最も簡単に作る方法を調査した。

GCPでは Cloud ML Engineというのがあるが、あくまでEngineであり、GUIで簡単にアプリを作れるものではないことが分かった。Tensorflowの実行環境というレベルのようだ。

それに対してAmazon Machine LearningはGUIで簡単にアプリを作れるようだ。元データはS3に置くようだ。

いきなりクマノミの分類アプリを作ろうと思ったのだが、データを用意する必要があり、それも調査が必要なため、まずは既に用意されているデータを用いてサンプルを作ることにした。

既に用意されているデータといえば、MNISTである。このページではAmazon MLを使用してMNISTの手書きデータを分類するアプリを作成する。

まずはbanking.csvを試してみよう

お金かかります! https://aws.amazon.com/jp/aml/pricing/

Machine Learningは無料枠外です。モデル構築時は0.42 USD/時課金されます。

アカウントを作成して、MLを選択しても、S3にデータが入っていない。が、サンプルとして用意されているbanking.csvを使用することができる。4.7MBもあり、41,188行もある巨大CSVだ。

Target というのが予測する対象である。デフォルトでは「y」という項目がTargetになっている。「y」の値は「0」「1」のどちらかなので、二項分類(バイナリ分類)となる。ここで、educationなどを選ぶと、多項分類になる。これはDatasource作成時に選択し、後から変えることができない。

やってみたら、ML model summaryのところで、「Status Pending」から進まない。banking.csvだからだろうか。

MLのdashbordを見ると、作成したtype=ML modelの行がin progressになっている。つまり、ML modelの作成が進行中なのだろう。

7分後に確認したらstatusがcompleteになっていた。

注目したいのは、AUC(Area Under Curve)という値。0.5~1の値をとるらしく、今回の学習では0.936となっているため、extremely good for most machine learning applications(機械学習アプリとして非常に良い)らしい。

Try real-time predictions

これで試しにbanking.csvのうち、最後のカラム、yが1になっているもの(例えば4行目のage=28の値)をそのまま入力してみよう。

すると、こうなる。

  • 何も入力しない Predicted label 0
  • campagneまで入力 Predicted label 0
  • pdaysまで入力 Predicted label 1

機械学習という感じがして嬉しかった。

Create a real-time endpoint

これでAPI化できるのだろう。

The size of your model is 431.8 KB. You will incur the reserved capacity charge of $0.001 for every hour your endpoint is active. The prediction charge for real-time predictions is $0.0001 per prediction, rounded up to the nearest penny.

  • モデルの大きさは431.8KBだよ。
  • 0.001ドル/時間は必ずかかるよ。
  • 1回API呼ぶごとに0.001ドルかかるよ。

ということらしい。モデルの大きさに応じて0.001ドルの部分が変わるのかな?分からないが、今回はやらない。

多項分類(クラス分類)

Datasourceを作り直して、Targetをeducationにしてみた。

すると、ML model performanceは

the ML model's quality score is better than the baseline.
Average F1 score: 0.339

このようになった。基準よりはbetterらしい。2項分類の時とは精度に大きな差が出た。

 

MNISTの分類アプリを作成しよう

MNISTデータをS3にアップする

MNISTデータのダウンロードはこちら

一番上のtrain-images-idx3-ubyte.gzをダウンロードしよう。9.5MBもある。

gzはWindowsでは7zipなどで解凍できる。

と思ったら、これはubyte形式らしく、jpgなどの画像形式ではなかった。S3に放り込むものではないようだ。

S3 locationの指定方法

https://s3.amazonaws.com/aaaa/bbb.csv

ならば、s3://aaaa/bbb.csv となる。これがわからず数時間使ってしまった。この記事を読んで過ちに気づく(涙

S3バケットのアクセスポリシー

S3にアップしただけではこのようなエラーになる。

You don't have read permission on this S3 URL. check permissions and make sure you have read permission on this S3

そこで、S3にアップしたファイルをMLで読み込めるように、S3のバケットのアクセスポリシーを設定する。

https://docs.aws.amazon.com/ja_jp/machine-learning/latest/dg/granting-amazon-ml-permissions-to-read-your-data-from-amazon-s3.html

MNISTの分類はできない?

https://docs.aws.amazon.com/ja_jp/machine-learning/latest/dg/understanding-the-data-format-for-amazon-ml.html

ここをよく読んでみると、Amazon Machine Learningは

入力データは、カンマ区切り値 (.csv) 形式で保存する必要があります。

とのこと。画像ファイルをS3にたくさん突っ込んでというのは無理なのでしょうか。

http://wazalabo.com/amazon-machine-learning.html

Amazon Machine Learningはできることが限られ、数値データから結果を得る判別問題、回帰問題程度しか解けません。

Amazon Machine Learningは質の良い数値データを大量に持っているけれどデータサイエンティストや機械学習に通じたエンジニアは確保できないような環境、組織がちょっとした判別結果を機械学習で得るには向いていると感じました。

そのとおりですね。

本当に触りだけ、Machine Learningでできたし、構造化されたデータなら解析できることが分かったのでよしとします。

MNISTをCSV化する

画像データもCSV化して、1画像1行でCSVファイルにマッピングすれば使えると思いました。

MNISTのラベル付きCSVはkaggle.comから落とせる。(要サインアップ)

train.csvは73MBの訓練データで、1列目に0~9のラベル、2列目以降がピクセルごとのグレー数値になっている。

早速、S3にアップした。

【転職のプロが薦める】Web系自社開発のための転職エージェントランキング!

 転職満足度は『「いかに自分の希望にあう、条件のよい」企業から内定が出たか』で決まります。そのため、Web系企業に転職するときのエージェントを選ぶポイントは、「Web系企業の求人」をいくつ持っているかに尽きます。なので、総合大手よりも、Web系企業の求人を多くもつIT専門転職エージェントがオススメです。

ギークリー

  • Web系企業の求人数は9000以上とダントツに多い。
  • 「リクナビNEXTエージェントNetwork」にて、「紹介求人案件満足度部門」「カウンセリング・対応満足度部門」で1位獲得!
  • 「営業が強い」という口コミが多いが、その分熱心に求人を提案してくれる。
  • 無料相談のWEB登録は、履歴書・職務経歴書不要で、たった60秒で超簡単
  • 無料相談は東京・神奈川・埼玉・千葉で勤務できるエンジニアが対象。

レバテックキャリア

  • Web系企業の求人数が4000以上と豊富
  • 「GOOD AGENT AWARD」で「2018年金賞」受賞!
  • 転職業界の人間同士の会話でも、ITといえばレバテックとまず挙がる。
  • 無料相談のWEB登録は、履歴書・職務経歴書不要で、たった60秒で超簡単
  • 無料相談は東京、千葉、埼玉、神奈川、大阪、兵庫、京都、福岡で勤務できるエンジニアが対象。

ワークポート

  • 求人数は2000以上と上2社より少ないが、古くからIT専門として有名。
  • 「GOOD AGENT RANKING」で「転職決定人数部門」第1位獲得!
  • 無料相談のWEB登録は、履歴書・職務経歴書不要で、たった60秒で超簡単

-AI・機械学習

Copyright© SIerからWeb系自社開発に転職!失敗して感じたたった1つの後悔 , 2019 All Rights Reserved.