Open tttza opened 3 months ago
みんな GroupKFold で5分割、group は patient_id で設定している模様。 shuffle や random_state はないので、基本的にはデータの区切り方は揃ってるとみてよさそう。 (どっかで混ざってるかもしれないので、念のため実際の出力が同じ分割になってるかは確認したい。)
sgkf.split(train_pop, y=train_pop["target"], groups=train_pop["patient_id"])
https://www.kaggle.com/code/konstantinboyko/hms-resnet1d-gru-train-1-5-dataset?scriptVersionId=166379987 https://www.kaggle.com/code/nartaa/features-head-starter
idをyamlで吐き出したりして全員で固定できるようにしたい
とりあえず、参考にしているノートからそのまま GroupKFold の ID を書き出しときました。
https://www.kaggle.com/code/tzl0000/hms-cv-fold?scriptVersionId=167389138
train = pd.read_parquet('/kaggle/input/hms-cv-fold-dataset/folds.parquet')
valid_cols = [f'valid{i}' for i in range(5)]
for c in valid_cols:
_train, _valid = train[~r_train[c]].drop(columns=valid_cols), train[r_train[c]].drop(columns=valid_cols)
出力はこんな感じ。
各 fold で target のサンプル割合にばらつきが出てそうなので要検討?
https://www.kaggle.com/competitions/hms-harmful-brain-activity-classification/discussion/477461 これを見るとtotal evaluatorが10以上とそうでないものでだいぶデータの信憑性が変わりそうなので、10以上のデータが均等になるようにfold切るのがよさそう。 また、discussionの雰囲気を見ると、validスコアは10以上のデータに合わせて改善すればpublicは上がりそうな気がするが、privateはどうなるか…?
https://github.com/stgkrt/kaggle-hms/commit/e5750f7da156a688288e94706a0ff85d8256078a patient_idのgroupと、vote数合計の//3したやつ+expert_consensusのstratifiedでstratifiedgroupでやっている。fold間のスコア差は小さくなった印象
どうせならそろえた方がアンサンブル時に幸せになれそう。