Learning a target feature from data I have a dataset of customers (infos about them, as well as their buying behavior) to whom ads are sent regularly. How can I design a target feature that will result in a good model that predicts when customers are "responding to ads"?
Unfortunately, "responding to ads" to ads is not a precise definition. I could imagine, for example, measure for each customer how often in the past, say, 4 month he was sent an ad and how often after being sent an ad he actually bought things from it? If the threshold for a customer is bigger than, say 60%, I could define the feature reacts_to_ads to be 1, otherwise 0.
But this seems like a really bad way to define when customers are reacting to ads, since it seems kind of arbitrary (why 4 months? Why the 60% threshold?) and contains an awful lot of hand-designed information.
I'd rather "learn the feature from the data", but I'm not sure what the best way would be to go about that.
I could generated a collection of different features, one for each of the thresholds 45%, 50%, 55% ..., 75% and for varying distances of looking into the past (2 month, 2.5 month,... 6 month) and the train the same type of model for each of them and compare my test data set accuracy. But would that really be a good idea? 
How would you best go about designing such a feature?
EDIT Since there were some questions regarding what kind of answer I was looking for, please see my four comments below Tim's answer, which should hopefully further disambiguate my question.
 A: 
How can I design a target feature that will result in a good model
  that predicts when customers are "responding to ads"?

So I guess, that someone in your job asked you to predict "Which customers will respond to ads?", but they didn't define what they mean by "responding to ads". Now, you are trying to come up with your own definition "learned from the data", so to predict the learned label instead. This is not the way to go.
First, notice that if you had an algorithm that given the data would predict that customers responds to ads you would already solve your problem, no need to use the result as a target label for other algorithm, since you would already be able to predict who responds to ads! So making the labels given the data, and then predicting those labels using the data is circular.
What you should do instead, is you should come up with a definition of something measurable to predict. Instead of predicting that someone "responds to ads", maybe predict something like "visiting website in 24h since receiving the advertisement e-mail", or "buying product during 30 days after seeing the advertisement", etc.
Moreover, this doesn't need to be binary. You could predict things like probability of buying the product as a function of time after seeing the advertisement (check survival analysis models), or number of bought items as a function of the number of advertisements seen (this is a linear, Poisson, or logistic regression, depending on details of the problem!).
Finally, if you had a way to manually (and reasonably!) label some of the customers as "responding to ads", you could use semi-supervised learning algorithm to learn the missing labels. On another hand, if you could come up with some heuristics that approximately help in labeling such customers, you could use Snorkel software to help you with learning the labels based on the provided rules and the data. Notice however the meaningfulness and quality of the labels, will impact how meaningful are your results. 
A: Based on the example given in your question, I believe you are looking for a way to divide your population into two independent groups, specifically emphasizing responsiveness to ads.
Since you know their "buying behavior" you can use that to create an initial, estimated threshold, for example by using the median of buying frequency to classify them into two groups: above and below that median buying frequency.
Then, I would perform a regularization method like Elastic Net in order to simplify your multiple-dimension features to leave behind only the most important features. However, you should be lenient on this first regularization step by using a lower lambda value since your initial threshold was estimated and rather arbitrary.
Again, since your initial threshold was so arbitrary, I would then consider using principal component analysis for further dimensionality reduction -- the difference in this method being that there is no "target" feature (i.e. buying frequency), rather PCA simply looks for a set of linearly uncorrelated variables within the whole feature set.
Lastly, I would use either support vector machine or random forest and look at their top layers, which should tell you which features to look at and where to divide those features (i.e. "threshold") in order to 

define the feature reacts_to_ads to be 1, otherwise 0.

Again, like many of the comments to your question, there is a lot of tuning to be done within these procedures based on your goal / use / purpose for this analysis.
While some may think that Elastic Net and PCA are unnecessary, I would argue that they help you clean out the variables that do not impact your target and make your final SVM / Random Forest Trees more interpret-able.
A: I would recommend just to use per customer: 
responding_to_ads = bought_things / ads_received

Also an important metric for comparison is:
response_baseline = bought_things / months_customer

ads_baseline = ads_received / months_customer

Remarks:
Obviously, you change your problem from classification to regression, but this should be an advantage.
You can refine this by dropping customers that are new (not enough data).
As you mentioned it is also possible to only take the last 4 month into consideration. In this case I would recommend to first filter the data concerning the last 4 months and than use the metrics defined by me.
