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
Kaggle Malware competition 2th→1485th solution
Search
pao
July 13, 2019
Technology
2
9.6k
Kaggle Malware competition 2th→1485th solution
2019.7.13 Kaggle 裏meetup #1 での資料です。
pao
July 13, 2019
Tweet
Share
More Decks by pao
See All by pao
いろんなものと両立する Kaggleの向き合い方
go5paopao
3
2.4k
データサイエンティストとは何か論争にAI(gpt-2)で終止符を打とうとした話
go5paopao
0
250
短期間コンペの戦い方
go5paopao
13
13k
atmaCup#9 1st place solution
go5paopao
6
3.7k
DSB2019 10th Solutionの一部とShakeについて
go5paopao
2
800
Other Decks in Technology
See All in Technology
AI時代の「本当の」ハイブリッドクラウド — エージェントが実現した、あの頃の夢
ebibibi
0
150
OpenClaw を Amazon Lightsail で動かす理由
uechishingo
0
200
会社紹介資料 / Sansan Company Profile
sansan33
PRO
16
410k
実践 Datadog MCP Server
nulabinc
PRO
2
240
今のWordPress の制作手法ってなにがあんねん?(改) / What’s the Deal with WordPress Development These Days?
tbshiki
0
510
SRE NEXT 2026 CfP レビュアーが語る聞きたくなるプロポーザルとは?
yutakawasaki0911
1
440
Cortex Code CLI と一緒に進めるAgentic Data Engineering
__allllllllez__
0
430
AI時代のSaaSとETL
shoe116
1
190
"作る"から"使われる"へ:Backstage 活用の現在地
sbtechnight
0
190
頼れる Agentic AI を支える Datadog のオブザーバビリティ / Powering Reliable Agentic AI with Datadog Observability
aoto
PRO
0
210
VLAモデル構築のための AIロボット向け模倣学習キット
kmatsuiugo
0
260
複数クラスタ運用と検索の高度化:ビズリーチにおけるElastic活用事例 / ElasticON Tokyo2026
visional_engineering_and_design
0
170
Featured
See All Featured
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
640
sira's awesome portfolio website redesign presentation
elsirapls
0
190
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
100
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
160
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
200
Navigating Team Friction
lara
192
16k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
310
Done Done
chrislema
186
16k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.3k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
270
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Transcript
Microsoft Malware Prediction 2th→1485th Shake-down Solution Team APTX4869 Pao 2019/7/13
Kaggle 裏 Meetup
自己紹介 名前 – Pao 所属 – JTC (Japanese
Traditional Campany) 特技 – Shake-down 悩み – 息子が可愛すぎてkaggleが捗らない – 金メダル取れない – 転職先
今日話すこと ◆Malwareコンペについて ◆どうやってPublic 2th まで登ったか ◆よかったこと/駄目だったこと ◆おまけ
今日話すこと ◆Malwareコンペについて ◆どうやってPublic 2th まで登ったか ◆よかったこと/駄目だったこと ◆おまけ
Malwareコンペとは Microsoftがホスト PCの状態からマルウェアに感染しているかを予測 – テーブルコンペ – 2値分類問題 –
厳密には「感染をDetectできているか?」を予測 評価指標:AUC MachineID OS メモリ ウイルスソフトの バージョン ・・・ HasDetections 000001 Windows10 8GB 10.4.2 0 000002 Windows7 4GB 10.4.1 1 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ これを予測!
特徴①いろんなVersion変数 「OSバージョン」や「ウイルス定義ファイルのバージョン」、「ウイルス ソフトのバージョン」など多くのバージョン(カテゴリ)変数が存在 HighCardinality かつ testにしか存在しないカテゴリも多数 未知のバージョンに対しても対応できるモデルが望まれる
AvSigVersion 1.273.1140.0 1.275.1420.0 1.275.727.0 ・ ・ ・ サブバージョンも 考慮しないといけない
特徴②時系列likeなデータ バージョン情報は、外部データでリリース日と紐付けられる Trainとtest(Public/Private)で時系列に分かれている あくまでリリース日であり、感染の判定日ではないことに注意 – 9/1のバージョン =>
9/1以降に感染したかの判定がされたというだけ train test AvSigVersionリリース日の分布
特徴③PublicとPrivateの分割 Public/Privateも時系列に分かれてることがコンペ中盤に発見される – 後半のバージョンの予測結果を変えても、Publicスコアが変わらない PublicとPrivateでバージョンの分布が違う ただし判定日がないため、厳密にPublicとPrivateの分離ができない Public
Private このPrivateの分布より 危険な香りがする・・
今日話すこと ◆Malwareコンペについて ◆どうやってPublic 2th まで登ったか ◆よかったこと/駄目だったこと ◆おまけ
序盤~中盤:再開からのスタート 序盤(LightGBMにて苦戦) – バージョンカテゴリに苦戦 • LightGBMのカテゴリ指定すべき? • Testにしかないカテゴリどう表現する? –
CVとLBの相関が出ない • Validationの作り方がわからない 中盤(NNに挑戦) – KaggleでNNを使うのは初めてだったが、LightGBMのスコアをすぐ超えた – バージョンはEmbedding層がいい感じに処理してくれた – データ数もそれなりにあったのもNNが良かった理由だと思われる 初回サブミット NN+LGBで24位まできた
中盤:チームマージの選択 LightGBMが全然うまくいかないが discussionを見ると皆 LightGBM > NN と言ってる LightGBM使っている人とチーム組めば勝てるんじゃないか?
⇒チームマージ依頼を出す(今回のコンペ一番の功績) ⇒金メダルが見えてきた!!!! マージ依頼
後半:神特徴量探しの旅 中盤~後半:金メダル圏内を維持できるかどうかをウロウロ – 私:NN + FFM等のモデル作り Yiemonさん:特徴量づくり+LightGBM – イマイチスコアが伸びない
良かった作戦:LB読み – LBの状態から →重要な特徴量を見逃しているはず。と判断 ふたりともEDAして特徴量探しに努める ・Slackが毎日スクショの嵐 ・リアルでのチームミーティングでもひたすらEDA & ディスカッション… ⇒ついにFinding!!! そしてコンペ終了1週間前
(Publicで)重要だった特徴量 自身のバージョンにおける他のバージョン/カテゴリのシェア – うちのチームはバージョンを日付単位にまとめて処理 そのバージョンシェアの変化率 – 次のバージョンになるとシェアがどう変化するか
異なるバージョン種類間のリリース日の差 – Ex) ウイルス定義ファイルは最新だけどウイルスソフトのバージョンは古い MachineID EngineVersion AppVersion AvSigVersion ・・・・ 000001 1.1.15100.1 4.18.1807.18075 1.273.1735.0 000002 1.1.14600.4 4.13.17134.1 1.263.48.0 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ A ① ② Aのバージョンで①, ②はどれくらいのシェアか? 詳しくはYiemon777さんの 2019/3/26あたりのツイートを参照
終盤:2thに登るまで 神特徴量周りの深掘りにサブミットを割く – 今すぐにでもLBの順位上げたい気持ちは抑え、ブレンドはほぼしなかった – LightGBMでの検証結果をもとにNNにも特徴を反映 最終日、1位に!!! –
その後一瞬でsashimiに抜かれた Masterが見えた
調子乗ってるやつは Shake-downな
今日話すこと ◆Malwareコンペについて ◆どうやってPublic 2th まで登ったか ◆よかったこと/駄目だったこと ◆おまけ
よかったこと NNのモデリング – 早い段階から取り組んでいたので、試行錯誤する時間もあり、 良いモデルがつくれた チームでのディスカッション – モデルの多様性以上に、ディスカッションしまくったのがよかった
• 特にFindingのあるテーブルデータではディスカッションは重要 • アナログな自分にとっては直接議論したのも重要だった 状況に応じた対応 – 自分のスコア状況からのチームマージ – LB読みからのEDA専念
(Publicで)強かったNN Embedding Layer Embedding Layer Category Feature Numerical Feature ・
・ ・ ・ Concat MLP Full Connect x 6 (BN + relu + dropout) 1024 512 512 256 128 128 output Softmax n_hidden = 16 Miner category => -1 10fold Optimizer: Adam Batch size: 4096 Epoch: 30 (early stopping) Continuous => fillna(mean) + normalize Binary => fillna(-1)
駄目だったこと① 完全にCVを捨てていた – LBしか見てなかった – もう少し序盤にValidationを作る努力をするべきだった • 最後のほうに試したが、すでにPublicへOverfitしすぎていて無駄だっ た
– キレイな相関までは作れなくても多少は参考にすべきだった • Publicが最高のものと、PublicとCVそこそこのものをFinal Submissionにす る選択肢も生まれたかもしれない
駄目だったこと② NN,LGB以外のモデルたちが間に合わなかった – FFM, DeepFM系モデルを作っていたが間に合わず 大事な終盤に稼働の無駄になってしまった – どんなモデルも試行錯誤に時間がかかるので やるなら余裕を持って作り、厳しければ諦める
コンペ選び – あとから思えばコンペ設計として疑問が残る部分があった • Detectionの判定日がない • Public/Privateの分布が変 – コンペ設計が正しくされているかどうかはShake-downしない 良コンペかどうかの大事な指標
今日話すこと ◆Malwareコンペについて ◆どうやってPublic 2th まで登ったか ◆よかったこと/駄目だったこと ◆おまけ
All 0 is Winner 元のPrivateは 0.62157 AvSigVersionの日付 日付ごとの予測結果の平均 最終日付近はほぼマルウェアに感染していない (どうやったら分かるの?)