지나가는 학우들이 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 );
이름 | 데이터세트 | 훈련(밀리초) | 예측(밀리초) | AUC | 지도 | MRR | NDCG | 진기함 | 정도 | 상기하다 |
---|---|---|---|---|---|---|---|---|---|---|
가장 인기있는 | 필름 트러스트 | 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 |
이름 | 데이터세트 | 훈련(밀리초) | 예측(밀리초) | AUC | 지도 | MRR | NDCG | 진기함 | 정도 | 상기하다 |
---|---|---|---|---|---|---|---|---|---|---|
Ahr | 필름 트러스트 | 12448 | 253 | 0.89324 | 0.38967 | 0.53990 | 0.48338 | 21.13004 | 0.32295 | 0.56864 |
Aspect랭킹 | 필름 트러스트 | 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 |
BPR | 필름 트러스트 | 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 |
CLIMF | 필름 트러스트 | 48429 | 140 | 0.88293 | 0.37395 | 0.52407 | 0.46572 | 19.38964 | 0.32049 | 0.54605 |
DeepFM | 필름 트러스트 | 69264 | 99 | 0.91679 | 0.40580 | 0.56995 | 0.50985 | 11.90242 | 0.32719 | 0.61426 |
EALS | 필름 트러스트 | 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 |
FISMRMSE | 필름 트러스트 | 4030 | 729 | 0.91482 | 0.40795 | 0.56470 | 0.50920 | 11.91234 | 0.33044 | 0.61107 |
GBPR | 필름 트러스트 | 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 |
항목KNN랭킹 | 필름 트러스트 | 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 |
LambdaFMStatic | 게임 | 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 |
LambdaFM동적 | 게임 | 74218 | 27921 | 0.87380 | 0.27288 | 0.43648 | 0.34706 | 13.50578 | 0.13822 | 0.35132 |
목록별MF | 필름 트러스트 | 714 | 161 | 0.90820 | 0.40511 | 0.56619 | 0.50521 | 15.53665 | 0.32944 | 0.60092 |
PLSA | 필름 트러스트 | 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 |
UserKNN랭킹 | 필름 트러스트 | 1154 | 229 | 0.90752 | 0.41616 | 0.57525 | 0.51393 | 12.90921 | 0.32891 | 0.60152 |
VBPR | 제품 | 184473 | 15304 | 0.54336 | 0.00920 | 0.03522 | 0.01883 | 45.05101 | 0.01037 | 0.02266 |
WBPR | 필름 트러스트 | 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 | 정사각형 | 368436 | 1093 | 0.72708 | 0.05485 | 0.24012 | 0.11057 | 37.50040 | 0.07866 | 0.08640 |
SBPR | 필름 트러스트 | 41481 | 247 | 0.91010 | 0.41189 | 0.56480 | 0.50726 | 15.67905 | 0.32440 | 0.59699 |
이름 | 데이터세트 | 훈련(밀리초) | 예측(밀리초) | AUC | 지도 | MRR | NDCG | 진기함 | 정도 | 상기하다 |
---|---|---|---|---|---|---|---|---|---|---|
EMF랭킹 | dc_dense | 2066년 | 2276 | 0.61271 | 0.01611 | 0.04631 | 0.04045 | 53.26140 | 0.02387 | 0.07357 |
TFIDF | 뮤지컬_악기 | 942 | 1085 | 0.52756 | 0.01067 | 0.01917 | 0.01773 | 72.71228 | 0.00588 | 0.03103 |
이름 | 데이터세트 | 훈련(밀리초) | 예측(밀리초) | 매 | MPE | MSE |
---|---|---|---|---|---|---|
상수 추측 | 필름 트러스트 | 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 |
이름 | 데이터세트 | 훈련(밀리초) | 예측(밀리초) | 매 | MPE | MSE |
---|---|---|---|---|---|---|
측면평가 | 필름 트러스트 | 220 | 5 | 0.65754 | 0.97918 | 0.71809 |
ASVDPlusPlus | 필름 트러스트 | 5631 | 8 | 0.71975 | 0.77921 | 0.85196 |
편향MF | 필름 트러스트 | 92 | 6 | 0.63157 | 0.98387 | 0.66220 |
BHFreeRating | 필름 트러스트 | 6667 | 76 | 0.71974 | 0.77908 | 0.85198 |
BPMF | 필름 트러스트 | 25942 | 52 | 0.66504 | 0.98465 | 0.70210 |
BUCM평가 | 필름 트러스트 | 1843년 | 30 | 0.64834 | 0.99102 | 0.67992 |
CCD | 제품 | 15715 | 9 | 0.96670 | 0.93947 | 1.62145 |
FFM | 필름 트러스트 | 5422 | 6 | 0.63446 | 0.98413 | 0.66682 |
FMALS | 필름 트러스트 | 1854년 | 5 | 0.64788 | 0.96032 | 0.73636 |
fmsgd | 필름 트러스트 | 3496 | 10 | 0.63452 | 0.98426 | 0.66710 |
GPLSA | 필름 트러스트 | 2567 | 7 | 0.67311 | 0.98972 | 0.79883 |
IRRG | 필름 트러스트 | 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 |
MFALS | 필름 트러스트 | 2944 | 5 | 0.82939 | 0.94549 | 1.30547 |
NMF | 필름 트러스트 | 1198 | 8 | 0.67661 | 0.96604 | 0.83493 |
PMF | 필름 트러스트 | 215 | 7 | 0.72959 | 0.98165 | 0.99948 |
RBM | 필름 트러스트 | 19551 | 270 | 0.74484 | 0.98504 | 0.88968 |
RFRec | 필름 트러스트 | 16330 | 54 | 0.64008 | 0.97112 | 0.69390 |
SVDPlusPlus | 필름 트러스트 | 452 | 26 | 0.65248 | 0.99141 | 0.68289 |
URP | 필름 트러스트 | 1514 | 25 | 0.64207 | 0.99128 | 0.67122 |
사용자KNNR평가 | 필름 트러스트 | 1121 | 135 | 0.63933 | 0.94640 | 0.69280 |
RSTE | 필름 트러스트 | 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 |
시간SVD | 필름 트러스트 | 11545 | 36 | 0.68954 | 0.93326 | 0.87783 |
트러스트MF | 필름 트러스트 | 2038년 | 7 | 0.63787 | 0.98985 | 0.69017 |
TrustSVD | 필름 트러스트 | 12465 | 스물 둘 | 0.61984 | 0.98933 | 0.63875 |
연관규칙 | 필름 트러스트 | 2628 | 195 | 0.90853 | 0.41801 | 0.57777 |
성격진단 | 필름 트러스트 | 45 | 642 | 0.72964 | 0.76620 | 1.03071 |
P랭크D | 필름 트러스트 | 3321 | 170 | 0.74472 | 0.22894 | 0.32406 |
슬로프원 | 필름 트러스트 | 135 | 28 | 0.63788 | 0.96175 | 0.71057 |
이름 | 데이터세트 | 훈련(밀리초) | 예측(밀리초) | 매 | MPE | MSE |
---|---|---|---|---|---|---|
EMF평가 | dc_dense | 659 | 8 | 0.61546 | 0.85364 | 0.78279 |
HFT | 뮤지컬_악기 | 162753 | 13 | 0.64272 | 0.94886 | 0.81393 |
주제MFAT | 뮤지컬_악기 | 6907 | 7 | 0.61896 | 0.98734 | 0.72545 |
주제MFMT | 뮤지컬_악기 | 6323 | 7 | 0.61896 | 0.98734 | 0.72545 |
이름 | 질문 | 설명/논문 |
---|---|---|
무작위 추측 | 순위 평점 | 무작위 추측 |
가장 인기있는 | 순위 | 가장 인기있는 |
상수 추측 | 평가 | 끊임없는 추측 |
글로벌평균 | 평가 | 글로벌 평균 |
품목평균 | 평가 | 품목 평균 |
아이템클러스터 | 평가 | 아이템 클러스터링 |
사용자평균 | 평가 | 일반 사용자 |
사용자 클러스터 | 평가 | 사용자 클러스터링 |
이름 | 질문 | 설명/논문 |
---|---|---|
측면 모델 | 순위 평가 | 협업 필터링을 위한 잠재 클래스 모델 |
BH무료 | 순위 평가 | 예측과 추천 정확도의 균형: 선호도 데이터에 대한 계층적 잠재 요인 |
BUCM | 순위 평가 | 정확한 추천을 위한 모델링 항목 선택 및 관련성 |
아이템KNN | 순위 평가 | 항목 기반 협업 필터링 |
사용자KNN | 순위 평가 | 사용자 기반 협업 필터링 |
Ahr | 순위 | 암시적 피드백을 통한 항목 추천에 대한 쌍별 학습 개선 |
BPR | 순위 | BPR: 암시적 피드백을 통한 베이지안 개인화된 순위 지정 |
CLIMF | 순위 | CLiMF: 적은 것이 더 많은 협업 필터링을 통해 상호 순위를 최대화하는 방법 학습 |
EALS | 순위 | 암시적 피드백 데이터 세트를 위한 협업 필터링 |
피즘 | 순위 | FISM: Top-N 추천 시스템을 위한 팩터링된 항목 유사성 모델 |
GBPR | 순위 | GBPR: 단일 클래스 협업 필터링을 위한 그룹 선호도 기반 베이지안 개인화된 순위 |
HMMForCF | 순위 | 숨겨진 마르코프 모델 목적: 매개변수를 포함한 모델 클래스 |
항목바이그램 | 순위 | 주제 모델링: Bag-of-Words를 넘어 |
람다FM | 순위 | LambdaFM: Lambda 서로게이트를 사용하여 인수 분해 기계로 최적 순위 학습 |
LDA | 순위 | 암시적 피드백을 위한 잠재 Dirichlet 할당 |
목록별MF | 순위 | 협업 필터링을 위한 행렬 인수분해로 순위를 매기는 목록별 학습 |
PLSA | 순위 | 협업 필터링을 위한 잠재 의미 모델 |
순위ALS | 순위 | 개인화된 순위를 위한 교번 최소 제곱법 |
순위SGD | 순위 | 순위를 위한 협업 필터링 앙상블 |
아주 적은 | 순위 | SLIM: 상위 N 추천 시스템을 위한 희소 선형 방법 |
WBPR | 순위 | 불균일하게 샘플링된 항목에 대한 베이지안 개인화된 순위 |
WRMF | 순위 | 암시적 피드백 데이터세트를 위한 협업 필터링 |
순위-GeoFM | 순위 | Rank-GeoFM: 관심지점 추천을 위한 순위 기반 지리적 인수분해 방법 |
SBPR | 순위 | 협업 필터링을 위한 개인화된 순위를 향상시키기 위해 소셜 연결을 활용 |
연관규칙 | 순위 | 다단계 연관 규칙을 이용한 추천 알고리즘 |
P랭크D | 순위 | 다양성을 갖춘 개인화된 순위 |
비대칭SVD++ | 평가 | 인수분해가 이웃을 만나다: 다면적인 협업 필터링 모델 |
자동녹화 | 평가 | AutoRec: 자동 인코더와 협업 필터링의 만남 |
BPMF | 평가 | Markov Chain Monte Carlo를 사용한 베이지안 확률적 행렬 분해 |
CCD | 평가 | Netflix Prize를 위한 대규모 병렬 협업 필터링 |
FFM | 평가 | CTR 예측을 위한 현장 인식 인수분해 기계 |
GPLSA | 평가 | 가우스 확률적 잠재 의미 분석을 통한 협업 필터링 |
IRRG | 평가 | 추천 시스템에 대한 암시적 항목 관계 활용 |
MFALS | 평가 | Netflix Prize를 위한 대규모 병렬 협업 필터링 |
NMF | 평가 | 음이 아닌 행렬 분해를 위한 알고리즘 |
PMF | 평가 | PMF: 확률적 행렬 분해 |
RBM | 평가 | 협업 필터링을 위한 제한된 볼츠만 머신 |
RF-녹화 | 평가 | RF-Rec: 평가 빈도를 기반으로 추천을 빠르고 정확하게 계산 |
SVD++ | 평가 | 인수분해가 이웃을 만나다: 다면적인 협업 필터링 모델 |
URP | 평가 | 사용자 평가 프로필: 평가 예측을 위한 LDA 모델 |
RSTE | 평가 | 사회적 신뢰 앙상블과 함께 추천하는 법 배우기 |
소셜MF | 평가 | 소셜 네트워크에서 추천을 위한 신뢰 전파를 이용한 행렬 분해 기법 |
소렉 | 평가 | SoRec: 확률적 행렬 분해를 이용한 소셜 추천 |
소레그 | 평가 | 소셜 정규화가 적용된 추천 시스템 |
시간SVD++ | 평가 | 시간적 역학을 이용한 협업 필터링 |
트러스트MF | 평가 | 신뢰를 통한 소셜 협업 필터링 |
TrustSVD | 평가 | TrustSVD: 사용자 신뢰와 항목 등급의 명시적 및 암시적 영향을 모두 사용하는 협업 필터링 |
성격진단 | 평가 | 성격진단에 대한 간략한 소개 |
슬로프원 | 평가 | 온라인 평가 기반 협업 필터링을 위한 Slope One 예측자 |
이름 | 질문 | 설명/논문 |
---|---|---|
EFM | 순위 평가 | 구문 수준 감정 분석을 기반으로 설명 가능한 추천을 위한 명시적 요인 모델 |
TF-IDF | 순위 | 용어 빈도 - 역 문서 빈도 |
HFT | 평가 | 숨겨진 요소 및 숨겨진 주제: 리뷰 텍스트를 통한 평가 차원 이해 |
주제MF | 평가 | TopicMF: 평점과 리뷰를 추천에 동시에 활용 |
JStarCraft RNS는 Apache 2.0 프로토콜을 따르며 이를 기반으로 한 모든 파생 저작물은 파생 저작물의 작성자에게 귀속됩니다.
작가 | 홍 자오화 |
---|---|
이메일 | [email protected], [email protected] |
추천에 대한 지원과 도움을 주신 LibRec 팀과 추천 시스템 QQ 그룹 (274750470)에게 특별히 감사드립니다.
검색에 대한 지원과 도움을 주신 Lu Xugang에게 특별히 감사드립니다.
JStarCraft 프로젝트에 기부해주신 Hangzhou Chengzi Information Technology Co., Ltd.에 특별히 감사드립니다.