||Recently, recommendation has become a key technology in many online services. The quality of recommendations is one of the key factors that contribute to the revenue of these service providers. It is thus critical for service providers and online product vendors to provide high quality recommendations on their products and services. However, the recommendation task is non-trivial, because the data are often sparse and noisy, with many missing parts. Learning problems in recommendations cannot be modeled using the traditional learning frameworks. It is common for users to provide heterogeneous feedback on items from diverse domains. For example, for a recommender system such as Amazon, it may need to provide personalized movie recommendations for a user based on the user's feedback from other domains, including those of books and clothing. For a search engine such as Google, it may need to serve personalized ads based on users' searching behavior and browsing history. In this thesis, we apply transfer-learning techniques to improve the quality of recommendations. More specifically, we consider the problems where we formulate multiple recommendation tasks in a collaborative filtering problem and we ask three questions. Firstly, how do we share knowledge when the items may span over multiple heterogeneous domains? Secondly, how do we share knowledge across domains with different user feedbacks? Thirdly, how to transfer knowledge with respect to a particular recommendation task from other source tasks? To answer these questions, we propose a transfer-learning based collaborative filtering model that could handle heterogeneous feedback and domain adaptation. Our solution is based on the idea that user behaviors could indicate the similarity among different tasks. Learning the similarity among different tasks could enable us to utilize more useful data and improve the recommendation quality. We conduct experiments on real world datasets to show the effectiveness of the proposed models.