I am given a dataset $D$ of 10k enzyme-substrate complexes having a lock-key relationship, with each sample (complex) being characterized by enzyme features $x_e$ and substrate features $x_s$. That is, each complex (each row) is described as the concatenated features $x = x_e \oplus x_s$.

I want to build a model that will able to classify whether an enzyme-substrate combination would be valid. Of course, my data contains only positive samples but I know that every other enzyme-substrate combination except the ones in $D$ won't have a lock-key relationship, i.e. they are negative samples (invalid combinations). I.e., if $x = x_e \oplus x_s$ and $x' = x'_e \oplus x'_s$ are both valid combinations, then the combination $\bar{x} = x_s \oplus x'_e$ would be invalid.

I have augment my dataset $D$ with 10k (random) invalid augmentations, which gives rise to a new dataset $D_\text{new}$ of size 20k.

I want to train a classifier on this (augmented) dataset, but I don't know if I should use GroupKFold for the splits, or a StratifiedKFold is fine. I have read that GroupKFold should be used when multiple rows come from the same id (e.g. writer, patient etc). In my case, each row describes a different pair but two rows may share the same $x_e$ or $x_s$.

What is the proper way to split in this case?

PS: I would appreciate any resources that describe why GroupKFold is needed in a more formal way, than the usual one seen in tutorials for example.



Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.