Slide 1

Slide 1 text

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作成

Slide 2

Slide 2 text

カラビナテクノロジー株式会社 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

Slide 3

Slide 3 text

OSS書いて、仕事作りつつ、AIチームのトップもやります

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

15 本編ここから

Slide 17

Slide 17 text

16 目次 1. BigQuery/BigQuery MLとは? 2. KaggleをBigQuery MLで攻略する 3. BigQuery入門 4. BigQuery ML入門 5. Kaggleで予測結果を評価してもらう

Slide 18

Slide 18 text

17 1.BigQuery/BigQuery MLとは?

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

19 2.KaggleをBigQuery MLで攻略する

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

23 3.BigQuery入門

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

40 4.BigQuery ML入門

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

43 4.BigQuery ML入門 【参考:機械学習、ディープラーニングに詳しい方向け】 option指定できるパラメータは、機械学習やディープラーニング をやっている方には、お馴染みのものが利用できます https://cloud.google.com/bigquery/docs/reference/standard-sql/bigqueryml-syntax-create

Slide 45

Slide 45 text

44 4.BigQuery ML入門

Slide 46

Slide 46 text

45 4.BigQuery ML入門

Slide 47

Slide 47 text

46 4.BigQuery ML入門

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

49 4.BigQuery ML入門 結果は、CSV/JSONダウンロードしたり、テーブル化できます

Slide 51

Slide 51 text

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

Slide 52

Slide 52 text

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

Slide 53

Slide 53 text

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

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

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