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
9.7k
2
Share
Kaggle Malware competition 2th→1485th solution
2019.7.13 Kaggle 裏meetup #1 での資料です。
pao
July 13, 2019
More Decks by pao
See All by pao
JOAI2026 講評
go5paopao
0
290
いろんなものと両立する Kaggleの向き合い方
go5paopao
3
2.5k
データサイエンティストとは何か論争に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
2026年春のAgentCoreアプデ 細かいやつ全部まとめ
minorun365
4
230
20260515 ID管理は会社を守る大切な砦!〜🔰情シス向け〜
oidfj
0
200
SLI/SLO、「完全に理解した」から「チョットデキル」へ
maruloop
5
460
Swift Sequence の便利 API 再発見
treastrain
1
270
クラウドネイティブ DB はいかにして制約を 克服したか? 〜進化歴史から紐解く、スケーラブルアーキテクチャ設計指針〜
hacomono
PRO
6
940
試作とデモンストレーション / Prototyping and Demonstrations
ks91
PRO
0
200
AIのための特別なアーキテクチャはいらない 0→1開発で実践した設計原則とガードレール
kaminashi
0
110
AI対話分析の夢と、汚いデータの現実 Looker / Dataplex / Dataform で実現する品質ファーストな基盤設計
waiwai2111
0
510
【関西製造業祭り2026春】現場を変える技術はここまで来た〜世界最大の製造業見本市から持って帰ってきたもの〜
tanakaseiya
0
140
(きっとたぶん)人材育成や教育のような何かの話
sejima
0
730
サンプリングは「作る」のか「使う」のか? 分散トレースのコストと運用を両立する実践的戦略 / Why you need the tail sampling and why you don't want it
ymotongpoo
4
170
Sociotechnical Architecture Reviews: Understanding Teams, not just Artefacts
ewolff
1
170
Featured
See All Featured
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Designing for humans not robots
tammielis
254
26k
Between Models and Reality
mayunak
3
280
Building Flexible Design Systems
yeseniaperezcruz
330
40k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
330
Into the Great Unknown - MozCon
thekraken
41
2.5k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
260
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Java REST API Framework Comparison - PWX 2021
mraible
34
9.3k
Design in an AI World
tapps
1
210
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
530
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.2k
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の日付 日付ごとの予測結果の平均 最終日付近はほぼマルウェアに感染していない (どうやったら分かるの?)