SMOTE
Synthetic Minority Over-sampling Technique: inventing new minority-class rows by interpolating between a real row and one of its neighbours.
Pick a minority row, find its nearest minority neighbours, choose one, and place a new row somewhere on the line between them. Better than duplicating rows, which teaches a model to memorise the exact examples it already has.
Two conditions it depends on and people skip. Neighbours are found by distance, so features must be scaled first or whichever column has the largest units decides who counts as a neighbour. And interpolation only makes sense where the class occupies a convex region — otherwise the midpoint of two real minority rows can land inside the majority class, and you've added a mislabelled row.
The leakage version is worse than either. Run SMOTE before splitting and a synthetic row interpolated from a training example appears in validation a few percent away from its parent, producing spectacular recall that production never reproduces.