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
370
「エッジ×分散生成AI」の技術と変わる産業、そしてITの未来
piacerex
0
710
今のコンピュータ、AI にも Web にも 向いていないので 作り直そう!!
piacerex
1
2k
ノーコードと生成AI、IoTが繋がると何が出来るか?
piacerex
0
94
ElixirがHW化され、最新CPU/GPU/NWを過去のものとする数万倍、高速+超省電力化されたWeb/動画配信/AIが動く日
piacerex
0
570
fukuoka.ex/kokura.exとElixirって何ソレ美味しいの?つまみ食い
piacerex
0
160
PMMとは? … モダンなSaaSプロダクトに必須な役割(「プロマネチョットデキル#5」より)
piacerex
0
290
とうとう実践配備された ElixirDesktopにようこそ!!
piacerex
0
1.8k
7年間アドカレ続け、トップランカー入りしたElixirにようこそ!!
piacerex
0
380
Other Decks in Programming
See All in Programming
dRuby over BLE
makicamel
2
330
さぁV100、メモリをお食べ・・・
nilpe
0
130
Semantic Version 単位で戦略を柔軟に変えて、パッケージアップデートを自動化する
daitasu
0
180
肥大化するレガシーコードに立ち向かうためのインターフェース分離と依存の逆転 / JJUG CCC 2026 Spring
hirokunimaeta
0
520
tsserverとは何だったのか、これからどうなるのか
nowaki28
1
460
作って学ぶ、 JSX (TSX) ランタイムの基本
syumai
7
1.6k
jQueryをバージョンアップする前に使いたいjQuery Migrate
matsuo_atsushi
0
200
ADKを使って簡単にAIエージェントを作ってみよう
k1mu21
0
240
AI 時代のソフトウェア設計の学び方
masuda220
PRO
29
12k
Java × distroless で 軽量なコンテナイメージを / Java on Distroless
contour_gara
0
510
These Five Tricks Can Make Your Apps Greener, Cheaper, & Nicer
hollycummins
0
280
IBM Bobを活用したレガシーアプリの最新化
oniak3ibm
PRO
1
180
Featured
See All Featured
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4k
Music & Morning Musume
bryan
47
7.2k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
What's in a price? How to price your products and services
michaelherold
247
13k
The Cult of Friendly URLs
andyhume
79
6.9k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
360
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
330
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
200
The Pragmatic Product Professional
lauravandoore
37
7.3k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.3k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.3k
Git: the NoSQL Database
bkeepers
PRO
432
67k
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 ご清聴ありがとうございます