Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

「お手軽な機械学習サービス」で、ルーティンワークに立ち向かおう!

3,249 views

Published on

合同勉強会 in 大都会岡山 -2015 Winter- にて、「お手軽な機械学習サービス」、Google Prediction API を使ってみよう、というテーマで発表したときに使用した資料です。
これに関するブログエントリ: http://blog.a-know.me/entry/2015/12/05/234436

Published in: Technology
  • Be the first to comment

「お手軽な機械学習サービス」で、ルーティンワークに立ち向かおう!

  1. 1. 「お手軽な機械学習サービス」で、 ルーティンワークに立ち向かおう! いのうえ(@a_know )
  2. 2. 自己紹介 4 いのうえ( @a_know / a-know.me )岡山出身 4 JFE システムズ(@倉敷市水島/2006.4 ∼ 2011.12) 4 CA 子会社(@渋谷/2012.7 ∼ 2013.9) 4 フィードフォース(@文京区湯島/2013.10 ∼ ) 4 アプリケーションエンジニア、だけどインフラもやったり 4 I love "Google App Engine" !
  3. 3. 株式会社 フィードフォース 4 文京区湯島 4 BtoB な自社サービスの開発 4 feedforce.jp/service 4 Rails, AWS, GCP(一部) 4 "Hybrid Cloud" ? 4 スクラム開発 4 (元)認定スクラムマスターの CTO を中心に !
  4. 4. 本題
  5. 5. ルーティンワーク・手作業の打倒 is エンジニアの得意とするところ... !
  6. 6. 例えばこんなものは打倒! 4 あるサイトへの前日のアクセス数を集計・レポート化する 4 ある作業を、複数のサーバーに対して繰り返し実行する 4 あるサーバーのディスク空き領域を毎日チェックして、  一定以下になっていたら不要なファイルを消す 4 etc.
  7. 7. 中には手強いものもある...
  8. 8. 手強い「ルーティンワーク」の例 4 日々のメールを目視チェックして、スパムっぽいメールが 来ていたらフィルタに登録する 4 何語で書かれているのかわからない文書を分類する 4 サイトへのアクセスログのうち、bot によるものと思われ るものを取り除く
  9. 9. 手強いポイント? 4 「スパムっぽい」 4 「何語で書かれているか」 4 「bot によるものと思われるもの」 4 人間の、曖昧さを含む判断が必要な作業は、自動化するの は一筋縄ではいかない... !
  10. 10. こういうものは、 「お手軽な機械学習サービス」を 使って打倒しちゃいましょう !
  11. 11. 「お手軽な機械学習サービス」? 4 「Google Prediction API」というものを使います
  12. 12. 「Google Prediction API」? 4 Google のクラウドサービス群、「Google Cloud Platform」ファミリーの 1サービス 4 イメージ的にはこういうことをやってくれるものです  (次スライド)
  13. 13. もう少しちゃんと説明すると... 4 predict = 予測する 4 「教師あり学習」という種類の機械学習を手軽に行うこと をサポート 4 機械学習=機械が学習する、こと 4 「与えられたデータから学習し、知識やルールを自動で 獲得するシステム」
  14. 14. 教師あり学習? 4 「入力データ」と、その答えとなる「出力データ(=教師 データ)」を対として機械に与える 4 たくさん与える 4 (一般的に、)その量と質が多く・高いほど、精度も  高くなる
  15. 15. 教師あり学習? 4 そして、新しい・未知のデータを入力する 4 「今までに入力されたものからして、xxっぽい!」と  いう判断を機械にさせられるようになる!
  16. 16. Google Prediction API 概要 4 「<答え>,<問題となる対象>」というフォーマットの   csv ファイルを入力することで、学習が始まる 4 問題となるデータと、それに対応する答えをセットで用 いて学習を行わせ、学習モデルを作らせる 4 学習モデルを用いて、未知の問題に対する "予測" を  行ってくれる 4 しかもそれら全てを RESTful な API によって利用する
  17. 17. 便利そう!
  18. 18. さっそく使ってみましょう
  19. 19. 今回のテーマ 「サイトへのアクセスログのうち、 bot によるものと思われるものを 取り除く」
  20. 20. 「bot によるものと思われる」という判定を Prediction API を使って試してみましょう (弊社業務の都合上、 「bot ではない場合、RSS リーダー機能付きブラウザかそうでないか」も 分類します ! )
  21. 21. 学習データの一例 【非bot・RSS機能なし】,Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YTB730; BTRS122327) 【非bot・RSS機能あり】,Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0) 【bot】,yacybot (freeworld/global; amd64 Windows Server 2008 R2 6.1; java 1.7.0_25; Europe/de)
  22. 22. Prediction API の利用までに必要なこと 1. GCP プロジェクトの作成 2. 学習データの用意 3. 学習データを Cloud Storage に配置する 4. 学習モデルの作成 5. モデルの状態を確認 6. 学習モデルを用いた予測の実行
  23. 23. 1. GCP プロジェクトの作成 4 GCP アカウントの準備 4 GCP プロジェクトの作成 4 支払情報の登録 4 Prediction API の有効化
  24. 24. 2. 学習データの用意 4 「<分類結果>,<UA文字列>」という csv ファイルを作成 4 今回の場合 4 弊社にて、「自社サービスへのアクセスの UA を記録」 「その UA を人力で分類」した結果の膨大なデータ  (約3年分)が既にある 4 2年分を学習データとし、残り1年分の UA 文字列を   いくつか predict させてみる
  25. 25. 学習データの一例 【非bot・RSS機能なし】,Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YTB730; BTRS122327) 【非bot・RSS機能あり】,Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0) 【bot】,yacybot (freeworld/global; amd64 Windows Server 2008 R2 6.1; java 1.7.0_25; Europe/de)
  26. 26. 3. 学習データを Cloud Storage に配置する 4 学習データを一度にたくさん読み込ませる場合、Google のクラウドファイルストレージサービスにファイルを配置 (アップロード)しなければならない 4 Google Cloud Storage 4 (AWS でいう s3)
  27. 27. 4. 学習モデルの作成 4 POST https://www.googleapis.com/prediction/v1.6/ projects/<プロジェクト名>/trainedmodels 4 id : 任意の値 4 storageDataLocation : 学習データを置いた場所 4 今回は簡単のため API Explorer を使います 4 developers.google.com/apis-explorer/#p/ prediction/v1.6/
  28. 28. 5. 学習モデルの状態を確認 4 GET https://www.googleapis.com/prediction/v1.6/ projects/<プロジェクト名>/trainedmodels/<insert 時 に指定した id> 4 project : プロジェクト名 4 id : モデル作成時に指定した id 4 trainingStatus が DONE になっていれば学習は完了
  29. 29. 6. 学習モデルを用いた予測の実行 4 POST https://www.googleapis.com/prediction/v1.6/ projects/<プロジェクト名>/trainedmodels/<insert 時 に指定した id>/predict 4 project : プロジェクト名 4 id : モデル作成時に指定した id 4 input - csvInstance : 予測させたい UA 文字列
  30. 30. 6. 学習モデルを用いた予測の実行 4 試しに予測させてみましょう 4 RSS機能なしブラウザ 4 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; YTB730; .NET CLR 1.1.4322; .NET CLR 2.0.50727; YTBAPI)
  31. 31. outputMulti ? 4 与えられたデータが「どのカテゴリに属するものか?」の 確率の見積もり 4 確率なので、総和は1になる 4 確率を見てもいいけど、outputLabel を見てもいい
  32. 32. 6. 学習モデルを用いた予測の実行 4 RSS機能ありブラウザ 4 Mozilla/5.0 (Linux; Android 4.4.4; GT-I9300I Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.135 Mobile Safari/ 537.36 4 VPNGate/5.0 (Windows NT 6.1; rv:24.0) Gecko/ 20131208 Firefox/24.0 PaleMoon/ 686DCE__livebookmarks__
  33. 33. 6. 学習モデルを用いた予測の実行 4 bot 4 Mozilla/5.0 (compatible; smrjbot/0.0.5) 4 XML-FeedPP/0.45_01 XML-TreePP/0.41 libwww- perl/5.837
  34. 34. ...結構危うい !
  35. 35. 実際に活用する際の注意点とか 4 学習データの精度 4 今回の学習データも、結局は人の作業による成果物 4 その他、判定させたいデータの特徴などの要因によって、 実質的に予測できないことも(0.4 vs 0.3 vs 0.3 とか)
  36. 36. 実際に活用する際の注意点とか 4 例えば「0.7 以下であった場合は、人間の判断に委ねる」 ようにする...とか 4 誤判定を回避できる、というだけでなく、 4 その結果も学習させることによって、精度の向上も図る ことができる
  37. 37. 実際に活用する際の注意点とか 4 そもそもどうやって大量の学習データを用意するんだ問題 4 クラウドソーシングの活用? 4 texta.pixta.jp/entry/2015/11/20/203301
  38. 38. 課金体系と制約
  39. 39. 課金体系と制約 (1) 4 基本料金 4 $10 / project, month
  40. 40. 課金体系と制約 (2) 4 学習元となるデータを Cloud Storage に配置する料金 4 学習データ量(バルク) 4 $0.002 / MB(1回の MAX サイズは 2.5GB・$5) 4 ストリーミングで学習データのインサート 4 ∼ 10,000件までは無料、以降は $0.05/1,000件 4 学習結果を元にした予測リクエスト 4 ∼ 10,000件までは無料、以降は $0.50/1,000件
  41. 41. 課金体系と制約 (3) 4 200万予測/作成モデル/プロジェクト の制限あり 4 40,000予測/月 を超える場合は申請が必要
  42. 42. Google Prediction API で、 自動化の幅を広げましょう !
  43. 43. Happy prediction ! !
  44. 44. by a-know(いのうえ)/a-know.me ありがとうございました! ! 株式会社フィードフォースでは、エンジニアを絶賛募集中です! 興味がおありの方は、こちら↓まで! _人人人人人人人人人人人人_ > recruit.feedforce.jp <  ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄

×