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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Ringa_hyj
December 05, 2020
Technology
0
620
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
270
deeplakeによる大規模データのバージョン管理と深層学習フレームワークとの接続
ringa_hyj
0
94
Hydraを使った設定ファイル管理とoptunaプラグインでのパラメータ探索
ringa_hyj
0
200
ClearMLで行うAIプロジェクトの管理(レポート,最適化,再現,デプロイ,オーケストレーション)
ringa_hyj
0
190
Catching up with the tidymodels.[Japan.R 2021 LT]
ringa_hyj
3
860
多次元尺度法MDS
ringa_hyj
0
330
因子分析(仮)
ringa_hyj
0
180
階層、非階層クラスタリング
ringa_hyj
0
150
深層学習をつかった画像スタイル変換の話と今までの歴史
ringa_hyj
0
470
Other Decks in Technology
See All in Technology
プロジェクトマネジメントをチームに宿す -ゼロからはじめるチームプロジェクトマネジメントは活動1年未満のチームの教科書です- / 20260304 Shigeki Morizane
shift_evolve
PRO
1
110
「使いにくい」も「運用疲れ」も卒業する UIデザイナーとエンジニアが創る持続可能な内製開発
nrinetcom
PRO
1
780
白金鉱業Meetup_Vol.22_Orbital Senseを支える衛星画像のマルチモーダルエンベディングと地理空間のあいまい検索技術
brainpadpr
2
200
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
15
95k
Kaggleの経験が実務にどう活きているか / kaggle_findy
sansan_randd
4
730
「ストレッチゾーンに挑戦し続ける」ことって難しくないですか? メンバーの持続的成長を支えるEMの環境設計
sansantech
PRO
1
310
Introduction to Sansan Meishi Maker Development Engineer
sansan33
PRO
0
360
Oracle Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
4
1.6k
「ヒットする」+「近い」を同時にかなえるスマートサジェストの作り方.pdf
nakasho
0
110
管理者向けGitHub Enterpriseの運用Tips紹介: 人にもAIにも優しいプラットフォームづくり
yuriemori
0
110
Claude Codeの進化と各機能の活かし方
oikon48
8
2.6k
DX Improvement at Scale
ntk1000
2
280
Featured
See All Featured
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
120
The SEO Collaboration Effect
kristinabergwall1
0
380
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
It's Worth the Effort
3n
188
29k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
1
1.3k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
850
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
150
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
1
1.4k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.1k
Everyday Curiosity
cassininazir
0
150
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
65
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/