The basic idea is he generates a grid, runs it through a deductive solver, and if it fails, heuristically changes the grid a little where it failed and tries again.
I'll try some different ratios and get back to you!
edit: I tried some runs with size 3 and 20% mines, that felt a lot more like expert difficulty Minesweeper too in terms of the sizes of the empty patches you uncover by uncovering a 0.