I guess you could approximate "better" by direct user feedback after the experience. Design a form which needs to be filled out each time user has a session, use the form responses (probably on an integer scale) as features. It would work like ass, given that we have a whole bunch of response variables, but we might design a set of feedback questions for each response variable, and leg it from there.
Hence the "specialized knowledge engineer with subject knowledge" part. It's actually pretty difficult to do this right, since with learning machines, "bigger" (in a sense of adding more response variables) is not necessarily better, culling the irrelevant stuff often vastly improves the learner's performance, since it stops mistaking accidental statistical flukes for real dependencies.
I've thought about this and I guess I haven't expressed myself correctly in the first place. Our response variable is "user enjoyment", whether given directly, inferred using some kind of biometric sensor, or calculated from a weighted questionnaire - and our features are things like "length", "thickness", "vibration intensity", "bump arrangement" (probably actually a bunch of binary features of the form "bump_at_(x,y)=(0,1)", or onehot-encoded preset arrangements) and so on. We are building the shiny, hi-tech shapeshifting robot dick of the future, after all.
And with this approach, we can't really reduce the feature vector too much since then it wouldn't be the shiny and high-tech, right? If we're only modifying, say, intensity of vibration, then we're useless because the user could have gotten the same result by just turning a dial until comfortable, right?
Sorry if the previous post was a little all over the place, I had a bit of a brain fart there.