Надеюсь, что проходящие мимо одноклассники смогут поставить фреймворку JStarCraft звезду, что можно расценить как поощрение автора!
JStarCraft RNS — это легкий движок, ориентированный на поиск информации. Он работает по протоколу Apache 2.0.
Сосредоточьтесь на решении основных задач в области поиска информации: рекомендации и поиск.
Обеспечить разработку и внедрение механизма рекомендаций, отвечающего требованиям сценариев промышленного уровня.
Обеспечьте разработку и реализацию поисковой системы, отвечающую требованиям сценариев промышленного уровня.
JStarCraft RNS требует от пользователей наличия следующей среды:
git clone https://github.com/HongZhaoHua/jstarcraft-core.git
mvn install -Dmaven.test.skip=true
git clone https://github.com/HongZhaoHua/jstarcraft-ai.git
mvn install -Dmaven.test.skip=true
git clone https://github.com/HongZhaoHua/jstarcraft-rns.git
mvn install -Dmaven.test.skip=true
<dependency>
<groupId>com.jstarcraft</groupId>
<artifactId>rns</artifactId>
<version>1.0</version>
</dependency>
compile group : ' com.jstarcraft ' , name : ' rns ' , version : ' 1.0 '
Properties keyValues = new Properties ();
keyValues . load ( this . getClass (). getResourceAsStream ( "/data.properties" ));
keyValues . load ( this . getClass (). getResourceAsStream ( "/recommend/benchmark/randomguess-test.properties" ));
Configurator configurator = new Configurator ( keyValues );
RankingTask task = new RankingTask ( RandomGuessModel . class , configurator );
// 训练与评估排序模型
task . execute ();
RatingTask task = new RatingTask ( RandomGuessModel . class , configurator );
// 训练与评估评分模型
task . execute ();
// 获取模型
Model model = task . getModel ();
随着信息技术和互联网的发展,人们逐渐从信息匮乏(Information Underload)的时代走入了信息过载(Information Overload)的时代.
无论是信息消费者还是信息生产者都遇到了挑战:
* 对于信息消费者,从海量信息中寻找信息,是一件非常困难的事情;
* 对于信息生产者,从海量信息中暴露信息,也是一件非常困难的事情;
信息检索的任务就是联系用户和信息,一方面帮助用户寻找对自己有价值的信息,另一方面帮助信息暴露给对它感兴趣的用户,从而实现信息消费者和信息生产者的双赢.
从信息检索的角度:
* 搜索和推荐是获取信息的两种主要手段;
* 搜索和推荐是获取信息的两种不同方式;
* 搜索(Search)是主动明确的;
* 推荐(Recommend)是被动模糊的;
搜索和推荐是两个互补的工具.
JStarCraft-RNS引擎旨在解决推荐与搜索领域的两个核心任务:排序预测(Ranking)和评分预测(Rating).
根据解决基本问题的不同,将算法与评估指标划分为排序(Ranking)与评分(Rating).
两者之间的根本区别在于目标函数的不同.
通俗点的解释:
Ranking算法基于隐式反馈数据,趋向于拟合用户的排序.(关注度)
Rating算法基于显示反馈数据,趋向于拟合用户的评分.(满意度)
关键在于具体场景中,关注度与满意度是否保持一致.
通俗点的解释:
人们关注的东西,并不一定是满意的东西.(例如:个人所得税)
Полный пример
Напишите сценарий 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;
// 获取BeanShell脚本
File file = new File ( ScriptTestCase . class . getResource ( "Model.bsh" ). toURI ());
String script = FileUtils . readFileToString ( file , StringUtility . CHARSET );
// 设置BeanShell脚本使用到的Java类
ScriptContext context = new ScriptContext ();
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变量
ScriptScope scope = new ScriptScope ();
scope . createAttribute ( "loader" , loader );
// 执行BeanShell脚本
ScriptExpression expression = new GroovyExpression ( 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 );
Полный пример
Напишите сценарии Groovy для обучения и оценки модели и сохраните их в файле Model.groovy.
// 构建配置
def keyValues = new Properties ();
keyValues . load(loader . getResourceAsStream( " data.properties " ));
keyValues . load(loader . getResourceAsStream( " recommend/benchmark/randomguess-test.properties " ));
def configurator = new Configurator (keyValues);
// 此对象会返回给Java程序
def _data = [:];
// 构建排序任务
task = new RankingTask ( RandomGuessModel . class, configurator);
// 训练与评估模型并获取排序指标
measures = task . execute();
_data . precision = measures . get( PrecisionEvaluator . class);
_data . recall = measures . get( RecallEvaluator . class);
// 构建评分任务
task = new RatingTask ( RandomGuessModel . class, configurator);
// 训练与评估模型并获取评分指标
measures = task . execute();
_data . mae = measures . get( MAEEvaluator . class);
_data . mse = measures . get( MSEEvaluator . class);
_data;
// 获取Groovy脚本
File file = new File ( ScriptTestCase . class . getResource ( "Model.groovy" ). toURI ());
String script = FileUtils . readFileToString ( file , StringUtility . CHARSET );
// 设置Groovy脚本使用到的Java类
ScriptContext context = new ScriptContext ();
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变量
ScriptScope scope = new ScriptScope ();
scope . createAttribute ( "loader" , loader );
// 执行Groovy脚本
ScriptExpression expression = new GroovyExpression ( context , scope , script );
Map < String , Float > data = expression . doWith ( Map . class );
Полный пример
Напишите JS-скрипты для обучения и оценки модели и сохраните их в файле Model.js.
// 构建配置
var keyValues = new Properties ( ) ;
keyValues . load ( loader . getResourceAsStream ( "data.properties" ) ) ;
keyValues . load ( loader . getResourceAsStream ( "recommend/benchmark/randomguess-test.properties" ) ) ;
var configurator = new Configurator ( [ keyValues ] ) ;
// 此对象会返回给Java程序
var _data = { } ;
// 构建排序任务
task = new RankingTask ( RandomGuessModel . class , configurator ) ;
// 训练与评估模型并获取排序指标
measures = task . execute ( ) ;
_data [ 'precision' ] = measures . get ( PrecisionEvaluator . class ) ;
_data [ 'recall' ] = measures . get ( RecallEvaluator . class ) ;
// 构建评分任务
task = new RatingTask ( RandomGuessModel . class , configurator ) ;
// 训练与评估模型并获取评分指标
measures = task . execute ( ) ;
_data [ 'mae' ] = measures . get ( MAEEvaluator . class ) ;
_data [ 'mse' ] = measures . get ( MSEEvaluator . class ) ;
_data ;
// 获取JS脚本
File file = new File ( ScriptTestCase . class . getResource ( "Model.js" ). toURI ());
String script = FileUtils . readFileToString ( file , StringUtility . CHARSET );
// 设置JS脚本使用到的Java类
ScriptContext context = new ScriptContext ();
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变量
ScriptScope scope = new ScriptScope ();
scope . createAttribute ( "loader" , loader );
// 执行JS脚本
ScriptExpression expression = new JsExpression ( context , scope , script );
Map < String , Float > data = expression . doWith ( Map . class );
Полный пример
Напишите сценарий Kotlin для обучения и оценки модели и сохраните его в файле Model.kt.
// 构建配置
var keyValues = Properties ( ) ;
var loader = bindings [ "loader" ] as ClassLoader ;
keyValues . load ( loader . getResourceAsStream ( "data.properties" ) ) ;
keyValues . load ( loader . getResourceAsStream ( "model/benchmark/randomguess-test.properties" ) ) ;
var option = Option ( keyValues ) ;
// 此对象会返回给Java程序
var _data = mutableMapOf < String , Float > ( ) ;
// 构建排序任务
var rankingTask = RankingTask ( RandomGuessModel :: class . java , option ) ;
// 训练与评估模型并获取排序指标
val rankingMeasures = rankingTask . execute ( ) ;
_data [ "precision" ] = rankingMeasures . getFloat ( PrecisionEvaluator :: class . java ) ;
_data [ "recall" ] = rankingMeasures . getFloat ( RecallEvaluator :: class . java ) ;
// 构建评分任务
var ratingTask = RatingTask ( RandomGuessModel :: class . java , option ) ;
// 训练与评估模型并获取评分指标
var ratingMeasures = ratingTask . execute ( ) ;
_data [ "mae" ] = ratingMeasures . getFloat ( MAEEvaluator :: class . java ) ;
_data [ "mse" ] = ratingMeasures . getFloat ( MSEEvaluator :: class . java ) ;
_data ;
// 获取Kotlin脚本
File file = new File ( ScriptTestCase . class . getResource ( "Model.kt" ). toURI ());
String script = FileUtils . readFileToString ( file , StringUtility . CHARSET );
// 设置Kotlin脚本使用到的Java类
ScriptContext context = new ScriptContext ();
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变量
ScriptScope scope = new ScriptScope ();
scope . createAttribute ( "loader" , loader );
// 执行Kotlin脚本
ScriptExpression expression = new KotlinExpression ( context , scope , script );
Map < String , Float > data = expression . doWith ( Map . class );
Полный пример
Напишите сценарии Lua для обучения и оценки модели и сохраните ее в файле Model.lua.
-- 构建配置
local keyValues = Properties . new ();
keyValues : load ( loader : getResourceAsStream ( " data.properties " ));
keyValues : load ( loader : getResourceAsStream ( " recommend/benchmark/randomguess-test.properties " ));
local configurator = 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 ;
// 获取Lua脚本
File file = new File ( ScriptTestCase . class . getResource ( "Model.lua" ). toURI ());
String script = FileUtils . readFileToString ( file , StringUtility . CHARSET );
// 设置Lua脚本使用到的Java类
ScriptContext context = new ScriptContext ();
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变量
ScriptScope scope = new ScriptScope ();
scope . createAttribute ( "loader" , loader );
// 执行Lua脚本
ScriptExpression expression = new LuaExpression ( context , scope , script );
LuaTable data = expression . doWith ( LuaTable . class );
Полный пример
Напишите сценарии 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 )
// 设置Python环境变量
System . setProperty ( "python.console.encoding" , StringUtility . CHARSET . name ());
// 获取Python脚本
File file = new File ( PythonTestCase . class . getResource ( "Model.py" ). toURI ());
String script = FileUtils . readFileToString ( file , StringUtility . CHARSET );
// 设置Python脚本使用到的Java类
ScriptContext context = new ScriptContext ();
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变量
ScriptScope scope = new ScriptScope ();
scope . createAttribute ( "loader" , loader );
// 执行Python脚本
ScriptExpression expression = new PythonExpression ( context , scope , script );
Map < String , Double > data = expression . doWith ( Map . class );
Полный пример
Напишите сценарий 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 ;
// 获取Ruby脚本
File file = new File ( ScriptTestCase . class . getResource ( "Model.rb" ). toURI ());
String script = FileUtils . readFileToString ( file , StringUtility . CHARSET );
// 设置Ruby脚本使用到的Java类
ScriptContext context = new ScriptContext ();
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变量
ScriptScope scope = new ScriptScope ();
scope . createAttribute ( "loader" , loader );
// 执行Ruby脚本
ScriptExpression expression = new RubyExpression ( 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 );
имя | Набор данных | обучение (миллисекунды) | Прогноз (миллисекунды) | АУК | КАРТА | МРР | НДЦГ | Новинка | Точность | Отзывать |
---|---|---|---|---|---|---|---|---|---|---|
Самый популярный | кинотраст | 43 | 273 | 0,92080 | 0,41246 | 0,57196 | 0,51583 | 11,79295 | 0,33230 | 0,62385 |
СлучайноеУгадай | кинотраст | 38 | 391 | 0,51922 | 0,00627 | 0,02170 | 0,01121 | 91,94900 | 0,00550 | 0,01262 |
имя | Набор данных | обучение (миллисекунды) | Прогноз (миллисекунды) | АУК | КАРТА | МРР | НДЦГ | Новинка | Точность | Отзывать |
---|---|---|---|---|---|---|---|---|---|---|
АХр | кинотраст | 12448 | 253 | 0,89324 | 0,38967 | 0,53990 | 0,48338 | 21.13004 | 0,32295 | 0,56864 |
АспектРейтинг | кинотраст | 177 | 58 | 0,85130 | 0,15498 | 0,42480 | 0,26012 | 37,36273 | 0,13302 | 0,31292 |
BHFreeРейтинг | кинотраст | 5720 | 4257 | 0,92080 | 0,41316 | 0,57231 | 0,51662 | 11,79567 | 0,33276 | 0,62500 |
БПР | кинотраст | 4228 | 137 | 0,89390 | 0,39886 | 0,54790 | 0,49180 | 21,46738 | 0,32268 | 0,57623 |
BUCMРейтинг | кинотраст | 2111 | 1343 | 0,90782 | 0,39794 | 0,55776 | 0,49651 | 13.08073 | 0,32407 | 0,59141 |
CDAE | кинотраст | 89280 | 376 | 0,91880 | 0,40759 | 0,56855 | 0,51089 | 11,82466 | 0,33051 | 0,61967 |
КлиМФ | кинотраст | 48429 | 140 | 0,88293 | 0,37395 | 0,52407 | 0,46572 | 19,38964 | 0,32049 | 0,54605 |
ДипФМ | кинотраст | 69264 | 99 | 0,91679 | 0,40580 | 0,56995 | 0,50985 | 11.90242 | 0,32719 | 0,61426 |
ЭАЛС | кинотраст | 850 | 185 | 0,86132 | 0,31263 | 0,45680 | 0,39475 | 20.08964 | 0,27381 | 0,46271 |
ФИСМАУК | кинотраст | 2338 | 663 | 0,91216 | 0,40032 | 0,55730 | 0,50114 | 12.07469 | 0,32845 | 0,60294 |
ФИСРММСЭ | кинотраст | 4030 | 729 | 0,91482 | 0,40795 | 0,56470 | 0,50920 | 11.91234 | 0,33044 | 0,61107 |
ГБПР | кинотраст | 14827 | 150 | 0,92113 | 0,41003 | 0,57144 | 0,51464 | 11,87609 | 0,33090 | 0,62512 |
ХМ | игра | 38697 | 11223 | 0,80559 | 0,18156 | 0,37516 | 0,25803 | 16.01041 | 0,14572 | 0,22810 |
ТоварБиграмма | кинотраст | 12492 | 61 | 0,88807 | 0,33520 | 0,46870 | 0,42854 | 17.11172 | 0,29191 | 0,53308 |
ПредметKNNNРейтинг | кинотраст | 2683 | 250 | 0,87438 | 0,33375 | 0,46951 | 0,41767 | 20.23449 | 0,28581 | 0,49248 |
LDA | кинотраст | 696 | 161 | 0,91980 | 0,41758 | 0,58130 | 0,52003 | 12.31348 | 0,33336 | 0,62274 |
ЛямбдаFMStatic | игра | 25052 | 27078 | 0,87064 | 0,27294 | 0,43640 | 0,34794 | 16.47330 | 0,13941 | 0,35696 |
ЛямбдаFMВес | игра | 25232 | 28156 | 0,87339 | 0,27333 | 0,43720 | 0,34728 | 14.71413 | 0,13742 | 0,35252 |
ЛямбдаFMDynamic | игра | 74218 | 27921 | 0,87380 | 0,27288 | 0,43648 | 0,34706 | 13.50578 | 0,13822 | 0,35132 |
ListwiseMF | кинотраст | 714 | 161 | 0,90820 | 0,40511 | 0,56619 | 0,50521 | 15,53665 | 0,32944 | 0,60092 |
ПЛСА | кинотраст | 1027 | 116 | 0,89950 | 0,41217 | 0,57187 | 0,50597 | 16.01080 | 0,32401 | 0,58557 |
РейтингALS | кинотраст | 3285 | 182 | 0,85901 | 0,29255 | 0,51014 | 0,38871 | 25.27197 | 0,22931 | 0,42509 |
РангCD | продукт | 1442 | 8905 | 0,56271 | 0,01253 | 0,04618 | 0,02682 | 55.42019 | 0,01548 | 0,03520 |
РангSGD | кинотраст | 309 | 113 | 0,80388 | 0,23587 | 0,42290 | 0,32081 | 42.83305 | 0,19363 | 0,35374 |
РангVFCD | продукт | 54273 | 6524 | 0,58022 | 0,01784 | 0,06181 | 0,03664 | 62,95810 | 0,01980 | 0,04852 |
СТРОЙНЫЙ | кинотраст | 62434 | 91 | 0,91849 | 0,44851 | 0,61083 | 0,54557 | 16,67990 | 0,34019 | 0,63021 |
ПользовательKNNNRanking | кинотраст | 1154 | 229 | 0,90752 | 0,41616 | 0,57525 | 0,51393 | 12.90921 | 0,32891 | 0,60152 |
ВБПР | продукт | 184473 | 15304 | 0,54336 | 0,00920 | 0,03522 | 0,01883 | 45.05101 | 0,01037 | 0,02266 |
ВБПР | кинотраст | 20705 | 183 | 0,78072 | 0,24647 | 0,33373 | 0,30442 | 17.18609 | 0,25000 | 0,35516 |
WRMF | кинотраст | 482 | 158 | 0,90616 | 0,43278 | 0,58284 | 0,52480 | 15.17956 | 0,32918 | 0,60780 |
РейтингGeoFM | FourSquare | 368436 | 1093 | 0,72708 | 0,05485 | 0,24012 | 0,11057 | 37.50040 | 0,07866 | 0,08640 |
СБПР | кинотраст | 41481 | 247 | 0,91010 | 0,41189 | 0,56480 | 0,50726 | 15,67905 | 0,32440 | 0,59699 |
имя | Набор данных | обучение (миллисекунды) | Прогноз (миллисекунды) | АУК | КАРТА | МРР | НДЦГ | Новинка | Точность | Отзывать |
---|---|---|---|---|---|---|---|---|---|---|
EFMРанкинг | dc_dense | 2066 | 2276 | 0,61271 | 0,01611 | 0,04631 | 0,04045 | 53.26140 | 0,02387 | 0,07357 |
ТФИДФ | музыкальные_инструменты | 942 | 1085 | 0,52756 | 0,01067 | 0,01917 | 0,01773 | 72.71228 | 0,00588 | 0,03103 |
имя | Набор данных | обучение (миллисекунды) | Прогноз (миллисекунды) | МАЭ | ПДВ | МШЭ |
---|---|---|---|---|---|---|
Постоянная догадка | кинотраст | 137 | 45 | 1,05608 | 1,00000 | 1,42309 |
ГлобальныйСредний | кинотраст | 60 | 13 | 0,71977 | 0,77908 | 0,85199 |
ТоварСредний | кинотраст | 59 | 12 | 0,72968 | 0,97242 | 0,86413 |
Кластер предметов | кинотраст | 471 | 41 | 0,71976 | 0,77908 | 0,85198 |
СлучайноеУгадай | кинотраст | 38 | 8 | 1,28622 | 0,99597 | 2,47927 |
Пользовательский средний | кинотраст | 35 | 9 | 0,64618 | 0,97242 | 0,70172 |
Пользовательский кластер | кинотраст | 326 | 45 | 0,71977 | 0,77908 | 0,85199 |
имя | Набор данных | обучение (миллисекунды) | Прогноз (миллисекунды) | МАЭ | ПДВ | МШЭ |
---|---|---|---|---|---|---|
Рейтинг аспектов | кинотраст | 220 | 5 | 0,65754 | 0,97918 | 0,71809 |
АСВДПлюсПлюс | кинотраст | 5631 | 8 | 0,71975 | 0,77921 | 0,85196 |
BiasedMF | кинотраст | 92 | 6 | 0,63157 | 0,98387 | 0,66220 |
BHFreeРейтинг | кинотраст | 6667 | 76 | 0,71974 | 0,77908 | 0,85198 |
БПМФ | кинотраст | 25942 | 52 | 0,66504 | 0,98465 | 0,70210 |
BUCMRейтинг | кинотраст | 1843 г. | 30 | 0,64834 | 0,99102 | 0,67992 |
ПЗС-матрица | продукт | 15715 | 9 | 0,96670 | 0,93947 | 1,62145 |
МФМ | кинотраст | 5422 | 6 | 0,63446 | 0,98413 | 0,66682 |
ФМАЛС | кинотраст | 1854 г. | 5 | 0,64788 | 0,96032 | 0,73636 |
fmsgd | кинотраст | 3496 | 10 | 0,63452 | 0,98426 | 0,66710 |
ГПЛСА | кинотраст | 2567 | 7 | 0,67311 | 0,98972 | 0,79883 |
ИРРГ | кинотраст | 40284 | 6 | 0,64766 | 0,98777 | 0,73700 |
ТоварKNNRейтинг | кинотраст | 2052 | 27 | 0,62341 | 0,95394 | 0,67312 |
LDCC | кинотраст | 8650 | 84 | 0,66383 | 0,99284 | 0,70666 |
ЛЬОРМА | кинотраст | 16618 | 82 | 0,64930 | 0,96591 | 0,76067 |
МФАЛС | кинотраст | 2944 | 5 | 0,82939 | 0,94549 | 1,30547 |
НМФ | кинотраст | 1198 | 8 | 0,67661 | 0,96604 | 0,83493 |
ПМФ | кинотраст | 215 | 7 | 0,72959 | 0,98165 | 0,99948 |
УОР | кинотраст | 19551 | 270 | 0,74484 | 0,98504 | 0,88968 |
RFRec | кинотраст | 16330 | 54 | 0,64008 | 0,97112 | 0,69390 |
СВДПлюсПлюс | кинотраст | 452 | 26 | 0,65248 | 0,99141 | 0,68289 |
УРП | кинотраст | 1514 | 25 | 0,64207 | 0,99128 | 0,67122 |
ПользовательKNNRating | кинотраст | 1121 | 135 | 0,63933 | 0,94640 | 0,69280 |
РСТЭ | кинотраст | 4052 | 10 | 0,64303 | 0,99206 | 0,67777 |
СоциальныйMF | кинотраст | 918 | 13 | 0,64668 | 0,98881 | 0,68228 |
Сорек | кинотраст | 1048 | 10 | 0,64305 | 0,99232 | 0,67776 |
СоРег | кинотраст | 635 | 8 | 0,65943 | 0,96734 | 0,72760 |
ВремяСВД | кинотраст | 11545 | 36 | 0,68954 | 0,93326 | 0,87783 |
ТрастМФ | кинотраст | 2038 год | 7 | 0,63787 | 0,98985 | 0,69017 |
ТрастСВД | кинотраст | 12465 | двадцать два | 0,61984 | 0,98933 | 0,63875 |
Правило Ассоциации | кинотраст | 2628 | 195 | 0,90853 | 0,41801 | 0,57777 |
ЛичностьДиагностика | кинотраст | 45 | 642 | 0,72964 | 0,76620 | 1.03071 |
PRankD | кинотраст | 3321 | 170 | 0,74472 | 0,22894 | 0,32406 |
SlopeOne | кинотраст | 135 | 28 | 0,63788 | 0,96175 | 0,71057 |
имя | Набор данных | обучение (миллисекунды) | Прогноз (миллисекунды) | МАЭ | ПДВ | МШЭ |
---|---|---|---|---|---|---|
ЭФМРРейтинг | dc_dense | 659 | 8 | 0,61546 | 0,85364 | 0,78279 |
HFT | музыкальные_инструменты | 162753 | 13 | 0,64272 | 0,94886 | 0,81393 |
ТемаМФАТ | музыкальные_инструменты | 6907 | 7 | 0,61896 | 0,98734 | 0,72545 |
ТемаМФМТ | музыкальные_инструменты | 6323 | 7 | 0,61896 | 0,98734 | 0,72545 |
имя | вопрос | Описание/тезис |
---|---|---|
СлучайноеУгадай | Рейтинг Рейтинг | случайное предположение |
Самый популярный | Рейтинг | самый популярный |
Постоянная догадка | Рейтинг | постоянное предположение |
ГлобальныйСредний | Рейтинг | глобальное среднее значение |
ТоварСредний | Рейтинг | Среднее значение товара |
Кластер предметов | Рейтинг | Кластеризация элементов |
Пользовательский средний | Рейтинг | средний пользователь |
Пользовательский кластер | Рейтинг | Кластеризация пользователей |
имя | вопрос | Описание/тезис |
---|---|---|
АспектМодель | Рейтинг Рейтинг | Модели скрытых классов для совместной фильтрации |
BHБесплатно | Рейтинг Рейтинг | Баланс между точностью прогнозов и рекомендаций: иерархические скрытые факторы для данных о предпочтениях |
БУЦМ | Рейтинг Рейтинг | Выбор элементов моделирования и их релевантность для точных рекомендаций |
ТоварKNN | Рейтинг Рейтинг | Совместная фильтрация на основе элементов |
ПользовательKNN | Рейтинг Рейтинг | Совместная фильтрация на основе пользователей |
АХр | Рейтинг | Улучшение парного обучения для рекомендаций по предметам на основе неявной обратной связи |
БПР | Рейтинг | BPR: байесовский персонализированный рейтинг на основе неявной обратной связи |
КлиМФ | Рейтинг | CLiMF: учимся максимизировать взаимный ранг с помощью совместной фильтрации по принципу «меньше значит больше» |
ЭАЛС | Рейтинг | Совместная фильтрация набора данных неявной обратной связи |
ФИЗМ | Рейтинг | FISM: модели сходства факторизованных элементов для топ-N рекомендательных систем |
ГБПР | Рейтинг | GBPR: Байесовский персонализированный рейтинг на основе групповых предпочтений для совместной фильтрации одного класса |
ХММФорCF | Рейтинг | Скрытая марковская модель. Назначение: класс модели, включая параметры. |
ТоварБиграмма | Рейтинг | Тематическое моделирование: за пределами мешка слов |
ЛямбдаFM | Рейтинг | LambdaFM: обучение оптимальному ранжированию с помощью машин факторизации с использованием суррогатов Lambda |
LDA | Рейтинг | Скрытое распределение Дирихле для неявной обратной связи |
ListwiseMF | Рейтинг | Обучение ранжированию по спискам с помощью матричной факторизации для совместной фильтрации |
ПЛСА | Рейтинг | Скрытые семантические модели для совместной фильтрации |
РейтингALS | Рейтинг | Чередование метода наименьших квадратов для персонализированного ранжирования |
РангSGD | Рейтинг | Совместный ансамбль фильтрации для ранжирования |
СТРОЙНЫЙ | Рейтинг | SLIM: разреженные линейные методы для топ-N рекомендательных систем |
ВБПР | Рейтинг | Байесовский персонализированный рейтинг для элементов с неоднородной выборкой |
WRMF | Рейтинг | Совместная фильтрация наборов данных неявной обратной связи. |
Ранг-ГеоФМ | Рейтинг | Rank-GeoFM: метод географической факторизации на основе рейтинга для рекомендаций по достопримечательностям. |
СБПР | Рейтинг | Использование социальных связей для улучшения персонализированного ранжирования для совместной фильтрации |
Правило ассоциации | Рейтинг | Алгоритм рекомендаций, использующий многоуровневые правила ассоциации |
PRankD | Рейтинг | Персонализированный рейтинг с разнообразием |
АсимметричныйSVD++ | Рейтинг | Факторизация соответствует соседству: многогранная модель совместной фильтрации |
Автозапись | Рейтинг | AutoRec: автоэнкодеры и совместная фильтрация |
БПМФ | Рейтинг | Факторизация байесовской вероятностной матрицы с использованием цепи Маркова Монте-Карло |
ПЗС-матрица | Рейтинг | Масштабная параллельная совместная фильтрация для премии Netflix |
МФМ | Рейтинг | Машины факторизации с учетом поля для прогнозирования CTR |
ГПЛСА | Рейтинг | Совместная фильтрация с помощью гауссово-вероятностного латентно-семантического анализа |
ИРРГ | Рейтинг | Использование неявных связей между элементами для рекомендательных систем |
МФАЛС | Рейтинг | Масштабная параллельная совместная фильтрация для премии Netflix |
НМФ | Рейтинг | Алгоритмы факторизации неотрицательной матрицы |
ПМФ | Рейтинг | PMF: вероятностная матричная факторизация |
УОР | Рейтинг | Ограниченные машины Больцмана для совместной фильтрации |
RF-Rec | Рейтинг | RF-Rec: быстрый и точный расчет рекомендаций на основе рейтинговых частот |
СВД++ | Рейтинг | Факторизация соответствует соседству: многогранная модель совместной фильтрации |
УРП | Рейтинг | Профиль рейтинга пользователя: модель LDA для прогнозирования рейтинга. |
РСТЭ | Рейтинг | Учимся рекомендовать с помощью Social Trust Ensemble |
СоциальныйMF | Рейтинг | Метод матричной факторизации с распространением доверия для рекомендаций в социальных сетях |
Сорек | Рейтинг | SoRec: Социальные рекомендации с использованием вероятностной матричной факторизации |
СоРег | Рейтинг | Рекомендательные системы с социальной регуляризацией |
ТаймСВД++ | Рейтинг | Совместная фильтрация с временной динамикой |
ТрастМФ | Рейтинг | Социальная совместная фильтрация по доверию |
ТрастСВД | Рейтинг | TrustSVD: совместная фильтрация с явным и неявным влиянием доверия пользователей и рейтингов товаров |
ЛичностьДиагностика | Рейтинг | Краткое введение в диагностику личности |
SlopeOne | Рейтинг | Предикторы Slope One для совместной фильтрации на основе онлайн-рейтинга |
имя | вопрос | Описание/тезис |
---|---|---|
ЭФМ | Рейтинг Рейтинг | Явные факторные модели для объяснимых рекомендаций, основанных на анализе настроений на уровне фраз. |
ТФ-ИДФ | Рейтинг | Частота документов, обратная частоте термина |
HFT | Рейтинг | Скрытые факторы и скрытые темы: понимание параметров рейтинга с помощью текста обзора |
ТемаМФ | Рейтинг | TopicMF: одновременное использование рейтингов и обзоров для рекомендаций |
JStarCraft RNS следует протоколу Apache 2.0, и все производные работы, основанные на нем, принадлежат автору производной работы.
автор | Хун Чжаохуа |
---|---|
Электронная почта | [email protected], [email protected] |
Особая благодарность команде LibRec и группе рекомендательной системы QQ (274750470) за поддержку и помощь в рекомендациях.
Особая благодарность Лу Сюгану за поддержку и помощь в поисках.
Особая благодарность Hangzhou Chengzi Information Technology Co., Ltd. за пожертвование на проект JStarCraft.