ブラウザだけで機械学習サービスを体験しよう[Amazon Machine Learning編]

株式会社あゆたの長尾です。

前回に引き続いて、今回はAmazonのサービスであるAmazon Machine Learningを扱います。

Amazon Machine Learningとは
  • 2015年の4月に発表されたサービスで、前回扱ったGoogle Prediction API、次回扱うAzure Machine Learningと比較すると一番新しいサービスです。
  • AWSの初期登録を行った場合、12ヶ月の無料期間が与えらると記載がありますが、本サービスは無料対象外のサービスです。本記事と同じ操作をした場合、1ドル程度の費用が発生します。
    費用の内訳としては学習に1.1ドル、予測に0.1ドル程度でした。詳しくはこちらをご覧ください。
事前準備

AWSのアカウントを作成します。
課金が発生しますので、クレジットカードの登録が必要になります。予算の設定などを行っておくと良いでしょう。

予測のテーマについて

前回と同様に、弊社がある千代田区岩本町付近の1K賃貸の賃料の予測を行います。

データを用意しておいたので、こちらのスプレッドシートから、ファイル > 形式を選択してダウンロード > カンマ区切りの値(.csv)を選択してダウンロードください。

訓練データのアップロード

まず、予測の教育データとしてcsvファイルが必要なため、Amazon S3上に適当なバケットを作成し、用意したcsvファイルを格納します。

Google Prediction APIでは一列目が分析のターゲットになっていましたが、こちらのサービスでは後でターゲットを指定することができます。

また、1行目にラベルとしてヘッダーを含めることができます。

upload_bucket_S3

Amazon Machine Learningの利用を開始する

スタートページを開き、Get started を選択 > Standard setupのページで Launch を選択します。

get_started_aml

訓練モデルの作成

アップロードしたファイルを学習のターゲットにします。 以下の入力を行いVerifyを選択すると、サービスを利用できるかの検証が行われます。

  • S3 location:訓練データを配置したバケット名/ファイル名

実行時に、The validation is successful.となれば成功です。 validation_success

※ 当環境ではこの操作時にエラーになったことがありましたが、MacのExcelで保存した場合のcsvのファイルのフォーマットが原因でした。

Important
Do not save the .csv file by using the Comma Separated Values (.csv) or MS-DOS Comma Separated (.csv) formats because Amazon ML is unable to read them.

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

csvファイルの中身を一度コピーし、スプレッドシートにペーストし.csvエクスポートしてから、中身を開かずにS3にアップロードし直すことで解決しました。

訓練データの設定

訓練データの設定を行います。

header_on

  • ヘッダーが含まれる場合、"Does the first line in your CSV contain the column names?"のラジオボタンをYesに設定

    • NameがVar1などから、ヘッダーの名前に変わって便利header_on
  • Data typeで設定されているプルダウンが正しいかを確認

    • 今回住所をcategoryとして扱います
  • ラベルのターゲットを選択
    • 平均家賃をターゲットに設定します label_target
  • Continueを選択
  • 行識別子の設定が行えますが、今回はNoを選びReviewを選択 identifier_no
  • 訓練データの確認し、Continueを選択すると訓練データの設定は完了 review_data
モデルの設定

モデルの設定を行います。デフォルトの設定でContinueを選択します。

model_setting

分析の確認

設定したモデルの確認を行うことができます。
Finishを選択すると、モデルの解析が始まります。
status_complete

モデルのレポートページに遷移するので、StatusがCompletedになるまで待ちます(テストデータでは10分くらいかかります)。model_created

作成したモデルを使用して予測を行う

StatusがCompletedになったので、画面下部のTry real-time predictionsを選択し予測を行います。
try_real-time

岩本町にある3階の22㎡で築10年の物件の家賃を予測してみます。 prediction_condition

予測の結果として、画面右側に予測値が表示されました。

prediction_results

116974.6,(円)が予測値です。
Prediction APIで同じ条件で予測すると100847.721315(円)になるので、大きく開きがでていますね。

その後色々と条件の値を変えて実行したところ、単純に築年数は若いほど、面積は広いほど、居住階は高いほど賃料が高くなるという結果にはならず、ある程度の若さになると逆に安くなったり、ある程度の面積の広さ以上になると賃料が下がっていったりするような結果が得られました。

推測ですが、この結果は訓練データが中途半端だったせいだと考えられます。
データの取得時機が4月の初旬頃だったため、空き物件が少なくデータに偏りがあり、うまくモデルを構成できてなかった可能性があります。

データの追加など、継続的にモデルの更新を行っていった場合にはまた違った結果になると考えられます。

まとめ

Amazon Machine Learningについてのまとめです。

同じデータで違う分析を行うようなケースでも、モデルの構築が簡単に行えるので、Google Predictionなどと比べると分析の自由度は高そうです。
今回の予測はあまり良いものではなかったかもしれませんが、データの追加などを適宜行っていくことで、より正確な予測が行えるのではないでしょうか。

ただしモデルの構築や予測など、動かす際に費用が発生するので、予算の設定などを確認しておきましょう。

次回はMicrosoft AzureのMachine Learningを扱います。