lenskit (开源推荐系统) 简介
2016-01-13 10:13
295 查看
一个基于java的开源推荐系统,由明尼苏达大学的 GroupLens Research 研究小组出品。
官网地址: http://lenskit.org/
官方github地址: https://github.com/lenskit/lenskit
我的demo地址,csdn code:https://code.csdn.net/chuchus/lenskitdemo/tree/master
代表评分矩阵的接口。
EventDAO dao = TextEventDAO.create(inputFile, Formats.movieLensLatest());
项目自带有 ratings.csv,为约700个用户对约9000部电影的评分,见图1-1.
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/14/d321d9636e7e433f53d013ec0c555fe6)
图1-1 ratings.csv
它有100,000 行数据。评分信息可由json描述: {"domain" : {"minimum" : 0.5, "maximum" : 5.0,"precision" : 0.5}}。
接口,存储itemId到物品信息的映射。实现类有org.lenskit.data.dao.MapItemNameDAO。
MapItemNameDAO org.lenskit.data.dao.MapItemNameDAO.fromCSVFile(File file)
静态方法,从csv文件中生成。注意文件的第一行不能有列名。
String org.lenskit.data.dao.ItemNameDAO.getItemName(long item)
根据itemId得到物品名。
项目自带有movies.csv,见图1-2。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/14/cf15343364bdb465c1141d5474a10626)
图1-2 movies.csv 文件
有约9000部电影。我搜了一个最爱的《Highschool Musical》,三部真的都在里面。
用于配置推荐算法。多用bing()...to()...的形式。
<T> LenskitBinding<T> org.grouplens.lenskit.core.LenskitConfiguration.bind(Class<T> type)
与下面的to()方法连用,用于绑定接口的实现类。
void org.grouplens.grapht.Binding.to(@Nonnull Class<? extends T> impl)
与上面的bind()方法连用,用于绑定接口的实现类。
void org.grouplens.grapht.Binding.to(@Nullable T instance)
可以直接绑定到实例。
<T> LenskitBinding<T> org.grouplens.lenskit.inject.AbstractConfigContext.bind(Class<? extends Annotation> qual, Class<T> type)
对一个限定的类型进行绑定。
推荐引擎。
LenskitRecommenderEngine org.lenskit.LenskitRecommenderEngine.build(LenskitConfiguration config)
根据LenskitConfiguration生成引擎。
推荐系统。
LenskitRecommender org.lenskit.LenskitRecommenderEngine.createRecommender()
由推荐引擎得到推荐系统。
org.lenskit.api.ItemRecommender
物品推荐系统的接口。
ItemRecommender org.lenskit.LenskitRecommender.getItemRecommender()
由推荐系统得到物品推荐系统。
List<ScoredId> org.lenskit.api.ItemRecommender.recommend(long user, int n, @Nullable Set<Long> candidates, @Nullable Set<Long> exclude)
指定userId与n个推荐位,得到推荐结果。candidates参数限定从它里面推荐,否则考虑所有的item。exclude参数限定推荐结果不能包含它里面的物品。
org.grouplens.lenskit.scored.ScoredId
推荐结果的接口。包括itemId与score等。
官网地址: http://lenskit.org/
官方github地址: https://github.com/lenskit/lenskit
我的demo地址,csdn code:https://code.csdn.net/chuchus/lenskitdemo/tree/master
1.数据读入
1.1 评分矩阵
org.lenskit.data.dao.EventDAO代表评分矩阵的接口。
EventDAO dao = TextEventDAO.create(inputFile, Formats.movieLensLatest());
项目自带有 ratings.csv,为约700个用户对约9000部电影的评分,见图1-1.
图1-1 ratings.csv
它有100,000 行数据。评分信息可由json描述: {"domain" : {"minimum" : 0.5, "maximum" : 5.0,"precision" : 0.5}}。
1.2 物品信息
org.lenskit.data.dao.ItemNameDAO接口,存储itemId到物品信息的映射。实现类有org.lenskit.data.dao.MapItemNameDAO。
MapItemNameDAO org.lenskit.data.dao.MapItemNameDAO.fromCSVFile(File file)
静态方法,从csv文件中生成。注意文件的第一行不能有列名。
String org.lenskit.data.dao.ItemNameDAO.getItemName(long item)
根据itemId得到物品名。
项目自带有movies.csv,见图1-2。
图1-2 movies.csv 文件
有约9000部电影。我搜了一个最爱的《Highschool Musical》,三部真的都在里面。
2.指定算法
org.lenskit.LenskitConfiguration用于配置推荐算法。多用bing()...to()...的形式。
<T> LenskitBinding<T> org.grouplens.lenskit.core.LenskitConfiguration.bind(Class<T> type)
与下面的to()方法连用,用于绑定接口的实现类。
void org.grouplens.grapht.Binding.to(@Nonnull Class<? extends T> impl)
与上面的bind()方法连用,用于绑定接口的实现类。
void org.grouplens.grapht.Binding.to(@Nullable T instance)
可以直接绑定到实例。
<T> LenskitBinding<T> org.grouplens.lenskit.inject.AbstractConfigContext.bind(Class<? extends Annotation> qual, Class<T> type)
对一个限定的类型进行绑定。
3.计算
org.lenskit.LenskitRecommenderEngine推荐引擎。
LenskitRecommenderEngine org.lenskit.LenskitRecommenderEngine.build(LenskitConfiguration config)
根据LenskitConfiguration生成引擎。
4.推荐
org.lenskit.LenskitRecommender推荐系统。
LenskitRecommender org.lenskit.LenskitRecommenderEngine.createRecommender()
由推荐引擎得到推荐系统。
org.lenskit.api.ItemRecommender
物品推荐系统的接口。
ItemRecommender org.lenskit.LenskitRecommender.getItemRecommender()
由推荐系统得到物品推荐系统。
List<ScoredId> org.lenskit.api.ItemRecommender.recommend(long user, int n, @Nullable Set<Long> candidates, @Nullable Set<Long> exclude)
指定userId与n个推荐位,得到推荐结果。candidates参数限定从它里面推荐,否则考虑所有的item。exclude参数限定推荐结果不能包含它里面的物品。
org.grouplens.lenskit.scored.ScoredId
推荐结果的接口。包括itemId与score等。
5.检验
lenskit自带了推荐效果检验的代码,且功能强大。5.1 数据分拆
相关代码在“org.grouplens.lenskit.eval.data.crossfold”包下。5.2 检验中的计算
相关代码在“org.grouplens.lenskit.eval.traintest”包下。相关文章推荐
- 解析json之com.google.gson.Gson
- 禁止input缓存
- 关于创建pch文件后,导入文件出现could not build module foundation错误提示
- How to use VIM?
- 第三方应用访问外置SD卡
- python爬虫抢火车票
- iOS 利用 framework 进行动态更新
- js jquery 计算两个时间相差天数
- OLEDB对数据库的操作心得(一)数据表及数据结构的填充
- apk是否有,获取apk包名,名字,版本,等一些常用信息
- TableView的顶部有一部分空白区域,不是Cell
- ios 深copy 浅copy
- Spine的使用(With Cocos2d-x)
- linux下测试程序中各函数执行时间工具
- Spring Security笔记:使用BCrypt算法加密存储登录密码
- lua的string库
- 关于浏览器缓存
- 微软简讯20160113 终止framework 4.0 4.5 4.5.1 的支持
- tcpdf生成中文pdf
- 开始