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
tidymodels紹介「モデリング過程料理で表現できる説」
Search
Ringa_hyj
December 05, 2020
Technology
0
430
tidymodels紹介「モデリング過程料理で表現できる説」
JapanR 20201205 一般LT
R
tidymodels
Ringa_hyj
December 05, 2020
Tweet
Share
More Decks by Ringa_hyj
See All by Ringa_hyj
DVCによるデータバージョン管理
ringa_hyj
0
91
deeplakeによる大規模データのバージョン管理と深層学習フレームワークとの接続
ringa_hyj
0
59
Hydraを使った設定ファイル管理とoptunaプラグインでのパラメータ探索
ringa_hyj
0
66
ClearMLで行うAIプロジェクトの管理(レポート,最適化,再現,デプロイ,オーケストレーション)
ringa_hyj
0
62
Catching up with the tidymodels.[Japan.R 2021 LT]
ringa_hyj
3
840
多次元尺度法MDS
ringa_hyj
0
290
因子分析(仮)
ringa_hyj
0
150
階層、非階層クラスタリング
ringa_hyj
0
120
深層学習をつかった画像スタイル変換の話と今までの歴史
ringa_hyj
0
420
Other Decks in Technology
See All in Technology
ML Pipelineの開発と運用を OpenTelemetryで繋ぐ @ OpenTelemetry Meetup 2025-07
getty708
0
260
MCPに潜むセキュリティリスクを考えてみる
milix_m
1
740
生成AIによる情報システムへのインパクト
taka_aki
1
150
Microsoft Defender XDRで疲弊しないためのインシデント対応
sophiakunii
3
400
データ駆動経営の道しるべ:プロダクト開発指標の戦略的活用法
ham0215
2
230
分散トレーシングによる コネクティッドカーのデータ処理見える化の試み
thatsdone
0
220
Snowflake のアーキテクチャは本当に筋がよかったのか / Data Engineering Study #30
indigo13love
0
260
ecspressoの設計思想に至る道 / sekkeinight2025
fujiwara3
11
1.5k
ObsidianをLLM時代のナレッジベースに! クリッピング→Markdown→CLI連携の実践
srvhat09
7
9.1k
「AI駆動開発」のボトルネック『言語化』を効率化するには
taniiicom
1
120
Railsの限界を超えろ!「家族アルバム みてね」の画像・動画の大規模アップロードを支えるアーキテクチャの変遷
ojima_h
3
410
怖くない!GritQLでBiomeプラグインを作ろうよ
pal4de
1
120
Featured
See All Featured
Navigating Team Friction
lara
187
15k
The Straight Up "How To Draw Better" Workshop
denniskardys
235
140k
The Invisible Side of Design
smashingmag
301
51k
Reflections from 52 weeks, 52 projects
jeffersonlam
351
21k
Statistics for Hackers
jakevdp
799
220k
The Cult of Friendly URLs
andyhume
79
6.5k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
760
Why Our Code Smells
bkeepers
PRO
337
57k
Designing for Performance
lara
610
69k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
282
13k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
357
30k
Facilitating Awesome Meetings
lara
54
6.5k
Transcript
japan.R 2020/12/5
@Ringa_hyj @Ringa_hyj Name <- ‘@Ringa_hyj’ 自 己 紹 介 スライドの
間違い・指摘 歓迎致します
https://www.slideshare.net/YutakaKuroki/tokyo-r-20181110 https://speakerdeck.com/dropout009/tokyo-dot-r83 Rコミュニティを通して知ったtidymodelsの存在 https://speakerdeck.com/dropout009/tidymodelsniyorutidynaji-jie-xue-xi https://speakerdeck.com/s_uryu/tidymodels
知らないパッケージを知る機会 やっぱRコミュニティええなぁ… 受け取ったからには 何かお返ししたい!! 今日やること
tidymodelsの紹介 検 証 対 象 今日やること
を 今日やること
料理に例えるので親しんでもらいたい 今日やること install.packages(‘tidymodels’) library(tidymodels) いれてみて!!
飛行機の遅延予測
食材 の準備 = 欠損値 messy データ準備・前処理 library(nycflights13) #まず確認 library(skimr) skim(flights)
library(tidyverse) glimpse(flights) #余分なゴミを落とす flight_data <- flights %>% mutate( arr_delay = ifelse(arr_delay >= 30, "late", "on_time"), arr_delay = factor(arr_delay), date = as.Date(time_hour) ) %>% inner_join(weather, by = c("origin", "time_hour")) %>% select(dep_time, flight, origin, dest, air_time, distance, carrier, date, arr_delay, time_hour) %>% na.omit() %>% mutate_if(is.character, as.factor)
食材 の準備 = データ準備・前処理
食材 の確認 = #食材の状態や揃っているかを確認 p <- ggplot(flight_data, aes(x = carrier,fill=arr_delay))
+ geom_bar(stat = "count",position = "stack") + stat_count(aes(label = ..count..), geom = "text", vjust = 2, colour = "red") library(plotly) ggplotly(p) EDAで確認 EDA
食材 の確認 = EDA
味見・評価 する人 = train,test,valid #試食者にだけウケる味でなく #色々な人に良い評価をもらうため set.seed(123) data_split <- initial_split(flight_data,
prop = 0.7) train_data <- training(data_split) test_data <- testing(data_split) train test valid 感想:内輪ウケ 世間的な評価 口コミ 感想:一般ウケ
調理手順 の設定 = モデル学習用の前処理 #どんな手順で調理するのが効率的か #料理直前の下ごしらえ #trainとtestの人で提供する食材の部分が変化しないか flights_rec <- recipe(arr_delay
~ ., data = train_data) %>% update_role(flight, time_hour, new_role = "ID") %>% step_date(date, features = c("dow", "month")) %>% step_holiday(date, holidays = timeDate::listHolidays("US")) %>% step_rm(date) %>% step_dummy(all_nominal(), -all_outcomes()) %>% step_zv(all_predictors()) #step_smote()今回不均衡だが不使用 ← themisにも対応 #recipeをかけた後がどうなるか #調理前にデータを味見する #prep, bake, juice flights_rec%>% prep() %>% juice() flights_rec %>% prep() %>% bake(test_data)
調理手順 の設定 = モデル学習用の前処理 従来まで ・testにないカテゴリをone hotしないように! ・ID列を予測に使ってないよな? ・どの列box-coxしたっけ? ・日付から月,日,曜日の特徴量合成したっけ?
・正規化終わってたっけ? ・予測対象がleakしてないよな? ・あ、testにも同じパラメタで処理しなきゃいけないんだった… juice(), bake() レシピを展開
調理器具 の設定 = モデル決め #調理前の下ごしらえも終わった #調理器具によってはマッチしない下ごしらえもある #フライパンか鍋か、IHかガスか lr_mod <- logistic_reg()
%>% set_engine("glm")
調理器具 の設定 = モデル決め モデル式の記述の違い(ベクトル,マトリックス,列名) lm glmnet lr_mod <- logistic_reg()
%>% set_engine("lm") lr_mod <- logistic_reg() %>% set_engine("glm")
調理器具 の設定 = モデル決め 内部パラメタの名前の違い(おなじチューニングパラメタなのに…) ranger randomForest ranger randomForest parsnip
抽出サイズ mtry mtry → mtry 木の数 num.trees ntree → trees 分割サイズ min.node.size nodesize → min_n
調理場 手順と器具を持って へ = 学習・推論 #調理場へ持っていく flights_wflow <- workflow() %>%
add_model(lr_mod) %>% add_recipe(flights_rec) #いざ調理 flights_fit <- flights_wflow %>% fit(data = train_data) #完成 predict(flights_fit, test_data) predict(flights_fit, test_data, type = "prob")
調理場 手順と器具を持って へ = 学習・推論 従来のsummary() oh, messy…
調理場 手順と器具を持って へ = 学習・推論 tidy() is tidy !
調理場 手順と器具を持って へ = 学習・推論 bootstrapして fitして 結果をnest & tidyにして
回帰係数のサンプリング分布から 最善モデルの選択
料理人 から話を聞く= レシピ,データ逆引き #さっき調理fitした結果 #flights_fit <- # flights_wflow %>% #
fit(data = train_data) #食材教えてぇな flights_fit %>% pull_workflow_mold() #レシピ教えてぇな flights_fit %>% pull_workflow_prepped_recipe() %>% broom::tidy() flights_fit %>% pull_workflow_preprocessor() %>% broom::tidy()
#評価結果は? flights_pred <- predict(flights_fit, test_data, type = "prob") %>% bind_cols(test_data
%>% select(arr_delay,time_hour,flight)) flights_pred %>% roc_curve(truth = arr_delay, .pred_late) %>% autoplot() 世間的な評価 口コミ 評価 を調べる= 評価指標の確認
評価 を調べる= 評価指標の確認 Tidymodelsのpredict思想 ・ 入 力 デ ー タ
と 同 じ だ け の p r e d を ( 行 数 一 致 、 b i n d _ c o l で き る ) ・ I D 列 を 常 に 隣 に 保 持 で き る よ う に ・ 列 名 は 「 . p r e d 」 で 被 り な く
Enjoy !
reference https://www.tidymodels.org/ https://rstudio-conf-2020.github.io/applied-ml/Part_3.html#1 https://unsplash.com/ https://www.tidyverse.org/blog/2020/02/themis-0-1-0/