Improving Preference Recommendation And Customization In Real World Highly Configurable Software Systems