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
The NotImplementedError Problem in Ruby
koic
1
660
Spec-Driven Development with AI-Agents: From High-Level Requirements to Working Software
antonarhipov
2
470
代数的データ型って何が嬉しいの? #frontend_phpcon_do
kajitack
8
3.3k
LLM本来の能力を解き放つサンドボックス技術とAI民主化への適用
yukukotani
3
3.4k
AIで効率化できた業務・日常
ochtum
0
120
New "Type" system on PicoRuby
pocke
1
730
LLM Plugin for Node-REDの利用方法と開発について
404background
0
160
DynamoDBには集計系のクエリがないけどなんとかしたい
musan
1
130
Spring Security 実践 ─ GraphQL APIで実務に役立つ 認証・認可 を学ぶ
wagyu
0
200
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
680
AIとASP.NET Coreで雑Webアプリを作った話
mayuki
0
460
CLIであることを活かしたGitHub Copilot CLI活用術 / GitHub Copilot CLI Pro Tips & Tricks
nao_mk2
1
1.2k
Featured
See All Featured
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
220
How to train your dragon (web standard)
notwaldorf
97
6.7k
Google's AI Overviews - The New Search
badams
0
1k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.3k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
400
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.2k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
160
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
130
Crafting Experiences
bethany
1
170
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
580
Navigating Weather and Climate Data
rabernat
0
210
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 ご清聴ありがとうございます