Collaborative Filtering for Java
来源:互联网 发布:乔麦克纳利 知乎 编辑:程序博客网 时间:2024/05/10 15:47
Taste is a flexible, fast collaborative filtering engine for Java. The engine takes users' preferences for items ("tastes") and returns estimated preferences for other items. For example, a site that sells books or CDs could easily use Taste to figure out, from past purchase data, which CDs a customer might be interested in listening to.
Taste provides a rich set of components from which you can construct a customized recommender system from a selection of algorithms. Taste is designed to be enterprise-ready; it's designed for performance, scalability and flexibility. It supports a standard EJB interface for J2EE-based applications, but Taste is not just for Java; it can be run as an external server which exposes recommendation logic to your application via web services and HTTP.
Top-level packages define the Taste interfaces to these key abstractions:
- DataModel
- PreferenceTransform
- UserCorrelation and ItemCorrelation
- UserNeighborhood
- Recommender
Subpackages of comp.planetj.taste.impl
hold implementations of these interfaces. These are the pieces from which you will build your own recommendation engine. That's it! For the academically inclined, Taste supports both memory-based and item-based recommender systems, slope one recommenders, and a couple other experimental implementations. It does not currently support model-based recommenders.
Architecture
This diagram shows the relationship between various Taste components in a user-based recommender. An item-based recommender system is similar except that there are no PreferenceInferrers or Neighborhood algorithms involved.
Recommender
A Recommender
is the core abstraction in Taste. Given a DataModel
, it can produce recommendations. Applications will most likely use the GenericUserBasedRecommender
implementation or GenericItemBasedRecommender
, possibly decorated by CachingRecommender
.
DataModel
A DataModel
is the interface to information about user preferences. An implementation might draw this data from any source, but a database is the most likely source. Taste provides MySQLJDBCDataModel
to access preference data from a database via JDBC, though many applications will want to write their own. Taste also provides a FileDataModel
.
Along with DataModel
, Taste uses the User
, Item
and Preference
abstractions to represent the users, items, and preferences for those items in the recommendation engine. Custom DataModel
implementations would return implementations of these interfaces that are appropriate to the application - maybe an OnlineUser
implementation that represents an online store user, and a BookItem
implementation representing a book.
PreferenceTransforms
A PreferenceTransform
alters preference values in some way, possibly normalizing or exaggerating them. These may be attached to a DataModel
.
UserCorrelation, ItemCorrelation
A UserCorrelation
defines a notion of similarity between two User
s. This is a crucial part of a recommendation engine. These are attached to a Neighborhood
implementation. ItemCorrelation
s are analagous, but find similarity between Item
s.
UserNeighborhood
In a user-based recommender, recommendations are produced by finding a "neighborhood" of similar users near a given user. A UserNeighborhood
defines a means of determining that neighborhood — for example, nearest 10 users. Implementations typically need a UserCorrelation
to operate.
- Collaborative Filtering for Java
- Restricted Boltzman Machines for Collaborative Filtering
- Collaborative Filtering
- Collaborative Filtering
- Collaborative Filtering
- Large-scale Parallel Collaborative Filtering for the Netflix Prize
- 【deep learning学习笔记】Restricted Boltzmann Machines for Collaborative Filtering
- Large-scale Parallel Collaborative Filtering for the Netflix Prize
- large-scale parallel collaborative filtering for the Netfile Priza
- 【每周一文】Collaborative Filtering for Implicit Feedback Datasets(2008)
- (TODO)Empirical Analysis of Predictive Algorithm for Collaborative Filtering
- Denoising Autoencoder for Collaborative Filtering on Market Basket Data
- Collaborative Filtering算法
- Collaborative Filtering Resources
- Collaborative filtering with GraphChi
- Collaborative filtering 学习总结
- Collaborative filtering with GraphChi
- Collaborative filtering with GraphChi
- 两个傻子的爱情
- ASP.NET 2.0如何发布做好的网站或web service
- 随笔1
- 极品--FlashVml(璀灿之星)4.5 - web上的PhotoShop
- 某次面试
- Collaborative Filtering for Java
- Hardware input model
- 爱情转移
- 网站繁简转换解决方案--ASP,JSP,PHP,.Net通用
- 保养皮肤的20种方法
- Repeater的应用之嵌套和行操作
- Linux命令_1
- Servlet action is not available 问题解决
- linux下java环境