NISHIKAの異常検知コンペに参加しました(最終順位53位/134位)
はじめに
世間はGW一色ですね。
今年はコロナ規制もないので外出される方々も多いかと思いますが、
本当の意味でコロナなんて気にせずに遊べるような日がはよ来てほしいものです。
今回は、NISHIKAのデータ分析コンペに参加したことについて記事にしたいと思います。
これまでも、ほんの少しだけ参加するみたいなのはやっていましたが、
割と序盤からがっつり参加し結果を楽しみにするようなコンペは今回が初めてでした。
結果は散々でしたが(笑)、折角なので備忘録的なのも込めて、手法や感想等を述べます!
コンペ概要
今回、NISHIKAの異常検知コンペに参加してきました。
以下概要です。
タスク:ソフトウェアの異常検知
説明変数:ソフトウェアの関連特徴量が沢山(最後までよくわからず)
目的変数:異常or正常のバイナリ値
評価指標:PR-AUC
URL:https://www.nishika.com/competitions/26/summary
結果が開示されるとshake up, shake downが乱発してしまい、
天国を見た人と地獄を見た人が大量発生する高難易度なコンペでした…
手法
特徴量エンジニアリング
①Anomalyと相関が高い特徴量上位150個を使う
②ラグ特徴量とリード特徴量を生成
データの割り振り
適当にtrainデータの先頭15万行をtrainとして、以降の3万行をvalidとしました。
学習モデル
みんな大好き、LightGBM
順位
public 8位 private 53位でした。
ギリギリ初銅メダル...
反省点
①CVする
はい、一切CVしてませんでした。
これは本当にダメですね...
今後はちゃんとstatifiedCV等をして、privateでもスコアが落ちないように汎化性能を担保するべきでした。
痛い目を見たので今後はちゃんとやります(´;ω;`)
②思い切って特徴量やデータを切り落とす
ビビッて特徴量を切ることを全然しませんでしたが、目的変数との相関係数がほぼ0の特徴量や異常が発生していないカテゴリ(ホスト+プロセス)はデータ消すべきでしたね...
上位の解法だと大胆に消されている印象でした。
感想
ちゃんと参加したのは初めてでしたが、ほかの参加者の方と競うことの楽しさを知ることができました。それだけでも十分収穫です
また、実装力・ソースコード管理(特に再現性担保の面)の意識といった面で成長を感じることができたと思います。
あと、コンペ終了後参加者の方とお互いにどのような解法だったのか共有しあえてよかったです。
こちらは本当に勉強になることばっかりでした。今後に活かしたいと思います。
今後も継続して色んなコンペに参加して経験値を積めたらと思います。
最後になりますが、参加者の皆様大変お疲れさまでした、
またどこかのコンペでお会いしましょう!
では、さいなら👋