Suppose, I am building a hotel recommendation system, that learns user profile based on his/her interaction with the system.
I have two classes, "Like" and "Dislike". For example, a user likes 5 "5-star" hotels, likes 3 "1-star" hotels and dislikes 10 "1-star" hotels. Now, a Naive Bayes Classifier will put a new 5 star hotel in the "Like" class and a new 1 star hotel in "Dislike" class. Now, what I am trying to achieve is a bit different, I don't want to classify, instead I want to extract features/attributes more closely related with the "Like" class. For example, I need "5-star" attribute from the "Like" class.
Now, obviously, I have many more attributes, than the hotel star rating. What I want to know is that, can Naive Bayes be modified to extract features from a class. Or are there any specialized algorithms that are more suited for this task?
I would have data in this form
user_id | hotel_id | hotel_rating | hotel_attr1 | .... | hotel_attr(n)| preference
1 1 5 star some value some value like
1 2 1 star some value some value dislike
Another thing, If I want to extract features such as "5 star" and "1 star" from a class, Is the data formatted above correct? or instead of hotel_rating as the feature, I need 5_star and 1_star as the features, instead of them being values of the hotel_rating feature?