Skip to content

专注于解决推荐领域与搜索领域的两个核心问题:排序预测(Ranking)和评分预测(Rating). 为相关领域的研发人员提供完整的通用设计与参考实现. 涵盖了70多种排序预测与评分预测算法,是最快最全的Java推荐与搜索引擎.

License

Notifications You must be signed in to change notification settings

laozhaoJava/jstarcraft-rns

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Repository files navigation

JStarCraft RNS


LicenseTotal linesCodacy Badge

希望路过的同学,顺手给JStarCraft框架点个Star,算是对作者的一种鼓励吧!


目录


介绍

JStarCraft RNS是一个面向信息检索领域的轻量级引擎.遵循Apache 2.0协议.

专注于解决信息检索领域的基本问题:推荐与搜索.

提供满足工业级别场景要求的推荐引擎设计与实现.

提供满足工业级别场景要求的搜索引擎设计与实现.


特性


安装

JStarCraft RNS要求使用者具备以下环境:

  • JDK 8或者以上
  • Maven 3

安装JStarCraft-Core框架

git clone https://github.com/HongZhaoHua/jstarcraft-core.git mvn install -Dmaven.test.skip=true

安装JStarCraft-AI框架

git clone https://github.com/HongZhaoHua/jstarcraft-ai.git mvn install -Dmaven.test.skip=true

安装JStarCraft-RNS引擎

git clone https://github.com/HongZhaoHua/jstarcraft-rns.git mvn install -Dmaven.test.skip=true

使用

设置依赖

  • 设置Maven依赖
<dependency> <groupId>com.jstarcraft</groupId> <artifactId>rns</artifactId> <version>1.0</version> </dependency> 
  • 设置Gradle依赖
compile group: 'com.jstarcraft', name: 'rns', version: '1.0'

构建配置器

PropertieskeyValues = newProperties(); keyValues.load(this.getClass().getResourceAsStream("/data.properties")); keyValues.load(this.getClass().getResourceAsStream("/recommend/benchmark/randomguess-test.properties")); Configuratorconfigurator = newConfigurator(keyValues);

训练与评估模型

  • 构建排序任务
RankingTasktask = newRankingTask(RandomGuessModel.class, configurator); // 训练与评估排序模型task.execute();
  • 构建评分任务
RatingTasktask = newRatingTask(RandomGuessModel.class, configurator); // 训练与评估评分模型task.execute();

获取模型

// 获取模型Modelmodel = task.getModel();

架构


概念

为什么需要信息检索

随着信息技术和互联网的发展,人们逐渐从信息匮乏(Information Underload)的时代走入了信息过载(Information Overload)的时代. 无论是信息消费者还是信息生产者都遇到了挑战: * 对于信息消费者,从海量信息中寻找信息,是一件非常困难的事情; * 对于信息生产者,从海量信息中暴露信息,也是一件非常困难的事情; 信息检索的任务就是联系用户和信息,一方面帮助用户寻找对自己有价值的信息,另一方面帮助信息暴露给对它感兴趣的用户,从而实现信息消费者和信息生产者的双赢. 

搜索与推荐的异同

从信息检索的角度: * 搜索和推荐是获取信息的两种主要手段; * 搜索和推荐是获取信息的两种不同方式; * 搜索(Search)是主动明确的; * 推荐(Recommend)是被动模糊的; 搜索和推荐是两个互补的工具. 

JStarCraft-RNS引擎解决什么问题

JStarCraft-RNS引擎旨在解决推荐与搜索领域的两个核心任务:排序预测(Ranking)和评分预测(Rating). 

Ranking任务与Rating任务之间的区别

根据解决基本问题的不同,将算法与评估指标划分为排序(Ranking)与评分(Rating). 两者之间的根本区别在于目标函数的不同. 通俗点的解释: Ranking算法基于隐式反馈数据,趋向于拟合用户的排序.(关注度) Rating算法基于显示反馈数据,趋向于拟合用户的评分.(满意度) 

Rating算法能不能用于Ranking问题

关键在于具体场景中,关注度与满意度是否保持一致. 通俗点的解释: 人们关注的东西,并不一定是满意的东西.(例如:个人所得税) 

示例

JStarCraft-RNS引擎与BeanShell脚本交互

  • 完整示例

  • 编写BeanShell脚本训练与评估模型并保存到Model.bsh文件

// 构建配置 keyValues = new Properties(); keyValues.load(loader.getResourceAsStream("data.properties")); keyValues.load(loader.getResourceAsStream("model/benchmark/randomguess-test.properties")); configurator = new Configurator(keyValues); // 此对象会返回给Java程序 _data = new HashMap(); // 构建排序任务 task = new RankingTask(RandomGuessModel.class, configurator); // 训练与评估模型并获取排序指标 measures = task.execute(); _data.put("precision", measures.get(PrecisionEvaluator.class)); _data.put("recall", measures.get(RecallEvaluator.class)); // 构建评分任务 task = new RatingTask(RandomGuessModel.class, configurator); // 训练与评估模型并获取评分指标 measures = task.execute(); _data.put("mae", measures.get(MAEEvaluator.class)); _data.put("mse", measures.get(MSEEvaluator.class)); _data; 
  • 使用JStarCraft框架从Model.bsh文件加载并执行BeanShell脚本
// 获取BeanShell脚本Filefile = newFile(ScriptTestCase.class.getResource("Model.bsh").toURI()); Stringscript = FileUtils.readFileToString(file, StringUtility.CHARSET); // 设置BeanShell脚本使用到的Java类ScriptContextcontext = newScriptContext(); context.useClasses(Properties.class, Assert.class); context.useClass("Configurator", MapConfigurator.class); context.useClasses("com.jstarcraft.ai.evaluate"); context.useClasses("com.jstarcraft.rns.task"); context.useClasses("com.jstarcraft.rns.model.benchmark"); // 设置BeanShell脚本使用到的Java变量ScriptScopescope = newScriptScope(); scope.createAttribute("loader", loader); // 执行BeanShell脚本ScriptExpressionexpression = newGroovyExpression(context, scope, script); Map<String, Float> data = expression.doWith(Map.class); Assert.assertEquals(0.005825241F, data.get("precision"), 0F); Assert.assertEquals(0.011579763F, data.get("recall"), 0F); Assert.assertEquals(1.2708743F, data.get("mae"), 0F); Assert.assertEquals(2.425075F, data.get("mse"), 0F);

JStarCraft-RNS引擎与Groovy脚本交互

  • 完整示例

  • 编写Groovy脚本训练与评估模型并保存到Model.groovy文件

// 构建配置def keyValues =newProperties(); keyValues.load(loader.getResourceAsStream("data.properties")); keyValues.load(loader.getResourceAsStream("recommend/benchmark/randomguess-test.properties")); def configurator =newConfigurator(keyValues); // 此对象会返回给Java程序def _data = [:]; // 构建排序任务 task =newRankingTask(RandomGuessModel.class, configurator); // 训练与评估模型并获取排序指标 measures = task.execute(); _data.precision = measures.get(PrecisionEvaluator.class); _data.recall = measures.get(RecallEvaluator.class); // 构建评分任务 task =newRatingTask(RandomGuessModel.class, configurator); // 训练与评估模型并获取评分指标 measures = task.execute(); _data.mae = measures.get(MAEEvaluator.class); _data.mse = measures.get(MSEEvaluator.class); _data;
  • 使用JStarCraft框架从Model.groovy文件加载并执行Groovy脚本
// 获取Groovy脚本Filefile = newFile(ScriptTestCase.class.getResource("Model.groovy").toURI()); Stringscript = FileUtils.readFileToString(file, StringUtility.CHARSET); // 设置Groovy脚本使用到的Java类ScriptContextcontext = newScriptContext(); context.useClasses(Properties.class, Assert.class); context.useClass("Configurator", MapConfigurator.class); context.useClasses("com.jstarcraft.ai.evaluate"); context.useClasses("com.jstarcraft.rns.task"); context.useClasses("com.jstarcraft.rns.model.benchmark"); // 设置Groovy脚本使用到的Java变量ScriptScopescope = newScriptScope(); scope.createAttribute("loader", loader); // 执行Groovy脚本ScriptExpressionexpression = newGroovyExpression(context, scope, script); Map<String, Float> data = expression.doWith(Map.class);

JStarCraft-RNS引擎与JS脚本交互

  • 完整示例

  • 编写JS脚本训练与评估模型并保存到Model.js文件

// 构建配置varkeyValues=newProperties();keyValues.load(loader.getResourceAsStream("data.properties"));keyValues.load(loader.getResourceAsStream("recommend/benchmark/randomguess-test.properties"));varconfigurator=newConfigurator([keyValues]);// 此对象会返回给Java程序var_data={};// 构建排序任务task=newRankingTask(RandomGuessModel.class,configurator);// 训练与评估模型并获取排序指标measures=task.execute();_data['precision']=measures.get(PrecisionEvaluator.class);_data['recall']=measures.get(RecallEvaluator.class);// 构建评分任务task=newRatingTask(RandomGuessModel.class,configurator);// 训练与评估模型并获取评分指标measures=task.execute();_data['mae']=measures.get(MAEEvaluator.class);_data['mse']=measures.get(MSEEvaluator.class);_data;
  • 使用JStarCraft框架从Model.js文件加载并执行JS脚本
// 获取JS脚本Filefile = newFile(ScriptTestCase.class.getResource("Model.js").toURI()); Stringscript = FileUtils.readFileToString(file, StringUtility.CHARSET); // 设置JS脚本使用到的Java类ScriptContextcontext = newScriptContext(); context.useClasses(Properties.class, Assert.class); context.useClass("Configurator", MapConfigurator.class); context.useClasses("com.jstarcraft.ai.evaluate"); context.useClasses("com.jstarcraft.rns.task"); context.useClasses("com.jstarcraft.rns.model.benchmark"); // 设置JS脚本使用到的Java变量ScriptScopescope = newScriptScope(); scope.createAttribute("loader", loader); // 执行JS脚本ScriptExpressionexpression = newJsExpression(context, scope, script); Map<String, Float> data = expression.doWith(Map.class);

JStarCraft-RNS引擎与Kotlin脚本交互

  • 完整示例

  • 编写Kotlin脚本训练与评估模型并保存到Model.kt文件

// 构建配置varkeyValues=Properties();varloader=bindings["loader"]asClassLoader;keyValues.load(loader.getResourceAsStream("data.properties"));keyValues.load(loader.getResourceAsStream("model/benchmark/randomguess-test.properties"));varoption=Option(keyValues);// 此对象会返回给Java程序var_data=mutableMapOf<String,Float>();// 构建排序任务varrankingTask=RankingTask(RandomGuessModel::class.java,option);// 训练与评估模型并获取排序指标valrankingMeasures=rankingTask.execute();_data["precision"]=rankingMeasures.getFloat(PrecisionEvaluator::class.java);_data["recall"]=rankingMeasures.getFloat(RecallEvaluator::class.java);// 构建评分任务varratingTask=RatingTask(RandomGuessModel::class.java,option);// 训练与评估模型并获取评分指标varratingMeasures=ratingTask.execute();_data["mae"]=ratingMeasures.getFloat(MAEEvaluator::class.java);_data["mse"]=ratingMeasures.getFloat(MSEEvaluator::class.java);_data;
  • 使用JStarCraft框架从Model.kt文件加载并执行Kotlin脚本
// 获取Kotlin脚本Filefile = newFile(ScriptTestCase.class.getResource("Model.kt").toURI()); Stringscript = FileUtils.readFileToString(file, StringUtility.CHARSET); // 设置Kotlin脚本使用到的Java类ScriptContextcontext = newScriptContext(); context.useClasses(Properties.class, Assert.class); context.useClass("Option", MapOption.class); context.useClasses("com.jstarcraft.ai.evaluate"); context.useClasses("com.jstarcraft.rns.task"); context.useClasses("com.jstarcraft.rns.model.benchmark"); // 设置Kotlin脚本使用到的Java变量ScriptScopescope = newScriptScope(); scope.createAttribute("loader", loader); // 执行Kotlin脚本ScriptExpressionexpression = newKotlinExpression(context, scope, script); Map<String, Float> data = expression.doWith(Map.class);

JStarCraft-RNS引擎与Lua脚本交互

  • 完整示例

  • 编写Lua脚本训练与评估模型并保存到Model.lua文件

-- 构建配置localkeyValues=Properties.new(); keyValues:load(loader:getResourceAsStream("data.properties")); keyValues:load(loader:getResourceAsStream("recommend/benchmark/randomguess-test.properties")); localconfigurator=Configurator.new({keyValues }); -- 此对象会返回给Java程序local_data={}; -- 构建排序任务task=RankingTask.new(RandomGuessModel, configurator); -- 训练与评估模型并获取排序指标measures=task:execute(); _data["precision"] =measures:get(PrecisionEvaluator); _data["recall"] =measures:get(RecallEvaluator); -- 构建评分任务task=RatingTask.new(RandomGuessModel, configurator); -- 训练与评估模型并获取评分指标measures=task:execute(); _data["mae"] =measures:get(MAEEvaluator); _data["mse"] =measures:get(MSEEvaluator); return_data;
  • 使用JStarCraft框架从Model.lua文件加载并执行Lua脚本
// 获取Lua脚本Filefile = newFile(ScriptTestCase.class.getResource("Model.lua").toURI()); Stringscript = FileUtils.readFileToString(file, StringUtility.CHARSET); // 设置Lua脚本使用到的Java类ScriptContextcontext = newScriptContext(); context.useClasses(Properties.class, Assert.class); context.useClass("Configurator", MapConfigurator.class); context.useClasses("com.jstarcraft.ai.evaluate"); context.useClasses("com.jstarcraft.rns.task"); context.useClasses("com.jstarcraft.rns.model.benchmark"); // 设置Lua脚本使用到的Java变量ScriptScopescope = newScriptScope(); scope.createAttribute("loader", loader); // 执行Lua脚本ScriptExpressionexpression = newLuaExpression(context, scope, script); LuaTabledata = expression.doWith(LuaTable.class);

JStarCraft-RNS引擎与Python脚本交互

  • 完整示例

  • 编写Python脚本训练与评估模型并保存到Model.py文件

# 构建配置keyValues=Properties() keyValues.load(loader.getResourceAsStream("data.properties")) keyValues.load(loader.getResourceAsStream("recommend/benchmark/randomguess-test.properties")) configurator=Configurator([keyValues]) # 此对象会返回给Java程序_data={} # 构建排序任务task=RankingTask(RandomGuessModel, configurator) # 训练与评估模型并获取排序指标measures=task.execute() _data['precision'] =measures.get(PrecisionEvaluator) _data['recall'] =measures.get(RecallEvaluator) # 构建评分任务task=RatingTask(RandomGuessModel, configurator) # 训练与评估模型并获取评分指标measures=task.execute() _data['mae'] =measures.get(MAEEvaluator) _data['mse'] =measures.get(MSEEvaluator)
  • 使用JStarCraft框架从Model.py文件加载并执行Python脚本
// 设置Python环境变量System.setProperty("python.console.encoding", StringUtility.CHARSET.name()); // 获取Python脚本Filefile = newFile(PythonTestCase.class.getResource("Model.py").toURI()); Stringscript = FileUtils.readFileToString(file, StringUtility.CHARSET); // 设置Python脚本使用到的Java类ScriptContextcontext = newScriptContext(); context.useClasses(Properties.class, Assert.class); context.useClass("Configurator", MapConfigurator.class); context.useClasses("com.jstarcraft.ai.evaluate"); context.useClasses("com.jstarcraft.rns.task"); context.useClasses("com.jstarcraft.rns.model.benchmark"); // 设置Python脚本使用到的Java变量ScriptScopescope = newScriptScope(); scope.createAttribute("loader", loader); // 执行Python脚本ScriptExpressionexpression = newPythonExpression(context, scope, script); Map<String, Double> data = expression.doWith(Map.class);

JStarCraft-Ruby

  • 完整示例

  • 编写Ruby脚本训练与评估模型并保存到Model.rb文件

# 构建配置keyValues=Properties.new()keyValues.load($loader.getResourceAsStream("data.properties"))keyValues.load($loader.getResourceAsStream("model/benchmark/randomguess-test.properties"))configurator=Configurator.new(keyValues)# 此对象会返回给Java程序_data=Hash.new()# 构建排序任务task=RankingTask.new(RandomGuessModel.java_class,configurator)# 训练与评估模型并获取排序指标measures=task.execute()_data['precision']=measures.get(PrecisionEvaluator.java_class)_data['recall']=measures.get(RecallEvaluator.java_class)# 构建评分任务task=RatingTask.new(RandomGuessModel.java_class,configurator)# 训练与评估模型并获取评分指标measures=task.execute()_data['mae']=measures.get(MAEEvaluator.java_class)_data['mse']=measures.get(MSEEvaluator.java_class)_data;
  • 使用JStarCraft框架从Model.rb文件加载并执行Ruby脚本
// 获取Ruby脚本Filefile = newFile(ScriptTestCase.class.getResource("Model.rb").toURI()); Stringscript = FileUtils.readFileToString(file, StringUtility.CHARSET); // 设置Ruby脚本使用到的Java类ScriptContextcontext = newScriptContext(); context.useClasses(Properties.class, Assert.class); context.useClass("Configurator", MapConfigurator.class); context.useClasses("com.jstarcraft.ai.evaluate"); context.useClasses("com.jstarcraft.rns.task"); context.useClasses("com.jstarcraft.rns.model.benchmark"); // 设置Ruby脚本使用到的Java变量ScriptScopescope = newScriptScope(); scope.createAttribute("loader", loader); // 执行Ruby脚本ScriptExpressionexpression = newRubyExpression(context, scope, script); Map<String, Double> data = expression.doWith(Map.class); Assert.assertEquals(0.005825241096317768D, data.get("precision"), 0D); Assert.assertEquals(0.011579763144254684D, data.get("recall"), 0D); Assert.assertEquals(1.270874261856079D, data.get("mae"), 0D); Assert.assertEquals(2.425075054168701D, data.get("mse"), 0D);

对比

排序模型对比

  • 基准模型
名称数据集训练 (毫秒)预测 (毫秒)AUCMAPMRRNDCGNoveltyPrecisionRecall
MostPopularfilmtrust432730.920800.412460.571960.5158311.792950.332300.62385
RandomGuessfilmtrust383910.519220.006270.021700.0112191.949000.005500.01262
  • 协同模型
名称数据集训练 (毫秒)预测 (毫秒)AUCMAPMRRNDCGNoveltyPrecisionRecall
AoBPRfilmtrust124482530.893240.389670.539900.4833821.130040.322950.56864
AspectRankingfilmtrust177580.851300.154980.424800.2601237.362730.133020.31292
BHFreeRankingfilmtrust572042570.920800.413160.572310.5166211.795670.332760.62500
BPRfilmtrust42281370.893900.398860.547900.4918021.467380.322680.57623
BUCMRankingfilmtrust211113430.907820.397940.557760.4965113.080730.324070.59141
CDAEfilmtrust892803760.918800.407590.568550.5108911.824660.330510.61967
CLiMFfilmtrust484291400.882930.373950.524070.4657219.389640.320490.54605
DeepFMfilmtrust69264990.916790.405800.569950.5098511.902420.327190.61426
EALSfilmtrust8501850.861320.312630.456800.3947520.089640.273810.46271
FISMAUCfilmtrust23386630.912160.400320.557300.5011412.074690.328450.60294
FISMRMSEfilmtrust40307290.914820.407950.564700.5092011.912340.330440.61107
GBPRfilmtrust148271500.921130.410030.571440.5146411.876090.330900.62512
HMMgame38697112230.805590.181560.375160.2580316.010410.145720.22810
ItemBigramfilmtrust12492610.888070.335200.468700.4285417.111720.291910.53308
ItemKNNRankingfilmtrust26832500.874380.333750.469510.4176720.234490.285810.49248
LDAfilmtrust6961610.919800.417580.581300.5200312.313480.333360.62274
LambdaFMStaticgame25052270780.870640.272940.436400.3479416.473300.139410.35696
LambdaFMWeightgame25232281560.873390.273330.437200.3472814.714130.137420.35252
LambdaFMDynamicgame74218279210.873800.272880.436480.3470613.505780.138220.35132
ListwiseMFfilmtrust7141610.908200.405110.566190.5052115.536650.329440.60092
PLSAfilmtrust10271160.899500.412170.571870.5059716.010800.324010.58557
RankALSfilmtrust32851820.859010.292550.510140.3887125.271970.229310.42509
RankCDproduct144289050.562710.012530.046180.0268255.420190.015480.03520
RankSGDfilmtrust3091130.803880.235870.422900.3208142.833050.193630.35374
RankVFCDproduct5427365240.580220.017840.061810.0366462.958100.019800.04852
SLIMfilmtrust62434910.918490.448510.610830.5455716.679900.340190.63021
UserKNNRankingfilmtrust11542290.907520.416160.575250.5139312.909210.328910.60152
VBPRproduct184473153040.543360.009200.035220.0188345.051010.010370.02266
WBPRfilmtrust207051830.780720.246470.333730.3044217.186090.250000.35516
WRMFfilmtrust4821580.906160.432780.582840.5248015.179560.329180.60780
RankGeoFMFourSquare36843610930.727080.054850.240120.1105737.500400.078660.08640
SBPRfilmtrust414812470.910100.411890.564800.5072615.679050.324400.59699
  • 内容模型
名称数据集训练 (毫秒)预测 (毫秒)AUCMAPMRRNDCGNoveltyPrecisionRecall
EFMRankingdc_dense206622760.612710.016110.046310.0404553.261400.023870.07357
TFIDFmusical_instruments94210850.527560.010670.019170.0177372.712280.005880.03103

评分模型对比

  • 基准模型
名称数据集训练 (毫秒)预测 (毫秒)MAEMPEMSE
ConstantGuessfilmtrust137451.056081.000001.42309
GlobalAveragefilmtrust60130.719770.779080.85199
ItemAveragefilmtrust59120.729680.972420.86413
ItemClusterfilmtrust471410.719760.779080.85198
RandomGuessfilmtrust3881.286220.995972.47927
UserAveragefilmtrust3590.646180.972420.70172
UserClusterfilmtrust326450.719770.779080.85199
  • 协同模型
名称数据集训练 (毫秒)预测 (毫秒)MAEMPEMSE
AspectRatingfilmtrust22050.657540.979180.71809
ASVDPlusPlusfilmtrust563180.719750.779210.85196
BiasedMFfilmtrust9260.631570.983870.66220
BHFreeRatingfilmtrust6667760.719740.779080.85198
BPMFfilmtrust25942520.665040.984650.70210
BUCMRatingfilmtrust1843300.648340.991020.67992
CCDproduct1571590.966700.939471.62145
FFMfilmtrust542260.634460.984130.66682
FMALSfilmtrust185450.647880.960320.73636
FMSGDfilmtrust3496100.634520.984260.66710
GPLSAfilmtrust256770.673110.989720.79883
IRRGfilmtrust4028460.647660.987770.73700
ItemKNNRatingfilmtrust2052270.623410.953940.67312
LDCCfilmtrust8650840.663830.992840.70666
LLORMAfilmtrust16618820.649300.965910.76067
MFALSfilmtrust294450.829390.945491.30547
NMFfilmtrust119880.676610.966040.83493
PMFfilmtrust21570.729590.981650.99948
RBMfilmtrust195512700.744840.985040.88968
RFRecfilmtrust16330540.640080.971120.69390
SVDPlusPlusfilmtrust452260.652480.991410.68289
URPfilmtrust1514250.642070.991280.67122
UserKNNRatingfilmtrust11211350.639330.946400.69280
RSTEfilmtrust4052100.643030.992060.67777
SocialMFfilmtrust918130.646680.988810.68228
SoRecfilmtrust1048100.643050.992320.67776
SoRegfilmtrust63580.659430.967340.72760
TimeSVDfilmtrust11545360.689540.933260.87783
TrustMFfilmtrust203870.637870.989850.69017
TrustSVDfilmtrust12465220.619840.989330.63875
AssociationRulefilmtrust26281950.908530.418010.57777
PersonalityDiagnosisfilmtrust456420.729640.766201.03071
PRankDfilmtrust33211700.744720.228940.32406
SlopeOnefilmtrust135280.637880.961750.71057
  • 内容模型
名称数据集训练 (毫秒)预测 (毫秒)MAEMPEMSE
EFMRatingdc_dense65980.615460.853640.78279
HFTmusical_instruments162753130.642720.948860.81393
TopicMFATmusical_instruments690770.618960.987340.72545
TopicMFMTmusical_instruments632370.618960.987340.72545

版本


参考

个性化模型说明

  • 基准模型
名称问题说明/论文
RandomGuessRanking Rating随机猜测
MostPopularRanking最受欢迎
ConstantGuessRating常量猜测
GlobalAverageRating全局平均
ItemAverageRating物品平均
ItemClusterRating物品聚类
UserAverageRating用户平均
UserClusterRating用户聚类
  • 协同模型
名称问题说明/论文
AspectModelRanking RatingLatent class models for collaborative filtering
BHFreeRanking RatingBalancing Prediction and Recommendation Accuracy: Hierarchical Latent Factors for Preference Data
BUCMRanking RatingModeling Item Selection and Relevance for Accurate Recommendations
ItemKNNRanking Rating基于物品的协同过滤
UserKNNRanking Rating基于用户的协同过滤
AoBPRRankingImproving pairwise learning for item recommendation from implicit feedback
BPRRankingBPR: Bayesian Personalized Ranking from Implicit Feedback
CLiMFRankingCLiMF: learning to maximize reciprocal rank with collaborative less-is-more filtering
EALSRankingCollaborative filtering for implicit feedback dataset
FISMRankingFISM: Factored Item Similarity Models for Top-N Recommender Systems
GBPRRankingGBPR: Group Preference Based Bayesian Personalized Ranking for One-Class Collaborative Filtering
HMMForCFRankingA Hidden Markov Model Purpose: A class for the model, including parameters
ItemBigramRankingTopic Modeling: Beyond Bag-of-Words
LambdaFMRankingLambdaFM: Learning Optimal Ranking with Factorization Machines Using Lambda Surrogates
LDARankingLatent Dirichlet Allocation for implicit feedback
ListwiseMFRankingList-wise learning to rank with matrix factorization for collaborative filtering
PLSARankingLatent semantic models for collaborative filtering
RankALSRankingAlternating Least Squares for Personalized Ranking
RankSGDRankingCollaborative Filtering Ensemble for Ranking
SLIMRankingSLIM: Sparse Linear Methods for Top-N Recommender Systems
WBPRRankingBayesian Personalized Ranking for Non-Uniformly Sampled Items
WRMFRankingCollaborative filtering for implicit feedback datasets
Rank-GeoFMRankingRank-GeoFM: A ranking based geographical factorization method for point of interest recommendation
SBPRRankingLeveraging Social Connections to Improve Personalized Ranking for Collaborative Filtering
AssociationRuleRankingA Recommendation Algorithm Using Multi-Level Association Rules
PRankDRankingPersonalised ranking with diversity
AsymmetricSVD++RatingFactorization Meets the Neighborhood: a Multifaceted Collaborative Filtering Model
AutoRecRatingAutoRec: Autoencoders Meet Collaborative Filtering
BPMFRatingBayesian Probabilistic Matrix Factorization using Markov Chain Monte Carlo
CCDRatingLarge-Scale Parallel Collaborative Filtering for the Netflix Prize
FFMRatingField Aware Factorization Machines for CTR Prediction
GPLSARatingCollaborative Filtering via Gaussian Probabilistic Latent Semantic Analysis
IRRGRatingExploiting Implicit Item Relationships for Recommender Systems
MFALSRatingLarge-Scale Parallel Collaborative Filtering for the Netflix Prize
NMFRatingAlgorithms for Non-negative Matrix Factorization
PMFRatingPMF: Probabilistic Matrix Factorization
RBMRatingRestricted Boltzman Machines for Collaborative Filtering
RF-RecRatingRF-Rec: Fast and Accurate Computation of Recommendations based on Rating Frequencies
SVD++RatingFactorization Meets the Neighborhood: a Multifaceted Collaborative Filtering Model
URPRatingUser Rating Profile: a LDA model for rating prediction
RSTERatingLearning to Recommend with Social Trust Ensemble
SocialMFRatingA matrix factorization technique with trust propagation for recommendation in social networks
SoRecRatingSoRec: Social recommendation using probabilistic matrix factorization
SoRegRatingRecommender systems with social regularization
TimeSVD++RatingCollaborative Filtering with Temporal Dynamics
TrustMFRatingSocial Collaborative Filtering by Trust
TrustSVDRatingTrustSVD: Collaborative Filtering with Both the Explicit and Implicit Influence of User Trust and of Item Ratings
PersonalityDiagnosisRatingA brief introduction to Personality Diagnosis
SlopeOneRatingSlope One Predictors for Online Rating-Based Collaborative Filtering
  • 内容模型
名称问题说明/论文
EFMRanking RatingExplicit factor models for explainable recommendation based on phrase-level sentiment analysis
TF-IDFRanking词频-逆文档频率
HFTRatingHidden factors and hidden topics: understanding rating dimensions with review text
TopicMFRatingTopicMF: Simultaneously Exploiting Ratings and Reviews for Recommendation

数据集说明


协议

JStarCraft RNS遵循Apache 2.0协议,一切以其为基础的衍生作品均属于衍生作品的作者.


作者

作者洪钊桦
E-mail[email protected], [email protected]

致谢

特别感谢LibRec团队推荐系统QQ群(274750470)在推荐方面提供的支持与帮助.

特别感谢陆徐刚在搜索方面提供的支持与帮助.


捐赠

特别感谢杭州橙子信息科技有限公司对JStarCraft项目的捐赠.


About

专注于解决推荐领域与搜索领域的两个核心问题:排序预测(Ranking)和评分预测(Rating). 为相关领域的研发人员提供完整的通用设计与参考实现. 涵盖了70多种排序预测与评分预测算法,是最快最全的Java推荐与搜索引擎.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java99.4%
  • Kotlin0.1%
  • Ruby0.1%
  • JavaScript0.1%
  • Groovy0.1%
  • Lua0.1%
  • Python0.1%