前提・実現したいこと
LightGBMで、不均衡表データに対する二値分類を行います。評価基準はPresicion-Recall曲線のAUCを見ています。
ただし、結果が悪く、改善に詰まっているため意見がほしいです。
状況
丸め込んだ数字ですが、
不均衡データ(Positive : Negative = 0.35% : 99.65%)全体量はかなりたくさんある
PR-AUCは
train : 0.95
test : 0.25
PR-AUCがtestとtrainがこれだけ離れてると過学習かと思ってイテレーションごとにPR-AUCを見ていくと、1回目からかけ離れていて、イテレーションを回すとそのままtrainが微妙に改善するという状況。
ただし、よく見てみると1回目のときだけPR-AUCは0.3だとか少し高めで、2回目以降のイテレーションで0.2台になるので、どんなにearlystoppingを長くとっても、1回目が採用される。
試したこと
不均衡データに特化した手法として、
・データはかなり量があるので、ダウンサンプリング
・LightGBMのis_unbalane='true'
・earlystoppingのためのeval_metricはPR-AUC
・optunaでハイパーパラメータチューニング
いずれも大きな改善には繋がりませんでした。
ただし、testデータを間違ってダウンサンプリングしたときは、PR-AUCが0.9台になりました。明らかに不均衡であることが悪さをしていることは確認できています。
ちなみにscikit-learn APIのLightGBMを使っています。