1. A method for generating a model of a user, the method comprising: generating global scores for content items from heterogeneous data sources that are normalized for the heterogeneous data sources; receiving user activities on a social network server for the user, the user activities relating to at least one of the content items; generating a log of the user activities for a content item by joining the user activities for the content item; expanding attributes of the log by at least one of content and the user based on aggregating responses from the user to features of the content items and profile data of the user and associating the features of the content items with the profile data; generating an expanded log based on expanding the attributes of the log; generating the model based on the expanded log; identifying candidate items for the user based on the global scores for the content items; generating a stream of content comprising selected items based on the candidate items and the model; providing an explanation for why a selected item is included in the stream of content, the explanation including a user interest associated with the selected item; generating a feedback mechanism for display with the explanation; receiving a user's rejection of the user interest through the feedback mechanism; training the model using the user's rejection to the user interest and the user's recent activity that identifies a recent interest for the user; and dynamically updating the model based on training the model.