Enviar pesquisa
Carregar
レコメンドエンジン作成コンテストの勝ち方
•
35 gostaram
•
12,964 visualizações
S
Shun Nukui
Seguir
PyData.Tokyo Meetup #18での講演資料です。 https://pydatatokyo.connpass.com/event/
Leia menos
Leia mais
Dados e análise
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 51
Baixar agora
Baixar para ler offline
Recomendados
NLP2023 緊急パネル:ChatGPTで自然言語処理は終わるのか? 説明スライド
NLP2023 緊急パネル:ChatGPTで自然言語処理は終わるのか? 説明スライド
JunSuzuki21
【論文調査】XAI技術の効能を ユーザ実験で評価する研究
【論文調査】XAI技術の効能を ユーザ実験で評価する研究
Satoshi Hara
レコメンドアルゴリズムの基本と周辺知識と実装方法
レコメンドアルゴリズムの基本と周辺知識と実装方法
Takeshi Mikami
【基調講演】『深層学習の原理の理解に向けた理論の試み』 今泉 允聡(東大)
【基調講演】『深層学習の原理の理解に向けた理論の試み』 今泉 允聡(東大)
MLSE
ブレインパッドにおける機械学習プロジェクトの進め方
ブレインパッドにおける機械学習プロジェクトの進め方
BrainPad Inc.
機械学習で泣かないためのコード設計
機械学習で泣かないためのコード設計
Takahiro Kubo
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
Preferred Networks
2019年度チュートリアルBPE
2019年度チュートリアルBPE
広樹 本間
Recomendados
NLP2023 緊急パネル:ChatGPTで自然言語処理は終わるのか? 説明スライド
NLP2023 緊急パネル:ChatGPTで自然言語処理は終わるのか? 説明スライド
JunSuzuki21
【論文調査】XAI技術の効能を ユーザ実験で評価する研究
【論文調査】XAI技術の効能を ユーザ実験で評価する研究
Satoshi Hara
レコメンドアルゴリズムの基本と周辺知識と実装方法
レコメンドアルゴリズムの基本と周辺知識と実装方法
Takeshi Mikami
【基調講演】『深層学習の原理の理解に向けた理論の試み』 今泉 允聡(東大)
【基調講演】『深層学習の原理の理解に向けた理論の試み』 今泉 允聡(東大)
MLSE
ブレインパッドにおける機械学習プロジェクトの進め方
ブレインパッドにおける機械学習プロジェクトの進め方
BrainPad Inc.
機械学習で泣かないためのコード設計
機械学習で泣かないためのコード設計
Takahiro Kubo
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
Preferred Networks
2019年度チュートリアルBPE
2019年度チュートリアルBPE
広樹 本間
【メタサーベイ】基盤モデル / Foundation Models
【メタサーベイ】基盤モデル / Foundation Models
cvpaper. challenge
Kaggleのテクニック
Kaggleのテクニック
Yasunori Ozaki
線形計画法入門
線形計画法入門
Shunji Umetani
【DL輪読会】時系列予測 Transfomers の精度向上手法
【DL輪読会】時系列予測 Transfomers の精度向上手法
Deep Learning JP
機械学習で泣かないためのコード設計 2018
機械学習で泣かないためのコード設計 2018
Takahiro Kubo
リクルート式 自然言語処理技術の適応事例紹介
リクルート式 自然言語処理技術の適応事例紹介
Recruit Technologies
機械学習モデルの判断根拠の説明(Ver.2)
機械学習モデルの判断根拠の説明(Ver.2)
Satoshi Hara
機械学習チュートリアル@Jubatus Casual Talks
機械学習チュートリアル@Jubatus Casual Talks
Yuya Unno
実務と論文で学ぶジョブレコメンデーション最前線2022
実務と論文で学ぶジョブレコメンデーション最前線2022
Teruyuki Sakaue
分散表現を用いたリアルタイム学習型セッションベース推薦システム
分散表現を用いたリアルタイム学習型セッションベース推薦システム
Okamoto Laboratory, The University of Electro-Communications
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
Shota Imai
研究効率化Tips Ver.2
研究効率化Tips Ver.2
cvpaper. challenge
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
RyuichiKanoh
BlackBox モデルの説明性・解釈性技術の実装
BlackBox モデルの説明性・解釈性技術の実装
Deep Learning Lab(ディープラーニング・ラボ)
大規模言語モデルとChatGPT
大規模言語モデルとChatGPT
nlab_utokyo
継続的なモデルモニタリングを実現するKubernetes Operator
継続的なモデルモニタリングを実現するKubernetes Operator
Yahoo!デベロッパーネットワーク
時系列予測にTransformerを使うのは有効か?
時系列予測にTransformerを使うのは有効か?
Fumihiko Takahashi
不均衡データのクラス分類
不均衡データのクラス分類
Shintaro Fukushima
強化学習その2
強化学習その2
nishio
『バックドア基準の入門』@統数研研究集会
『バックドア基準の入門』@統数研研究集会
takehikoihayashi
Springのプログラムモデルと動く仕様~テスト編~
Springのプログラムモデルと動く仕様~テスト編~
terahide
Ques12_自動テスト ✕ 機械学習 〜自動テスト結果分析は楽になるか?〜
Ques12_自動テスト ✕ 機械学習 〜自動テスト結果分析は楽になるか?〜
Mao Yamaguchi
Mais conteúdo relacionado
Mais procurados
【メタサーベイ】基盤モデル / Foundation Models
【メタサーベイ】基盤モデル / Foundation Models
cvpaper. challenge
Kaggleのテクニック
Kaggleのテクニック
Yasunori Ozaki
線形計画法入門
線形計画法入門
Shunji Umetani
【DL輪読会】時系列予測 Transfomers の精度向上手法
【DL輪読会】時系列予測 Transfomers の精度向上手法
Deep Learning JP
機械学習で泣かないためのコード設計 2018
機械学習で泣かないためのコード設計 2018
Takahiro Kubo
リクルート式 自然言語処理技術の適応事例紹介
リクルート式 自然言語処理技術の適応事例紹介
Recruit Technologies
機械学習モデルの判断根拠の説明(Ver.2)
機械学習モデルの判断根拠の説明(Ver.2)
Satoshi Hara
機械学習チュートリアル@Jubatus Casual Talks
機械学習チュートリアル@Jubatus Casual Talks
Yuya Unno
実務と論文で学ぶジョブレコメンデーション最前線2022
実務と論文で学ぶジョブレコメンデーション最前線2022
Teruyuki Sakaue
分散表現を用いたリアルタイム学習型セッションベース推薦システム
分散表現を用いたリアルタイム学習型セッションベース推薦システム
Okamoto Laboratory, The University of Electro-Communications
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
Shota Imai
研究効率化Tips Ver.2
研究効率化Tips Ver.2
cvpaper. challenge
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
RyuichiKanoh
BlackBox モデルの説明性・解釈性技術の実装
BlackBox モデルの説明性・解釈性技術の実装
Deep Learning Lab(ディープラーニング・ラボ)
大規模言語モデルとChatGPT
大規模言語モデルとChatGPT
nlab_utokyo
継続的なモデルモニタリングを実現するKubernetes Operator
継続的なモデルモニタリングを実現するKubernetes Operator
Yahoo!デベロッパーネットワーク
時系列予測にTransformerを使うのは有効か?
時系列予測にTransformerを使うのは有効か?
Fumihiko Takahashi
不均衡データのクラス分類
不均衡データのクラス分類
Shintaro Fukushima
強化学習その2
強化学習その2
nishio
『バックドア基準の入門』@統数研研究集会
『バックドア基準の入門』@統数研研究集会
takehikoihayashi
Mais procurados
(20)
【メタサーベイ】基盤モデル / Foundation Models
【メタサーベイ】基盤モデル / Foundation Models
Kaggleのテクニック
Kaggleのテクニック
線形計画法入門
線形計画法入門
【DL輪読会】時系列予測 Transfomers の精度向上手法
【DL輪読会】時系列予測 Transfomers の精度向上手法
機械学習で泣かないためのコード設計 2018
機械学習で泣かないためのコード設計 2018
リクルート式 自然言語処理技術の適応事例紹介
リクルート式 自然言語処理技術の適応事例紹介
機械学習モデルの判断根拠の説明(Ver.2)
機械学習モデルの判断根拠の説明(Ver.2)
機械学習チュートリアル@Jubatus Casual Talks
機械学習チュートリアル@Jubatus Casual Talks
実務と論文で学ぶジョブレコメンデーション最前線2022
実務と論文で学ぶジョブレコメンデーション最前線2022
分散表現を用いたリアルタイム学習型セッションベース推薦システム
分散表現を用いたリアルタイム学習型セッションベース推薦システム
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
研究効率化Tips Ver.2
研究効率化Tips Ver.2
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
BlackBox モデルの説明性・解釈性技術の実装
BlackBox モデルの説明性・解釈性技術の実装
大規模言語モデルとChatGPT
大規模言語モデルとChatGPT
継続的なモデルモニタリングを実現するKubernetes Operator
継続的なモデルモニタリングを実現するKubernetes Operator
時系列予測にTransformerを使うのは有効か?
時系列予測にTransformerを使うのは有効か?
不均衡データのクラス分類
不均衡データのクラス分類
強化学習その2
強化学習その2
『バックドア基準の入門』@統数研研究集会
『バックドア基準の入門』@統数研研究集会
Semelhante a レコメンドエンジン作成コンテストの勝ち方
Springのプログラムモデルと動く仕様~テスト編~
Springのプログラムモデルと動く仕様~テスト編~
terahide
Ques12_自動テスト ✕ 機械学習 〜自動テスト結果分析は楽になるか?〜
Ques12_自動テスト ✕ 機械学習 〜自動テスト結果分析は楽になるか?〜
Mao Yamaguchi
Retty recommendation project
Retty recommendation project
Jiro Iwanaga
企業の中の経済学
企業の中の経済学
Yusuke Kaneko
大規模フロントエンドのクリーンアーキテクチャ化 ~ 年間売上1,000億円企業モノタロウの取組み ~
大規模フロントエンドのクリーンアーキテクチャ化 ~ 年間売上1,000億円企業モノタロウの取組み ~
株式会社MonotaRO Tech Team
カスタマーサクセスのためのデータ整備人の活動記録
カスタマーサクセスのためのデータ整備人の活動記録
syou6162
Supervised Machine Learning of Elastic Stack
Supervised Machine Learning of Elastic Stack
Hiroshi Yoshioka
リクルート式 自然言語処理技術の適応事例紹介
リクルート式 自然言語処理技術の適応事例紹介
Recruit Technologies
コンピュータビジョン技術の実応用とビジネス
コンピュータビジョン技術の実応用とビジネス
Yusuke Uchida
アドテクにおけるBandit Algorithmの活用
アドテクにおけるBandit Algorithmの活用
Komei Fujita
第一回 AI Code Review
第一回 AI Code Review
Ryohei Kamiya
Redmineの情報を自分好みに見える化した話
Redmineの情報を自分好みに見える化した話
ToshiharuSakai
いまできるデータ分析を Power BI ではじめよう
いまできるデータ分析を Power BI ではじめよう
Yugo Shimizu
物体検出コンペティションOpen Imagesに挑む
物体検出コンペティションOpen Imagesに挑む
Hiroto Honda
How to organize data science project (データサイエンスプロジェクトの始め方101)
How to organize data science project (データサイエンスプロジェクトの始め方101)
Yasuyuki Kataoka
LINE Developer Meetup in Tokyo #39 Presentation (modified)
LINE Developer Meetup in Tokyo #39 Presentation (modified)
Yasuharu Nishi
運用中のゲームにAIを導入するには〜プロジェクト推進・ユースケース・運用〜 [DeNA TechCon 2019]
運用中のゲームにAIを導入するには〜プロジェクト推進・ユースケース・運用〜 [DeNA TechCon 2019]
DeNA
先駆者に学ぶ MLOpsの実際
先駆者に学ぶ MLOpsの実際
Tetsutaro Watanabe
リクルート式AIの活用法
リクルート式AIの活用法
Recruit Technologies
Amazon_Rekognitionの使用例_オートバイの画像判別.pdf
Amazon_Rekognitionの使用例_オートバイの画像判別.pdf
ssuserdd6c91
Semelhante a レコメンドエンジン作成コンテストの勝ち方
(20)
Springのプログラムモデルと動く仕様~テスト編~
Springのプログラムモデルと動く仕様~テスト編~
Ques12_自動テスト ✕ 機械学習 〜自動テスト結果分析は楽になるか?〜
Ques12_自動テスト ✕ 機械学習 〜自動テスト結果分析は楽になるか?〜
Retty recommendation project
Retty recommendation project
企業の中の経済学
企業の中の経済学
大規模フロントエンドのクリーンアーキテクチャ化 ~ 年間売上1,000億円企業モノタロウの取組み ~
大規模フロントエンドのクリーンアーキテクチャ化 ~ 年間売上1,000億円企業モノタロウの取組み ~
カスタマーサクセスのためのデータ整備人の活動記録
カスタマーサクセスのためのデータ整備人の活動記録
Supervised Machine Learning of Elastic Stack
Supervised Machine Learning of Elastic Stack
リクルート式 自然言語処理技術の適応事例紹介
リクルート式 自然言語処理技術の適応事例紹介
コンピュータビジョン技術の実応用とビジネス
コンピュータビジョン技術の実応用とビジネス
アドテクにおけるBandit Algorithmの活用
アドテクにおけるBandit Algorithmの活用
第一回 AI Code Review
第一回 AI Code Review
Redmineの情報を自分好みに見える化した話
Redmineの情報を自分好みに見える化した話
いまできるデータ分析を Power BI ではじめよう
いまできるデータ分析を Power BI ではじめよう
物体検出コンペティションOpen Imagesに挑む
物体検出コンペティションOpen Imagesに挑む
How to organize data science project (データサイエンスプロジェクトの始め方101)
How to organize data science project (データサイエンスプロジェクトの始め方101)
LINE Developer Meetup in Tokyo #39 Presentation (modified)
LINE Developer Meetup in Tokyo #39 Presentation (modified)
運用中のゲームにAIを導入するには〜プロジェクト推進・ユースケース・運用〜 [DeNA TechCon 2019]
運用中のゲームにAIを導入するには〜プロジェクト推進・ユースケース・運用〜 [DeNA TechCon 2019]
先駆者に学ぶ MLOpsの実際
先駆者に学ぶ MLOpsの実際
リクルート式AIの活用法
リクルート式AIの活用法
Amazon_Rekognitionの使用例_オートバイの画像判別.pdf
Amazon_Rekognitionの使用例_オートバイの画像判別.pdf
レコメンドエンジン作成コンテストの勝ち方
1.
copyright Fringe81 Co.,Ltd. レコメンドエンジン作成 コンテストの勝ち方 貫井 駿
(Shun Nukui) Fringe81株式会社 PyData.Tokyo Meetup #18 1
2.
copyright Fringe81 Co.,Ltd. 2ヶ月間本気で レコメンドエンジン作成に 取り組んで初めて気がついた 困難と解決アプローチ 2
3.
copyright Fringe81 Co.,Ltd. こんな人に聞いてほしい ●
データ分析コンテストに参加したことある ● これから参加したいという人 ● 業務や趣味で機械学習による予測タスクをやっている人 3
4.
copyright Fringe81 Co.,Ltd. ●
貫井 駿(ぬくい しゅん, @heartz2001) ● 専門:Webマイニング、機械学習 ● 略歴: ○ 2017年3月 東京工業大学情報理工学研究科 卒業 ■ 競馬研究会 元部長 ○ 2017年4月-9月 競馬予想販売を専業 ■ 機械学習の実践的なノウハウを習得 ○ 2017年10月 Fringe81株式会社 入社 ■ アドネットワークのアルゴリズム最適化 ● データ分析コンテスト歴:今回初参加 ● 趣味:競馬、将棋 自己紹介 4
5.
copyright Fringe81 Co.,Ltd. アジェンダ ●
コンテスト概要 ● レコメンドにおける問題設計 ● 時系列データにおける訓練・検証・テストデータの構築 ● 保守性の高い分析コードの設計 ● 特徴量の作成 ● LightGBMのチューニング 5
6.
copyright Fringe81 Co.,Ltd. レコメンドエンジン作成チャレンジコンテスト ●
SIGNATE(旧・DeepAnalytics) 主催 ● 株式会社オプトがデータ提供 ● ユーザの行動履歴データを元にその後それぞれのユーザが高い関心度 を示す商品を予測 ○ ユーザの行動予測 ● 推薦対象ユーザ1人に対して22件の商品を推薦 ● 人材、旅行、不動産、アパレルの4業種 ● 業種ごとに個別に予測モデル作成 ● コンテスト詳細: https://signate.jp/competitions/45 6
7.
copyright Fringe81 Co.,Ltd. レコメンドエンジン作成チャレンジコンテスト 7 商品1 商品2 商品3 商品22 ・・・ ユーザ ●
過去の行動ログをもとに、1ユーザあたり22件の商品を推薦 ● 未来の行動ログにおける関連度が高い商品をより上位に推薦できると ハイスコアになる ● 関連度:閲覧=1点、広告クリック=2点、CV=3点 上位に関連度高い商品を 推薦できれば高スコア
8.
copyright Fringe81 Co.,Ltd. 評価方法 ●
nDCG(normalized discounted cumulative gain) ○ ランキング問題ではおなじみの評価指標 ● 関連度:閲覧=1点、広告クリック=2点、CV=3点 ● 理想的な並び順で予測できていれば nDCG=1.0で最大 ○ 推薦順のDCGを理想的な並び順のDCG(=IDCG)で割る 8
9.
copyright Fringe81 Co.,Ltd. データ内容 カラム名
説明 user_id ユーザID product_id 商品ID event_type 行動ID (閲覧, 広告クリック, CV, カート) ad 広告経由か否か time_stamp タイムスタンプ ● train.tsv: 訓練用行動履歴 (2017/4/1-2017/4/30) ● test.tsv: 推薦対象ユーザID (2017/5/1-2017/5/7 に行動) カラム名 説明 user_id ユーザID (train.tsvで最低1回は行動をしている ) 9
10.
copyright Fringe81 Co.,Ltd. コンテストのおおまかな流れ train.tsv test.tsv 推薦 システム 学習 推薦対象入力 推薦商品 リスト 推薦
submit!! 1日5回まで スコア ランキング 10
11.
copyright Fringe81 Co.,Ltd. 簡単そうにみえるでしょ? 11
12.
copyright Fringe81 Co.,Ltd. わたしも最初はそう思っていました 12
13.
copyright Fringe81 Co.,Ltd. 1.
レコメンドにおける問題設計 2. 時系列データにおける訓練・検証・テストデータの構築 3. 保守性の高い分析コードの設計 4. 特徴量の作成 5. LightGBMのチューニング 数々の困難 13
14.
copyright Fringe81 Co.,Ltd. 1.
レコメンドにおける問題設計 2. 時系列データにおける訓練・検証・テストデータの構築 3. 保守性の高い分析コードの設計 4. 特徴量の作成 5. LightGBMのチューニング 数々の困難 14
15.
copyright Fringe81 Co.,Ltd. ●
多くのコンペではtrain.csvを読み込んだらそれがXに対応する ● 今回のデータは1つの(user, item)のペアについて複数のログが存 在する ● 予測モデルの入力Xの1行 ≠ 行動ログの1行 ● 暗黙的フィードバックのため、良い・悪いが明示されていない ○ ⇔ 明示的フィードバック 困難1: 予測モデルの入力Xをどう定義するか 15
16.
copyright Fringe81 Co.,Ltd. レコメンド問題のよくある設定
(映画レビュー) ● (user, item) に対して良い・悪いのスコアが与えられている ○ 明示的フィードバック (explicit feedback) ● 未知の (user, item) に対してスコアを予測 ○ 協調フィルタリングなど 4 2 2 1 3 3 user1 user2 user3 item1 item2 item3 item4 item5 0.4 4 0.1 2 0.1 0.8 3.8 0.2 2 0.1 1 2.0 3 1.5 3 user1 user2 user3 item1 item2 item3 item4 item5 予測 例) 映画のレビュー評価 16
17.
copyright Fringe81 Co.,Ltd. ●
暗黙的フィードバック (implicit feedback) ● (user, item)が行動履歴に現れていても良い・悪いを直接スコア 化できない 今回の行動ログにおけるレコメンド ? ? ? ? ? ? user1 user2 user3 item1 item2 item3 item4 item5 user_id item_id action_type user2 item4 閲覧 user2 item4 閲覧 user2 item4 クリック 行動ログ 17 行動⇔スコアの対応が不明 =スコアの対応規則さえ決め てしまえば良い
18.
copyright Fringe81 Co.,Ltd. 1.
観測済み (user, item) について良い・悪いをスコアリング ○ 良い=未来の期間において商品に再び関心をもつ 2. 未観測の (user, item) のスコアを予測 解決: 問題を2段階に分ける user_id item_id action_type user2 item4 閲覧 user2 item4 カート user2 item4 クリック 0.4 4.1 0.1 2.3 0.1 0.8 3.8 0.2 2.7 0.1 1.2 2.0 3.5 1.5 3.1 user1 user2 user3 item1 item2 item3 item4 item5 4.1 2.3 2.7 1.2 3.5 3.1 user1 user2 user3 item1 item2 item3 item4 item5 行動→ スコア の対応 未知ペアの スコアリング 18
19.
copyright Fringe81 Co.,Ltd. 段階1:
観測済みペアに対するスコアリング 19 簡単なルールベースの例: 過去の行動ログにおいて(user, item)以下の得点を合計 ● 閲覧=1点 ● クリック=2点 ● CV=1点 ● カート=4点 未来において再び興味を持つかどうかの観 点でスコアリング 過去の行動ログ 未来の行動ログ
20.
copyright Fringe81 Co.,Ltd. 機械学習として解く場合: 入力
X 過去の行動ログにおける(user, item)に対する特徴量 例) ユーザが商品を閲覧した回数, 商品の合計クリック回数 出力 y 未来の行動ログにおける(user, item)に対する関連度 例) 閲覧=1, クリック=2, CV=3 ⇛シンプルな回帰予測問題に落とし込めた 段階1: 観測済みペアに対するスコアリング 20
21.
copyright Fringe81 Co.,Ltd. ●
行列の欠損部分を埋める方法はいろいろ ○ Matrix Factorization ○ Label Propagation 段階2: 未観測のペアに対するスコアリング 4 2 2 1 3 3 user1 user2 user3 item1 item2 item3 item4 item5 0.4 4 0.1 2 0.1 0.8 3.8 0.2 2 0.1 1 2.0 3 1.5 3 user1 user2 item1 item2 item3 item4 item5 予測 21
22.
copyright Fringe81 Co.,Ltd. 1.
レコメンドにおける問題設計 2. 時系列データにおける訓練・検証・テストデータの構築 3. 保守性の高い分析コードの設計 4. 特徴量の作成 5. LightGBMのチューニング 数々の困難 22
23.
copyright Fringe81 Co.,Ltd. submitした結果の評価値だけに頼ると、 ●
1日5回までしかsubmitできないので、実験サイクルを回せる回数 が限られる ● テストデータに対して過適合を起こして汎化性能が低い予測モデ ルになる ⇛ 手元でモデルの性能を評価できるようにする必要がある モデルの検証がなぜ必要か? 23
24.
copyright Fringe81 Co.,Ltd. ●
訓練データ (X_train, y_train) ○ モデル学習に利用するデータ ● 検証データ (X_valid, y_valid) ○ モデル選定のための性能比較に用いるデータ ● テストデータ (X_test, y_test) ○ 最終的に選定されたモデルの性能を評価するための データ 予測モデルにおける訓練・検証・テスト 24
25.
copyright Fringe81 Co.,Ltd. 困難2:
時系列データの場合の分割方法 5/75/14/244/174/10 テスト検証訓練 ● 入力Xは過去の行動ログから作られる ● 目的変数yは未来の行動ログから作られる 25 以下のような単純な分け方にはならない
26.
copyright Fringe81 Co.,Ltd. 解決:
正しい訓練・検証・テストの分割方法 5/75/14/244/174/10 y_testを予測する 訓練 検証 テスト 26 X_train y_train X_valid y_valid X_test y_test
27.
copyright Fringe81 Co.,Ltd. 解決:
正しい訓練・検証・テストの分割方法 5/75/14/244/174/10 訓練 検証 テスト 27 X_train y_train X_valid y_valid X_test y_test この考えに至るまでに 1週間くらいかかった… ● 実際には、Xを作成するための過去ログの長さはyの期間に合わせずに ちょうどよく決める必要があるためもっと複雑…
28.
copyright Fringe81 Co.,Ltd. 1.
レコメンドにおける問題設計 2. 時系列データにおける訓練・検証・テストデータの構築 3. 保守性の高い分析コードの設計 4. 特徴量の作成 5. LightGBMのチューニング 数々の困難 28
29.
copyright Fringe81 Co.,Ltd. ●
分析していると、データ読み込み、基礎集計、データ整形、特徴量生 成、モデル学習、評価などすべての工程が詰まっている「神 notebook」を作りがち ● 瞬発力重視の分析なら強い ● 1~2ヶ月スパンのデータ解析コンテストでは管理しきれなくなる 困難3: 分析コード散らかる問題 29
30.
copyright Fringe81 Co.,Ltd. 解決:
予測タスクの機能ごとにモジュール化 csvcsv tsv DataSet DataProcessor Feature 前処理されたデータ 特徴量の生成レシピ Recommeder 特徴量行列 user_id item_id u11111 p12345 u11111 p12378 …. 予測 結果 Evaluator submit!! 評価値 ● 各機能はモジュール(*.pyファイル)に分けて実装 30 Config
31.
copyright Fringe81 Co.,Ltd. モジュール化するメリット ●
実行スクリプトには処理の流れだけを記述し簡潔さを保つ ● コアの処理コードが一元化されるので管理が楽 ● ユニットテストが書きやすい ● git のバージョン管理もしやすい ● どの予測タスクもだいたいフローは同じなので使い回しが効く 31
32.
copyright Fringe81 Co.,Ltd. コンパクトな実験サイクル 32 config.py
run.py 評価値 フィードバック・更新 学習・評価設定適用
33.
copyright Fringe81 Co.,Ltd. 1.
レコメンドにおける問題設計 2. 時系列データにおける訓練・検証・テストデータの構築 3. 保守性の高い分析コードの設計 4. 特徴量の作成 5. LightGBMのチューニング 数々の困難 33
34.
copyright Fringe81 Co.,Ltd. ●
決してリッチとは言えない行動ログデータから他の競技者と差別 化を図る特徴量を作らないといけない ● 色々なアイデアを思いついたとしても、特徴量の処理を書くのは 複雑になって管理できなくなりがち 困難4: 特徴量の作成 34
35.
copyright Fringe81 Co.,Ltd. 質素な行動ログ 35 カラム名
説明 user_id ユーザID product_id 商品ID event_type 行動ID (閲覧, 広告クリック, CV, カート) ad 広告経由か否か time_stamp タイムスタンプ ● ユーザのデモグラ(年齢・性別・居住地など)がない ● 商品のカテゴリや説明文もない
36.
copyright Fringe81 Co.,Ltd. ●
ユーザの行動した平均時間帯 ● 商品のクリックされた平均時間帯 ● 曜日ごとのユーザの行動回数 ● 曜日ごとの商品の閲覧回数 ● 最初/最後ログに現れてからの日数 … タイムスタンプの情報をフル活用 36
37.
copyright Fringe81 Co.,Ltd. 時間帯の表現の工夫 cos sin 0時12時 9時 18時 ●
周期性のある数値は円周上に並べて(cos, sin)で表現 37
38.
copyright Fringe81 Co.,Ltd. ●
過去ログから閲覧回数などの総和をとるときに直近の重みが強く なるように係数を掛ける 直近の行動情報を重視する工夫 38
39.
copyright Fringe81 Co.,Ltd. ●
同一処理の繰り返し記述が無くせる ○ スケールが容易になる ⇛ 400個以上の特徴量を作成 ● クラス名を和名にして命名に悩まない ○ Python3系限定 解決: 1特徴量を1クラスで表現 39
40.
copyright Fringe81 Co.,Ltd. 1.
レコメンドにおける問題設計 2. 時系列データにおける訓練・検証・テストデータの構築 3. 保守性の高い分析コードの設計 4. 特徴量の作成 5. LightGBMのチューニング 数々の困難 40
41.
copyright Fringe81 Co.,Ltd. ●
Microsoftが関わるGradient Boostingの高速・高精度実装 ○ https://github.com/Microsoft/LightGBM ● Kaggleでも今はxgboostを超える人気(?) ● tree-baseなので特徴量のスケールに影響受けない ● カテゴリ特徴量をダミー化せずに扱える LightGBM 41
42.
copyright Fringe81 Co.,Ltd. ●
gradient boostingの特徴として訓練サンプルに過適合しやすい ● 精度と複雑さをコントロールするハイパーパラメータがたくさんがあ る 困難5: LightGBMのチューニングが大変 42
43.
copyright Fringe81 Co.,Ltd. ●
過学習がしやすくハイパーパラメータの調整が重要 ● validationデータを与えるとearly_stoppingで過学習始まった時点 でストップしてくれる機能が便利 ● ただしvalidationデータ分の学習データが減ってしまう 解決: LightGBMのearly stopping train train valid LightGBM 分割 学習 early_stopping用 ⇛学習に使われない 43
44.
copyright Fringe81 Co.,Ltd. 解決:
LightGBM による 5-fold アンサンブル train fold3 fold2 fold1 fold5 fold4 LightGBM train valid LightGBM train valid ・・・ average 5-foldの場合、 計算時間5倍になるので注意! 44
45.
copyright Fringe81 Co.,Ltd. 最終結果 45
46.
copyright Fringe81 Co.,Ltd. ●
めちゃくちゃ時間がかかる ● 時間をかけた分だけスコアは伸びる ● 入力データの前処理、特徴量エンジニアリング>予測モデル ● コンペで培ったノウハウはかなり部分を業務に活かせた 所感 46
47.
copyright Fringe81 Co.,Ltd. ●
観測済みペアと未観測のペアのスコアリングを2段階に分ける ● 時系列の行動ログにおけるデータの分割は複雑 ● 分析の各機能はモジュール化して実行スクリプトは簡潔にする ● タイムスタンプからたくさん特徴量作れる ● Featureはクラス化して特徴量作成をスケーリング ● LightGBMはアンサンブルして過学習を抑える まとめ 47
48.
copyright Fringe81 Co.,Ltd. ご清聴ありがとうございました 48
49.
copyright Fringe81 Co.,Ltd. ●
Python ○ pandas, numpy, scikit-learn, LightGBM ● Google Compute Engine ○ CPU 8 core, RAM 52GB ○ 無料クレジット枠で収まった 環境 49
50.
copyright Fringe81 Co.,Ltd. DataProcessor DataSet Feature Feature Feature ・・・ Series Series Series DataFrame apply concat 入力特徴量 50
51.
copyright Fringe81 Co.,Ltd. SIGNATE
(旧・DeepAnalytics) について ● 日本で数少ないデータ分析コンテストを主催している サービス https://signate.jp/ ● 2018年4月からサービス名を「SIGNATE」に変更 野良データサイエンティスト 企業 データ・賞金 強い予測モデル データ・賞金・名誉 予測モデル 51
Baixar agora