Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GCPUG kitakyu#1/熊本#1「BigQuery+BigQueryMLでKaggle機械学習を攻略してみた」

506dbe86c6801a3178c0e756df14dbb7?s=47 piacerex
February 14, 2019

GCPUG kitakyu#1/熊本#1「BigQuery+BigQueryMLでKaggle機械学習を攻略してみた」

506dbe86c6801a3178c0e756df14dbb7?s=128

piacerex

February 14, 2019
Tweet

Transcript

  1. GCPUG kitakyu#1/熊本 第1回 BigQuery+BigQuery MLで Kaggle機械学習を攻略してみた ~SQLだけでモデル構築と予測ができてしまう新世代AI・ML開発~ 2019/02/11 ver 0.5作成

    2019/02/13 ver 0.9作成 2019/03/16 ver 1.0作成
  2. カラビナテクノロジー株式会社 CTO 常務 / 他2社経営 プログラマ歴36年 / XPer歴18年 / 福岡

    技術顧問 (3社) AIジョブカレ 福岡代表 / enPiT (文科省 社会人IT育成) 講師 。 森 正和 |> 。 福岡Elixirコミュニティ「fukuoka.ex」 北九州GCPユーザグループ「GCPUG kitakyu」 福岡 理学部 / IAI Fukuoka / 「通常の3倍」福岡 「量子コンピュータ by Blueqat」 / 「OpenQL」 福岡Elixirプログラマ / データサイエンティスト / 重力プログラマ my favotite technology & implements. Twitter/Qiita/GitHub @piacere_ex
  3. OSS書いて、仕事作りつつ、AIチームのトップもやります

  4. プログラマを35年間続け、現在、「重力プログラマ」中 重力波解析するし、重力・流体・天体シミュレータも作る

  5. 4 2018/9/13 福岡 理学部 十限目 「重力と宇宙を愛する全ての人に」 #3

  6. 重力・宇宙イベント会 第1回は、こんな感じでした

  7. 福岡で人工衛星飛ばす企業、QPS大西さんも登壇

  8. None
  9. マイナー言語でも、地味に皆様の生活を支えるインフラ

  10. ライブデモする「MeetUp」+入門者OKな「もくもく会」 仕事終わり、くつろぎ、ほろ酔いつつ、Elixir/Phoenix による先端プログラミングに触れるイベントを定期開催 リモート参加もできますので、よろしければ、 ”福岡 Elixir” でググって、connpassご登録ください もくもく会 (毎月、入門者もOK) MeetUp

    (隔月、経験者向け)
  11. GPUドライバとscikit-learn/Keras相当を実装中 「Elixir」の性能・並列性・生産性をAI・ML文脈でも活かすため、 fukuoka.exでGPU実装を行い、機械学習エンジン開発中です 半年後にはscikit-learn相当、1年以内には、GPU対応済の Keras相当をリリース予定です 北九大、京大の先生と共に Elixir GPU活用の共同研究 論文も書いてます

  12. AI・MLに欠かせない前処理系をOSSで無償提供 AI・MLには、前処理 (データクレンジング、変換・集計・加工) が 欠かせませんが、Elixir+Phoenix+Vue.jsで開発したOSS 「Esuna」を使えば、UI上でデータ処理を設定でき、AI・MLへと スムースにデータを流せます

  13. AI学校「AIジョブカレ」の福岡代表&講師やってます AI権威の松尾研出身で「詳解ディープラーニング」著者、 巣籠さん監修のAI学校、現役のエンジニアが講義中 https://www.aijobcolle.com/

  14. None
  15. 2019年1月にGCPUG kitakyuを発足しました 初回から、GCE/GKE/CloudSQL/BigQuery ML (とElixir)で動くアプリをライブデモする実践セッション

  16. 15 本編ここから

  17. 16 目次 1. BigQuery/BigQuery MLとは? 2. KaggleをBigQuery MLで攻略する 3. BigQuery入門

    4. BigQuery ML入門 5. Kaggleで予測結果を評価してもらう
  18. 17 1.BigQuery/BigQuery MLとは?

  19. 18 1.BigQuery/BigQuery ML (BQML) とは? BigQueryは、GCPで提供される、ペタバイト級のビッグデータを 手軽に扱えるデータウェアハウスです ポピュラーなSQLにより、既存DBと同じ操作感を実現しつつ、 巨大なデータを数秒で処理できる (裏でオートスケールされる)、

    容易性と高速処理を両立した、列指向ストレージです https://cloud.google.com/bigquery/ BigQuery ML (Machine Learning) は、上記BigQuery に投入済のデータから、SQLだけで機械学習モデルの自動構築 と予測ができる、新世代のAI・ML開発環境です https://cloud.google.com/bigquery/#bigqueryml
  20. 19 2.KaggleをBigQuery MLで攻略する

  21. 20 2.KaggleをBigQuery MLで攻略する Kaggleとは、全世界のデータサイエンティストが賞金獲得を争う コンペサイトで、上位入賞者は高額でヘッドハンティングされます 今回、BigQuery MLを使って、このKaggleのコンペを攻略して みたいと思います

  22. 21 2.KaggleをBigQuery MLで攻略する 対象コンペとして、Kaggleで最も有名なチュートリアル的存在、 「タイタニック生存者予測」を扱います (上部「Data」から訓練データとテストデータをダウンロードします)

  23. 22 2.KaggleをBigQuery MLで攻略する ちなみに、データ前処理は、Elixirで開発したデータサイエンス OSS「Esuna」を使って実施しました (手順は下記コラム参照) https://qiita.com/piacere_ex/items/ab0b32c521293d4ab38e

  24. 23 3.BigQuery入門

  25. 24 3.BigQuery入門 「BigQuery」は、GCPメニュー下方にあります

  26. 25 3.BigQuery入門 左メニューのインスタンスを選び、「データセットを作成」をクリック

  27. 26 3.BigQuery入門 データセットはDB的な存在で、配下にテーブル追加できます 日数指定で自動削除も可能です (うっかり課金が気になる方はコレ)

  28. 27 3.BigQuery入門 「テーブルを作成」でテーブル作成およびデータ投入ができます

  29. 28 3.BigQuery入門 GCS/アップロード/GoogleDriveで投入データを指定します

  30. 29 3.BigQuery入門 投入データのフォーマットは、CSV含む5種類から選べます

  31. 30 3.BigQuery入門 テーブルの列型は、投入データから「自動検出」で判別できます

  32. 31 3.BigQuery入門 CSVにヘッダー行がある場合は、「スキップするヘッダー行」に「1」 を指定してください (先々月は要らなかった…)

  33. 32 3.BigQuery入門 投入データから「自動検出」された列型でテーブル作成されます

  34. 33 3.BigQuery入門 投入データの行数が正しいかを「詳細」タブで確認します

  35. 34 3.BigQuery入門 投入データの内容は、「プレビュー」タブで確認できます

  36. 35 3.BigQuery入門 「クエリエディタ」でSQLを編集/実行できます

  37. 36 3.BigQuery入門 結果は、DL/テーブル保存/GoogleDrive保存が選べます

  38. 37 3.BigQuery入門 SQLは、「クエリを保存」「保存したクエリ」で保存/復帰できます

  39. 38 3.BigQuery入門 「クエリをエディタで開く」か[↓]アイコンでSQLを再編集できます

  40. 39 3.BigQuery入門 ▪注意点 • scikit-learnやKerasで利用することを想定した前処理後 のデータを投入する場合、キーが削除済みであることが多い ですが、キーが無いと、BigQueryではソートできなくなるため、 キーが残っているデータを使ってください • 特徴量と正解データは、分割されていない方が、BigQuery

    では扱いやすいです (分割されていても、joinすればOK)
  41. 40 4.BigQuery ML入門

  42. 41 4.BigQuery ML入門 モデル構築は、SQLの「create model」で行います

  43. 42 4.BigQuery ML入門 create modelでは、モデルタイプとして、以下2つが選べます ① linear_reg…線形回帰モデル ② logistic_reg…ロジスティック回帰モデル 続くselect文にて、特徴量

    (入力データのこと、キー列は削除) と正解データのセットを設定しますが、正解データの列名として、 「label」という固定列名を指定する必要があります create model titanic.linear_model options( model_type = 'linear_reg' ) as select --t.PassengerId, t.Pclass, t.Sex, t.Age, t.SibSp, t.Parch, t.Fare, t.Embarked, s.Survived as label -- 正解データは「label」とする必要がある from titanic.fit_train t, titanic.fit_supervised s where t.PassengerId = s.PassengerId
  44. 43 4.BigQuery ML入門 【参考:機械学習、ディープラーニングに詳しい方向け】 option指定できるパラメータは、機械学習やディープラーニング をやっている方には、お馴染みのものが利用できます https://cloud.google.com/bigquery/docs/reference/standard-sql/bigqueryml-syntax-create

  45. 44 4.BigQuery ML入門

  46. 45 4.BigQuery ML入門

  47. 46 4.BigQuery ML入門

  48. 47 4.BigQuery ML入門 モデルによる予測は、「ml.predict」で行います

  49. 48 4.BigQuery ML入門 ml.predictで、テストデータと予測値「predicted_label」が セットになったものが返ってくるので、Kaggle提出用の加工として、 キーの「PasesngerId」と、予測値を「Survived」と列名変更 した2列を出力します なお、キーでソートしないと、データ順がバラバラになるので、 order byでキーを指定しておきます

    select PassengerId, predicted_label as Survived from ( select * from ml.predict( model titanic.linear_model, table titanic.fit_test ) ) predict order by PassengerId
  50. 49 4.BigQuery ML入門 結果は、CSV/JSONダウンロードしたり、テーブル化できます

  51. 50 4.BigQuery ML入門 ▪注意点 • predicted_labelが、欲しい答えの桁になっていない場合 (たとえば、0/1が欲しいところが、小数点数値で返ってきて いる等)は、データ加工が必要です

  52. 51 5.Kaggleで予測結果を評価してもらう

  53. 52 5.Kaggleで予測結果を評価してもらう 「Submit Predictions」から結果CSVをアップロードします

  54. 53 5.Kaggleで予測結果を評価してもらう 線形/ロジスティック共にスコア更新ならずも、DLの結果に肉薄 以前、適当なKerasモデルで出したスコア https://qiita.com/piacere_ex/items/771389e1fe66dcf795c5 今回、BigQuery MLで出したスコア (Kerasモデルより0.02低い)

  55. 54 ご清聴ありがとうございます