ちょっと話題の記事

Amazon Machine LearningにTwitter Archiveを突っ込んで分析させてみる

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

AWSに機械学習サービスが登場!ということで大きな話題となったAmazon Machine Learning(Amazon ML)。早速本ブログでも複数の記事がアップされています。

だがしかし、悲しきかな、僕は統計にも分析にも解析にも機械学習にも知見がありません。悔しい!でもAmazon MLを触ってみたい!

ということで、とりあえずTwitter ArchiveをAmazon MLに突っ込んだらどんなことになるのか、やってみました!

やってみた

入力データのS3へのアップロード

まずは材料です。自分のTwitterアカウントで、Twitter Archive(過去の全ツイート)を入手します。入手したTwitter ArchiveはCSV形式なので、それをそのままS3にアップロードしておきます。

S3_Management_Console

Amazon MLの設定開始

では早速Amazon MLの管理画面にアクセスし、[Get started]ボタンをクリックします。

Amazon_Machine_Learning_Management_Console

[Standard setup]の[Launch]ボタンをクリックします。

Amazon_Machine_Learning_Management_Console 2

入力データの設定

[S3 location]で先ほどアップロードしたS3上のCSVファイルを指定し、[Verity]ボタンをクリックします。

Amazon_Machine_Learning_Management_Console 3

[S3 permissions]画面が表示されます。[Yes]ボタンをクリックして、S3にAmazon MLからのアクセス権限を付与します。

Amazon_Machine_Learning_Management_Console 4

Validationができた旨のメッセージが表示されるので、[Continue]ボタンをクリックします。

Amazon_Machine_Learning_Management_Console 5

次にスキーマの設定です。Twitter Archive のCSVは1行目がヘッダ行になっているので、以下の画面のチェック項目を[Yes]にします。他は、Amazon MLが自動で型推測をしてくれていて、特に変更すべきことはありません。そのまま[Continue]ボタンをクリックします。

Amazon_Machine_Learning_Management_Console 6

次に機械学習モデルの評価と構築を行う為の訓練変数を指定します。が、今回は何かの値を予測したりしたいわけじゃないので、適当にtweet_idをTargetにして、[Continue]ボタンをクリックします。このデータにGeoIDが入ってたりすると、バッチ予測するの面白そうなんですけどね。

Amazon_Machine_Learning_Management_Console 7

次のROW IDの設定は行わず、Noのまま[Review]ボタンをクリック。

Amazon_Machine_Learning_Management_Console 8

入力データについての確認画面が表示されるので、そのまま[Continue]ボタンをクリックします。

Amazon_Machine_Learning_Management_Console 9

機械学習モデルの設定

そのまま機械学習モデルの設定画面になります。デフォルト値のまま[Review]ボタンをクリックします。

Amazon_Machine_Learning_Management_Console 10

機械学習モデルについての確認画面が表示されるので、[Finish]ボタンをクリックします。

Amazon_Machine_Learning_Management_Console 11

すると機械学習モデルのステータスが[Pending]になります。しばらく時間が掛かるので待機。

Amazon_Machine_Learning_Management_Console 12

完了すると、ステータスが[Completed]になります。

Amazon_Machine_Learning_Management_Console 13

結果を確認してみる

左上のメニューから[Datasources]をクリックします。

Amazon_Machine_Learning_Management_Console 14

データソースの一覧画面になります。3つ表示されているのは、

  • データ全体(そのもの)
  • 訓練用データ(全体の70%)
  • 評価用データ(全体の30%)

です。訓練とか評価とか、それぞれの意味は理解していませんが...今回はデータ全体をクリックしてみます。

Amazon_Machine_Learning_Management_Console 15

データレポート画面が表示されます。左ペインの[Attributes]に、入力データの各項目が型毎に分類されています。Textをクリックすると"text"(Tweet内容)と"timestamp"の2つが表示されています。"text"の一番右、[Most prominent words]をクリックします。

Amazon_Machine_Learning_Management_Console 16

すると"text"の分析された結果が表示されます。これは[Ranking]でソートされています。このRankingは[Word prominence]のポイント順になっているようで、突出した使われ方をしているものになります。1位が「http」で、いろいろなWebリンクの共有によるものでしょう。2位が「札幌駅」、3位が「sapporo」と、北海道民らしい値がランクインしています。

Amazon_Machine_Learning_Management_Console 17

次に[Count]でソートしてみます。1位は変わらずですが、2位が「watching」になりました。ただしRankingは774位となっているので、Amazon MLの分析結果としては重要度が低いという扱いをしたようです。

Amazon_Machine_Learning_Management_Console 18

ということで、とりあえず、Amazon MLを触ってみました!

さいごに

この内容は別にAmazon MLである必要性はなくて、Redshift + Tableauで十分可能なものと思います。Amazon MLを使うメリットは、この先のバッチ予測にこそあるからです。どうにしかしてその辺の知識を身に付けたいものだなぁと思っていますので、お勧めの書籍などがあれば是非教えてください!