Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
GCPUG kitakyu#1/熊本#1「BigQuery+BigQueryMLでKaggle...
Search
piacerex
February 14, 2019
Programming
1.7k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
GCPUG kitakyu#1/熊本#1「BigQuery+BigQueryMLでKaggle機械学習を攻略してみた」
piacerex
February 14, 2019
More Decks by piacerex
See All by piacerex
実践生成AIレクチャー会(基本編)※高度編イントロ無版
piacerex
1
410
「エッジ×分散生成AI」の技術と変わる産業、そしてITの未来
piacerex
0
790
今のコンピュータ、AI にも Web にも 向いていないので 作り直そう!!
piacerex
1
2.1k
ノーコードと生成AI、IoTが繋がると何が出来るか?
piacerex
0
110
ElixirがHW化され、最新CPU/GPU/NWを過去のものとする数万倍、高速+超省電力化されたWeb/動画配信/AIが動く日
piacerex
0
600
fukuoka.ex/kokura.exとElixirって何ソレ美味しいの?つまみ食い
piacerex
0
170
PMMとは? … モダンなSaaSプロダクトに必須な役割(「プロマネチョットデキル#5」より)
piacerex
0
310
とうとう実践配備された ElixirDesktopにようこそ!!
piacerex
0
1.8k
7年間アドカレ続け、トップランカー入りしたElixirにようこそ!!
piacerex
0
390
Other Decks in Programming
See All in Programming
Go 1.27 における memory allocation の高速化
andpad
0
170
運用ダッシュボードの設計を誰も教えてくれないのだけどみなさんどうしてるんですか? - チームに監視するという文化を根付かせるための第一歩を踏みたい -
satoshi256kbyte
1
110
自動化したのに回らない テスト運用の壁―AI時代の品質責任と生産性
mfunaki
0
160
Terraform標準の組織で AWS CDKをどう使うか
mu7889yoon
1
510
AI時代のPHPer生存戦略 ~「言語、もうなんでもよくない?」に本気で向き合う~
vivion
0
360
Detecting Compromised CI with eBPF and Cilium Tetragon
lizrice
0
180
VibeCodingからAgenticWorkflowへ
starfish719
0
440
Cloudflare is Agents
chimame
0
160
人間の目はかわらない、だからJPEGは30年もつ
yuzneri
12
18k
What's New in Android 2026
veronikapj
0
260
JAWS-UG横浜 #102 AWSサ終供養LT会 成仏できない AWS サービスたち 〜本日、三体供養します〜
maroon1st
0
360
属人化した知識を、 AIが辿れる地図にする
pkshadeck
PRO
1
170
Featured
See All Featured
Optimizing for Happiness
mojombo
378
71k
HDC tutorial
michielstock
2
790
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
73
41k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
620
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
160
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
Designing Experiences People Love
moore
143
24k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
470
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
410
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
250
Transcript
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作成
カラビナテクノロジー株式会社 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
OSS書いて、仕事作りつつ、AIチームのトップもやります
プログラマを35年間続け、現在、「重力プログラマ」中 重力波解析するし、重力・流体・天体シミュレータも作る
4 2018/9/13 福岡 理学部 十限目 「重力と宇宙を愛する全ての人に」 #3
重力・宇宙イベント会 第1回は、こんな感じでした
福岡で人工衛星飛ばす企業、QPS大西さんも登壇
None
マイナー言語でも、地味に皆様の生活を支えるインフラ
ライブデモする「MeetUp」+入門者OKな「もくもく会」 仕事終わり、くつろぎ、ほろ酔いつつ、Elixir/Phoenix による先端プログラミングに触れるイベントを定期開催 リモート参加もできますので、よろしければ、 ”福岡 Elixir” でググって、connpassご登録ください もくもく会 (毎月、入門者もOK) MeetUp
(隔月、経験者向け)
GPUドライバとscikit-learn/Keras相当を実装中 「Elixir」の性能・並列性・生産性をAI・ML文脈でも活かすため、 fukuoka.exでGPU実装を行い、機械学習エンジン開発中です 半年後にはscikit-learn相当、1年以内には、GPU対応済の Keras相当をリリース予定です 北九大、京大の先生と共に Elixir GPU活用の共同研究 論文も書いてます
AI・MLに欠かせない前処理系をOSSで無償提供 AI・MLには、前処理 (データクレンジング、変換・集計・加工) が 欠かせませんが、Elixir+Phoenix+Vue.jsで開発したOSS 「Esuna」を使えば、UI上でデータ処理を設定でき、AI・MLへと スムースにデータを流せます
AI学校「AIジョブカレ」の福岡代表&講師やってます AI権威の松尾研出身で「詳解ディープラーニング」著者、 巣籠さん監修のAI学校、現役のエンジニアが講義中 https://www.aijobcolle.com/
None
2019年1月にGCPUG kitakyuを発足しました 初回から、GCE/GKE/CloudSQL/BigQuery ML (とElixir)で動くアプリをライブデモする実践セッション
15 本編ここから
16 目次 1. BigQuery/BigQuery MLとは? 2. KaggleをBigQuery MLで攻略する 3. BigQuery入門
4. BigQuery ML入門 5. Kaggleで予測結果を評価してもらう
17 1.BigQuery/BigQuery MLとは?
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
19 2.KaggleをBigQuery MLで攻略する
20 2.KaggleをBigQuery MLで攻略する Kaggleとは、全世界のデータサイエンティストが賞金獲得を争う コンペサイトで、上位入賞者は高額でヘッドハンティングされます 今回、BigQuery MLを使って、このKaggleのコンペを攻略して みたいと思います
21 2.KaggleをBigQuery MLで攻略する 対象コンペとして、Kaggleで最も有名なチュートリアル的存在、 「タイタニック生存者予測」を扱います (上部「Data」から訓練データとテストデータをダウンロードします)
22 2.KaggleをBigQuery MLで攻略する ちなみに、データ前処理は、Elixirで開発したデータサイエンス OSS「Esuna」を使って実施しました (手順は下記コラム参照) https://qiita.com/piacere_ex/items/ab0b32c521293d4ab38e
23 3.BigQuery入門
24 3.BigQuery入門 「BigQuery」は、GCPメニュー下方にあります
25 3.BigQuery入門 左メニューのインスタンスを選び、「データセットを作成」をクリック
26 3.BigQuery入門 データセットはDB的な存在で、配下にテーブル追加できます 日数指定で自動削除も可能です (うっかり課金が気になる方はコレ)
27 3.BigQuery入門 「テーブルを作成」でテーブル作成およびデータ投入ができます
28 3.BigQuery入門 GCS/アップロード/GoogleDriveで投入データを指定します
29 3.BigQuery入門 投入データのフォーマットは、CSV含む5種類から選べます
30 3.BigQuery入門 テーブルの列型は、投入データから「自動検出」で判別できます
31 3.BigQuery入門 CSVにヘッダー行がある場合は、「スキップするヘッダー行」に「1」 を指定してください (先々月は要らなかった…)
32 3.BigQuery入門 投入データから「自動検出」された列型でテーブル作成されます
33 3.BigQuery入門 投入データの行数が正しいかを「詳細」タブで確認します
34 3.BigQuery入門 投入データの内容は、「プレビュー」タブで確認できます
35 3.BigQuery入門 「クエリエディタ」でSQLを編集/実行できます
36 3.BigQuery入門 結果は、DL/テーブル保存/GoogleDrive保存が選べます
37 3.BigQuery入門 SQLは、「クエリを保存」「保存したクエリ」で保存/復帰できます
38 3.BigQuery入門 「クエリをエディタで開く」か[↓]アイコンでSQLを再編集できます
39 3.BigQuery入門 ▪注意点 • scikit-learnやKerasで利用することを想定した前処理後 のデータを投入する場合、キーが削除済みであることが多い ですが、キーが無いと、BigQueryではソートできなくなるため、 キーが残っているデータを使ってください • 特徴量と正解データは、分割されていない方が、BigQuery
では扱いやすいです (分割されていても、joinすればOK)
40 4.BigQuery ML入門
41 4.BigQuery ML入門 モデル構築は、SQLの「create model」で行います
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
43 4.BigQuery ML入門 【参考:機械学習、ディープラーニングに詳しい方向け】 option指定できるパラメータは、機械学習やディープラーニング をやっている方には、お馴染みのものが利用できます https://cloud.google.com/bigquery/docs/reference/standard-sql/bigqueryml-syntax-create
44 4.BigQuery ML入門
45 4.BigQuery ML入門
46 4.BigQuery ML入門
47 4.BigQuery ML入門 モデルによる予測は、「ml.predict」で行います
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
49 4.BigQuery ML入門 結果は、CSV/JSONダウンロードしたり、テーブル化できます
50 4.BigQuery ML入門 ▪注意点 • predicted_labelが、欲しい答えの桁になっていない場合 (たとえば、0/1が欲しいところが、小数点数値で返ってきて いる等)は、データ加工が必要です
51 5.Kaggleで予測結果を評価してもらう
52 5.Kaggleで予測結果を評価してもらう 「Submit Predictions」から結果CSVをアップロードします
53 5.Kaggleで予測結果を評価してもらう 線形/ロジスティック共にスコア更新ならずも、DLの結果に肉薄 以前、適当なKerasモデルで出したスコア https://qiita.com/piacere_ex/items/771389e1fe66dcf795c5 今回、BigQuery MLで出したスコア (Kerasモデルより0.02低い)
54 ご清聴ありがとうございます