精华内容
下载资源
问答
  • 这几天学习了一下开源的java推荐系统Taste,有一些心得,慢慢的贴出来。如果产生Item-based推荐:假设有4个用户 u1、u2、u3、u4产品有n个 c1、c2、c3步骤:1.找出用户对产品的打分。2.找出产品之间的相似度。3.可以...

    关注推荐系统有好一阵了,居然没有任何的产出,惭愧、惭愧。

    这几天学习了一下开源的java推荐系统Taste,有一些心得,慢慢的贴出来。

    如果产生Item-based推荐:

    假设有4个用户 u1、u2、u3、u4

    产品有n个 c1、c2、c3

    步骤:

    1.找出用户对产品的打分。

    2.找出产品之间的相似度。

    3.可以对特定用户给予推荐。

    其中需要人工做的就是对产品之间的相似度,给出评分,这个是个比较麻烦的事情,如果有n个产品,就需要N!个评分。

    如果用Taste实现,需要的代码如下:

    1。建立数据集,主要数据内容是用户对产品的打分:

    DataModel model = new FileDataModel(new File("data.txt"));

    2。建立item相似度,集合

    例如:先建物(这里有三个物品)

    final Item item1 = new GenericItem("0");

    final Item item2 = new GenericItem("1");

    final Item item3 = new GenericItem("2“);

    再记录item的相似度

    final Collection correlations =

    new ArrayList(2);

    correlations.add(new GenericItemCorrelation.ItemItemCorrelation(item1, item2, 1.0));

    correlations.add(new GenericItemCorrelation.ItemItemCorrelation(item1, item3, 0.5));

    3.生成推荐

    final ItemCorrelation correlation = new GenericItemCorrelation(correlations);

    final Recommender recommender = GenericItemBasedRecommender(dataModel, correlation);

    4.最终生成推荐

    final List recommended = recommender.recommend("test1", 1);

    final RecommendedItem firstRecommended = recommended.get(0);

    展开全文
  • Java 实现推荐系统 两个字符串 余弦相似度 算法。
  • 推荐系统的圈子里,大家最常用的库应该就是LibRec了,它是一个基于Java的开源项目。这两天摸索了一下,为避免以后忘记,还是记录一下:我是在Intelli J中导入了LibRec:Step 1: 下载LibRec从官网下载zip文件并解压...

    做推荐系统的圈子里,大家最常用的库应该就是LibRec了,它是一个基于Java的开源项目。这两天摸索了一下,为避免以后忘记,还是记录一下:

    我是在Intelli J中导入了LibRec:

    Step 1: 下载LibRec

    从官网下载zip文件并解压,目前是2.0版本:https://www.librec.net/download.html

    Step 2: 导入到Intelli J

    选择Import Project

    8f85b30277fa

    从解压好的librec-librec-src-v2.0中选择并导入pom.xml

    8f85b30277fa

    之后就是一系列无脑确定,导入成功之后大概长这个样子

    8f85b30277fa

    Step 3: 测试

    比如我选择ItemKnn这个recommender进行测试,按照图中的目录,找到ItemKNNTestCase.java并运行,运行结果如图

    8f85b30277fa

    可以到../result目录下去看推荐的结果。

    使用方法

    LibRec的参数设置在"core/src/main/resources/"中,其中“librec-default.properties”是对一些默认参数如所使用的数据集的位置等的设置,对不同recommender的参数设置则在“core/src/main/resources/rec”中。修改recommender对应的“.conf”中的参数,重新运行test文件即可。

    如果需要在自己的项目中使用LibRec,示例代码如下

    8f85b30277fa

    更复杂的使用或者是注意事项会在以后继续更新,欢迎做推荐的朋友们一起讨论!

    展开全文
  • 基于Spark的电影推荐系统(推荐系统~7)22/100发布文章liuge36第四部分-推荐系统-实时推荐本模块基于第4节得到的模型,开始为用户做实时推荐,推荐用户最有可能喜爱的5部电影。说明几点1.数据来源是 testData 测试集的...

    基于Spark的电影推荐系统(推荐系统~7)

    22/100

    发布文章

    liuge36

    第四部分-推荐系统-实时推荐

    本模块基于第4节得到的模型,开始为用户做实时推荐,推荐用户最有可能喜爱的5部电影。

    说明几点

    1.数据来源是 testData 测试集的数据。这里面的用户,可能存在于训练集中,也可能是新用户。因此,这里要做处理。

    2. SparkStreaming + kakfa

    57c87e075ae67161cdf3b09181ce21af.png

    开始Coding

    步骤一:在streaming 包下,新建PopularMovies2

    package com.csylh.recommend.streaming

    import com.csylh.recommend.config.AppConf

    import org.apache.spark.sql.SaveMode

    /**

    * Description: 个性化推荐

    *

    * @Author: 留歌36

    * @Date: 2019/10/18 17:42

    */

    object PopularMovies2 extends AppConf{

    def main(args: Array[String]): Unit = {

    val movieRatingCount = spark.sql("select count(*) c, movieid from trainingdata group by movieid order by c")

    // 前5部进行推荐

    val Top5Movies = movieRatingCount.limit(5)

    Top5Movies.registerTempTable("top5")

    val top5DF = spark.sql("select a.title from movies a join top5 b on a.movieid=b.movieid")

    // 把数据写入到HDFS上

    top5DF.write.mode(SaveMode.Overwrite).parquet("/tmp/top5DF")

    // 将数据从HDFS加载到Hive数据仓库中去

    spark.sql("drop table if exists top5DF")

    spark.sql("create table if not exists top5DF(title string) stored as parquet")

    spark.sql("load data inpath '/tmp/top5DF' overwrite into table top5DF")

    // 最终表里应该是5部推荐电影的名称

    }

    }

    步骤二:在streaming 包下,新建SparkDirectStreamApp

    package com.csylh.recommend.streaming

    import com.csylh.recommend.config.AppConf

    import kafka.serializer.StringDecoder

    import org.apache.spark.mllib.recommendation.MatrixFactorizationModel

    import org.apache.spark.streaming.kafka.KafkaUtils

    import org.apache.spark.streaming.{Seconds, StreamingContext}

    /**

    * Description:

    *

    * @Author: 留歌36

    * @Date: 2019/10/18 16:33

    */

    object SparkDirectStreamApp extends AppConf{

    def main(args:Array[String]): Unit ={

    val ssc = new StreamingContext(sc, Seconds(5))

    val topics = "movie_topic".split(",").toSet

    val kafkaParams = Map[String, String](

    "metadata.broker.list"->"hadoop001:9093,hadoop001:9094,hadoop001:9095",

    "auto.offset.reset" -> "largest" //smallest :从头开始 largest:最新

    )

    // Direct 模式:SparkStreaming 主动去Kafka中pull拉数据

    val modelPath = "/tmp/BestModel/0.8521581387523667"

    val stream = KafkaUtils.createDirectStream[String, String, StringDecoder, StringDecoder](ssc, kafkaParams, topics)

    def exist(u: Int): Boolean = {

    val trainingdataUserIdList = spark.sql("select distinct(userid) from trainingdata")

    .rdd

    .map(x => x.getInt(0))

    .collect() // RDD[row] ==> RDD[Int]

    trainingdataUserIdList.contains(u)

    }

    // 为没有登录的用户推荐电影的策略:

    // 1.推荐观看人数较多的电影,采用这种策略

    // 2.推荐最新的电影

    val defaultrecresult = spark.sql("select * from top5DF").rdd.toLocalIterator

    // 创建SparkStreaming接收kafka消息队列数据的2种方式

    // 一种是Direct approache,通过SparkStreaming自己主动去Kafka消息队

    // 列中查询还没有接收进来的数据,并把他们拉pull到sparkstreaming中。

    val model = MatrixFactorizationModel.load(ssc.sparkContext, modelPath)

    val messages = stream.foreachRDD(rdd=> {

    val userIdStreamRdd = rdd.map(_._2.split("|")).map(x=>x(1)).map(_.toInt)

    val validusers = userIdStreamRdd.filter(userId => exist(userId))

    val newusers = userIdStreamRdd.filter(userId => !exist(userId))

    // 采用迭代器的方式来避开对象不能序列化的问题。

    // 通过对RDD中的每个元素实时产生推荐结果,将结果写入到redis,或者其他高速缓存中,来达到一定的实时性。

    // 2个流的处理分成2个sparkstreaming的应用来处理。

    val validusersIter = validusers.toLocalIterator

    val newusersIter = newusers.toLocalIterator

    while (validusersIter.hasNext) {

    val u= validusersIter.next

    println("userId"+u)

    val recresult = model.recommendProducts(u, 5)

    val recmoviesid = recresult.map(_.product)

    println("我为用户" + u + "【实时】推荐了以下5部电影:")

    for (i

    val moviename = spark.sql(s"select title from movies where movieId=$i").first().getString(0)

    println(moviename)

    }

    }

    while (newusersIter.hasNext) {

    println("*新用户你好*以下电影为您推荐below movies are recommended for you :")

    for (i

    println(i.getString(0))

    }

    }

    })

    ssc.start()

    ssc.awaitTermination()

    }

    }

    步骤三:将创建的项目进行打包上传到服务器

    mvn clean package -Dmaven.test.skip=true

    步骤四:先编写个性化推荐代码 shell 执行脚本

    [root@hadoop001 ml]# vim PopularMovies2.sh

    export HADOOP_CONF_DIR=/root/app/hadoop-2.6.0-cdh5.7.0/etc/hadoop

    $SPARK_HOME/bin/spark-submit \

    --class com.csylh.recommend.streaming.PopularMovies2 \

    --master spark://hadoop001:7077 \

    --name PopularMovies2 \

    --driver-memory 10g \

    --executor-memory 5g \

    /root/data/ml/movie-recommend-1.0.jar

    步骤五:执行sh PopularMovies2.sh

    确保:

    [root@hadoop001 ml]# spark-sql

    19/10/20 22:59:28 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

    Spark master: local[*], Application Id: local-1571583574311

    spark-sql> show tables;

    defaultlinksfalse

    defaultmoviesfalse

    defaultratingsfalse

    defaulttagsfalse

    defaulttestdatafalse

    defaulttop5dffalse

    defaulttrainingdatafalse

    defaulttrainingdataascfalse

    defaulttrainingdatadescfalse

    Time taken: 2.232 seconds, Fetched 9 row(s)

    spark-sql> select * from top5df;

    Follow the Bitch (1996)

    Radio Inside (1994)

    Faces of Schlock (2005)

    Mág (1988)

    "Son of Monte Cristo

    Time taken: 1.8 seconds, Fetched 5 row(s)

    spark-sql>

    步骤六:再编写model实时推荐代码 shell 执行脚本

    export HADOOP_CONF_DIR=/root/app/hadoop-2.6.0-cdh5.7.0/etc/hadoop

    $SPARK_HOME/bin/spark-submit \

    --class com.csylh.recommend.streaming.SparkDirectStreamApp \

    --master spark://hadoop001:7077 \

    --name SparkDirectStreamApp \

    --driver-memory 10g \

    --executor-memory 5g \

    --total-executor-cores 10 \

    --jars /root/app/kafka_2.11-1.1.1/libs/kafka-clients-1.1.1.jar \

    --packages "mysql:mysql-connector-java:5.1.38,org.apache.spark:spark-streaming-kafka-0-8_2.11:2.4.2" \

    /root/data/ml/movie-recommend-1.0.jar

    步骤七:sh SparkDirectStreamApp.sh

    // TODO...

    第四部分-推荐系统-实时推荐

    本模块基于第4节得到的模型,开始为用户做实时推荐,推荐用户最有可能喜爱的5部电影。

    说明几点

    1.数据来源是 testData 测试集的数据。这里面的用户,可能存在于训练集中,也可能是新用户。因此,这里要做处理。

    2. SparkStreaming + kakfa

    在这里插入图片描述

    开始Coding

    步骤一:在streaming 包下,新建PopularMovies2

    package com.csylh.recommend.streaming

    import com.csylh.recommend.config.AppConf

    import org.apache.spark.sql.SaveMode

    /**

    Description: 个性化推荐

    @Author: 留歌36

    @Date: 2019/10/18 17:42

    /

    object PopularMovies2 extends AppConf{

    def main(args: Array[String]): Unit = {

    val movieRatingCount = spark.sql("select count() c, movieid from trainingdata group by movieid order by c")

    // 前5部进行推荐

    val Top5Movies = movieRatingCount.limit(5)

    Top5Movies.registerTempTable("top5")

    val top5DF = spark.sql("select a.title from movies a join top5 b on a.movieid=b.movieid")

    // 把数据写入到HDFS上

    top5DF.write.mode(SaveMode.Overwrite).parquet("/tmp/top5DF")

    // 将数据从HDFS加载到Hive数据仓库中去

    spark.sql("drop table if exists top5DF")

    spark.sql("create table if not exists top5DF(title string) stored as parquet")

    spark.sql("load data inpath '/tmp/top5DF' overwrite into table top5DF")

    // 最终表里应该是5部推荐电影的名称

    }

    }

    步骤二:在streaming 包下,新建SparkDirectStreamApp

    package com.csylh.recommend.streaming

    import com.csylh.recommend.config.AppConf

    import kafka.serializer.StringDecoder

    import org.apache.spark.mllib.recommendation.MatrixFactorizationModel

    import org.apache.spark.streaming.kafka.KafkaUtils

    import org.apache.spark.streaming.{Seconds, StreamingContext}

    /**

    Description:

    @Author: 留歌36

    @Date: 2019/10/18 16:33

    */

    object SparkDirectStreamApp extends AppConf{

    def main(args:Array[String]): Unit ={

    val ssc = new StreamingContext(sc, Seconds(5))

    val topics = "movie_topic".split(",").toSet

    val kafkaParams = Map[String, String](

    "metadata.broker.list"->"hadoop001:9093,hadoop001:9094,hadoop001:9095",

    "auto.offset.reset" -> "largest" //smallest :从头开始 largest:最新

    )

    // Direct 模式:SparkStreaming 主动去Kafka中pull拉数据

    val modelPath = "/tmp/BestModel/0.8521581387523667"

    val stream = KafkaUtils.createDirectStream[String, String, StringDecoder, StringDecoder](ssc, kafkaParams, topics)

    def exist(u: Int): Boolean = {

    val trainingdataUserIdList = spark.sql("select distinct(userid) from trainingdata")

    .rdd

    .map(x => x.getInt(0))

    .collect() // RDD[row] ==> RDD[Int]

    trainingdataUserIdList.contains(u)

    }

    // 为没有登录的用户推荐电影的策略:

    // 1.推荐观看人数较多的电影,采用这种策略

    // 2.推荐最新的电影

    val defaultrecresult = spark.sql("select * from top5DF").rdd.toLocalIterator

    // 创建SparkStreaming接收kafka消息队列数据的2种方式

    // 一种是Direct approache,通过SparkStreaming自己主动去Kafka消息队

    // 列中查询还没有接收进来的数据,并把他们拉pull到sparkstreaming中。

    val model = MatrixFactorizationModel.load(ssc.sparkContext, modelPath)

    val messages = stream.foreachRDD(rdd=> {

    val userIdStreamRdd = rdd.map(_._2.split("|")).map(x=>x(1)).map(_.toInt)

    val validusers = userIdStreamRdd.filter(userId => exist(userId))

    val newusers = userIdStreamRdd.filter(userId => !exist(userId))

    // 采用迭代器的方式来避开对象不能序列化的问题。

    // 通过对RDD中的每个元素实时产生推荐结果,将结果写入到redis,或者其他高速缓存中,来达到一定的实时性。

    // 2个流的处理分成2个sparkstreaming的应用来处理。

    val validusersIter = validusers.toLocalIterator

    val newusersIter = newusers.toLocalIterator

    while (validusersIter.hasNext) {

    val u= validusersIter.next

    println("userId"+u)

    val recresult = model.recommendProducts(u, 5)

    val recmoviesid = recresult.map(_.product)

    println("我为用户" + u + "【实时】推荐了以下5部电影:")

    for (i

    val moviename = spark.sql(s"select title from movies where movieId=$i").first().getString(0)

    println(moviename)

    }

    }

    while (newusersIter.hasNext) {

    println("*新用户你好*以下电影为您推荐below movies are recommended for you :")

    for (i

    println(i.getString(0))

    }

    }

    })

    ssc.start()

    ssc.awaitTermination()

    }

    }

    步骤三:将创建的项目进行打包上传到服务器

    mvn clean package -Dmaven.test.skip=true

    步骤四:先编写个性化推荐代码 shell 执行脚本

    [root@hadoop001 ml]# vim PopularMovies2.sh

    export HADOOP_CONF_DIR=/root/app/hadoop-2.6.0-cdh5.7.0/etc/hadoop

    $SPARK_HOME/bin/spark-submit

    --class com.csylh.recommend.streaming.PopularMovies2

    --master spark://hadoop001:7077

    --name PopularMovies2

    --driver-memory 10g

    --executor-memory 5g

    /root/data/ml/movie-recommend-1.0.jar

    步骤五:执行sh PopularMovies2.sh

    确保:

    [root@hadoop001 ml]# spark-sql

    19/10/20 22:59:28 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

    Spark master: local[*], Application Id: local-1571583574311

    spark-sql> show tables;

    defaultlinksfalse

    defaultmoviesfalse

    defaultratingsfalse

    defaulttagsfalse

    defaulttestdatafalse

    defaulttop5dffalse

    defaulttrainingdatafalse

    defaulttrainingdataascfalse

    defaulttrainingdatadescfalse

    Time taken: 2.232 seconds, Fetched 9 row(s)

    spark-sql> select * from top5df;

    Follow the Bitch (1996)

    Radio Inside (1994)

    Faces of Schlock (2005)

    Mág (1988)

    "Son of Monte Cristo

    Time taken: 1.8 seconds, Fetched 5 row(s)

    spark-sql>

    步骤六:再编写model实时推荐代码 shell 执行脚本

    export HADOOP_CONF_DIR=/root/app/hadoop-2.6.0-cdh5.7.0/etc/hadoop

    $SPARK_HOME/bin/spark-submit

    --class com.csylh.recommend.streaming.SparkDirectStreamApp

    --master spark://hadoop001:7077

    --name SparkDirectStreamApp

    --driver-memory 10g

    --executor-memory 5g

    --total-executor-cores 10

    --jars /root/app/kafka_2.11-1.1.1/libs/kafka-clients-1.1.1.jar

    --packages "mysql:mysql-connector-java:5.1.38,org.apache.spark:spark-streaming-kafka-0-8_2.11:2.4.2"

    /root/data/ml/movie-recommend-1.0.jar

    步骤七:sh SparkDirectStreamApp.sh

    // TODO…

    Markdown 5232 字数 214 行数 当前行 1, 当前列 0HTML 4908 字数 154 段落

    展开全文
  • 资料目录:目 录Recommender Systems Handbook,Second Edition出版者的话推荐序一推荐序二推荐序三译者序前言译者简介第1章 推荐系统:简介和挑战11.1 简介11.2 推荐系统的功能31.3 数据和知识来源51.4 推荐...

    资料目录:

    目 录

    Recommender Systems Handbook,Second Edition

    出版者的话

    推荐序一

    推荐序二

    推荐序三

    译者序

    前言

    译者简介

    第1章 推荐系统:简介和挑战1

    1.1 简介1

    1.2 推荐系统的功能3

    1.3 数据和知识来源5

    1.4 推荐技术7

    1.5 推荐系统评估10

    1.6 推荐系统应用11

    1.7 推荐系统与人机交互13

    1.8 高级话题14

    1.9 挑战16

    1.9.1 偏好获取与分析16

    1.9.2 交互17

    1.9.3 新的推荐任务18

    参考文献19

    第一部分 推荐系统技术

    第2章 基于邻域的推荐方法综述24

    2.1 简介24

    2.1.1 基于邻域方法的优势25

    2.1.2 目标和概要26

    2.2 问题定义和符号26

    2.3 基于邻域的推荐27

    2.3.1 基于用户的评分预测28

    2.3.2 基于用户的分类预测方法28

    2.3.3 回归与分类29

    2.3.4 基于物品的推荐29

    2.3.5 基于用户和基于物品的推荐方法的比较30

    2.4 基于邻域方法的要素31

    2.4.1 评分标准化31

    2.4.2 相似度权重的计算33

    2.4.3 邻域的选择37

    2.5 高级进阶技术37

    2.5.1 基于图的方法38

    2.5.2 基于学习的方法40

    2.6 总结44

    参考文献44

    第3章 协同过滤方法进阶48

    3.1 简介48

    3.2 预备知识49

    3.2.1 基准预测49

    3.2.2 Netflix数据50

    3.2.3 隐式反馈51

    3.3 矩阵分解模型51

    3.3.1 SVD52

    3.3.2 SVD++53

    3.3.3 时间敏感的因子模型54

    3.3.4 比较57

    3.3.5 小结58

    3.4 基于邻域的模型59

    3.4.1 相似度度量59

    3.4.2 基于相似度的插值60

    3.4.3 联合派生插值权重61

    3.4.4 小结63

    3.5 增强的基于邻域的模型63

    3.5.1 全局化的邻域模型64

    3.5.2 因式分解的邻域模型67

    3.5.3 基于邻域模型的动态时序71

    3.5.4 小结72

    3.6 基于邻域的模型和因子分解模型的比较73

    参考文献75

    第4章 基于内容的语义感知推荐系统77

    4.1 简介77

    4.2 基于内容的推荐系统概述77

    4.2.1 基于关键词的向量空间模型79

    4.2.2 用户特征学习的方法80

    4.2.3 基于内容过滤的优缺点81

    4.3 自上而下的语义方法82

    4.3.1 基于本体资源的方法83

    4.3.2 基于非结构化或半结构化百科知识的方法84

    4.3.3 基于关联开放数据的方法86

    4.4 自下而上的语义方法90

    4.4.1 基于判别式模型的方法90

    4.5 方法比较与小结94

    4.6 总结与未来挑战95

    致谢96

    参考文献96

    第5章 基于约束的推荐系统103

    5.1 简介103

    5.2 推荐知识库的开发105

    5.3 推荐过程中的用户导向作用108

    5.4 计算推荐结果113

    5.5 实际应用的经验114

    5.6 未来的研究方法116

    5.7 总结118

    参考文献118

    第6章 情境感知推荐系统123

    6.1 简介和动机123

    6.2 推荐系统中的情境124

    6.2.1 什么是情境124

    6.2.2 推荐系统中模型化情境信息的表征性方法125

    6.2.3 推荐系统中主要的情境信息建模方法127

    6.2.4 获取情境信息130

    6.3 结合具有代表性情境的推荐系统范式131

    6.3.1 情境预过滤133

    6.3.2 情境后过滤136

    6.3.3 情境建模137

    6.4 讨论和总结138

    致谢140

    参考文献140

    第7章 推荐系统中的数据挖掘方法145

    7.1 简介145

    7.2 数据预处理146

    7.2.1 相似度度量方法146

    7.2.2 抽样147

    7.2.3 降维148

    7.2.4 去噪150

    7.3 监督学习150

    7.3.1 分类150

    7.3.2 分类器的集成157

    7.3.3 评估分类器157

    7.4 无监督学习159

    7.4.1 聚类分析159

    7.4.2 关联规则挖掘161

    7.5 总结162

    参考文献163

    第二部分 推荐系统评估

    第8章 推荐系统的评估170

    8.1 简介170

    8.2 实验设置171

    8.2.1 离线实验172

    8.2.2 用户调查173

    8.2.3 在线评估175

    8.2.4 得出可靠结论176

    8.3 推荐系统属性178

    8.3.1 用户偏好179

    8.3.2 预测精度179

    8.3.3 覆盖率186

    8.3.4 置信度187

    8.3.5 信任度188

    8.3.6 新颖性188

    8.3.7 惊喜度189

    8.3.8 多样性190

    8.3.9 效用191

    8.3.10 风险191

    8.3.11 健壮性192

    8.3.12 隐私192

    8.3.13 适应性193

    8.3.14 可扩展性193

    8.4 结论193

    参考文献194

    第9章 使用用户实验评估推荐系统198

    9.1 简介198

    9.2 理论基础与现有工作199

    9.2.1 理论基础:Knijnenburg等人提出的评估框架199

    9.2.2 现有以用户为中心的研究概览以及有前景的方向201

    9.3 实践指南203

    9.3.1 研究模型203

    9.3.2 参与者206

    9.3.3 实验操控207

    9.3.4 测量209

    9.3.5 统计评估214

    9.4 结论219

    参考文献221

    第10章 对推荐结果的解释:设计和评估228

    10.1 简介228

    10.2 推荐设计的呈现和交互229

    10.2.1 推荐呈现229

    展开全文
  • Java推荐系统-基于用户的最近邻协同过滤算法

    万次阅读 多人点赞 2018-12-14 13:22:01
    基于用户的最近邻算法(User-Based Neighbor Algorithms),是一种非概率性的协同过滤算法,也是推荐系统中最最古老,最著名的算法,我们称那些兴趣相似的用户为邻居,如果用户n相似于用户u,我们就说n是u的一个邻居...
  • 算法简介在网络资讯和电子商务信息爆炸式的增长,繁杂的信息中容易造成流失,再次背景下用户的个性化推荐系统显得尤为重要,对电子商务平台和社交信息平台产生了质的影响。协同过滤推荐算法是诞生最早,并且较为著名...
  • 这几天学习了一下开源的java推荐系统Taste,有一些心得,慢慢的贴出来。 如果产生Item-based推荐: 假设有4个用户 u1、u2、u3、u4  产品有n个 c1、c2、c3 步骤: 1.找出用户对产品的打分。 2.找
  • 最近想倒腾一下博客,看了很多现成的比较成熟的开源博客系统,自己也简单从下面几个维度总结对比了一下:star数量技术选型社区生态当然啦!好东西不能独享。下面简单分享一下我所做的笔记。欢迎小伙伴们评论区补充...
  • java实现推荐系统

    2018-03-06 10:23:38
    java实现推荐系统,基于用户的推荐系统,有实验结果。可以根据此进行推荐系统的实现。
  • java实现推荐系统源码

    2019-05-15 15:20:43
    java实现推荐系统,基于用户的推荐系统,有实验结果。可以根据此进行推荐系统的实现。
  • 基于用户的协同过滤算法JAVA实现的推荐系统

    千次阅读 多人点赞 2020-07-31 20:12:35
    JAVA推荐系统 源码地址:https://gitee.com/taisan/recommend_system 系统原理 该系统使用java编写的基于用户的协同过滤算法(UserCF) 利用统计学的相关系数经常皮尔森(pearson)相关系数计算相关系数来实现千...
  • 口红推荐系统设计总体设计1.模块说明表2.1 注册账号说明模块名称:注册账号编号:0021主要功能:注册新账号上级调用模块:无下级调用模块:无局部数据结构:账号约束:所注册账号必须是6位数字,不能是其他字符,不...
  • 推荐系统的圈子里,大家最常用的库应该就是LibRec了,它是一个基于Java的开源项目。这两天摸索了一下,为避免以后忘记,还是记录一下:我是在Intelli J中导入了LibRec:Step 1: 下载LibRec从官网下载zip文件并解压...
  • 【实例简介】电影推荐,java写的,包含源代码与测试数据【实例截图】【核心代码】电影推荐系统└── final├── 1(cluster).txt├── bin│ └── Rsme│ ├── calculate│ │ ├── Cluster.class│ │ ├─...
  • java电影推荐系统.zip

    2021-03-22 13:49:20
    基于Spark的电影推荐系统,包含爬虫项目、web网站、后台管理系统以及spark推荐系统 开发环境: pycharm + python3.6 软件架构: mysql + scrapy 运行环境: 本次爬取的内容在外网,所以需先翻墙后才能成功运行。...
  • 项目说明电影智能推荐系统采用典型的MVC架构。项目使用Java 语言作为后端编程语言,使用MYSQL作为数据库;智能推荐算法采用协同过滤算法,提供的推荐功能包括:视频推荐、好友推荐、圈子推荐等。此项目践行了前后端...
  • 1,商城:是单商家,多买家的商城系统。数据库是mysql,语言java。...步骤:1,通过sqoop从mysql中将 “用户收藏商品” (这里用的是用户收藏商品信息表作为推荐系统业务上的根据,业务根据能够非常复杂。这里主要...
  • 推荐系统java源码

    热门讨论 2009-09-02 08:35:06
    这是推荐系统的源码,感兴趣的可以研究一下。
  • 【实例简介】常用推荐算法java实现~涉及多种相似度计算,比如cosine相似度,欧氏距离等~(recommand algirithm )【实例截图】【核心代码】RecommendSystemJavaCode└── Recommend└── src├── collaborative│ ...
  • 视频推荐系统是利用Java完成的代码,代码完成的,只需要修改文件路径。
  • 项目说明电影智能推荐系统采用典型的MVC架构。项目使用Java 语言作为后端编程语言,使用MYSQL作为数据库;智能推荐算法采用协同过滤算法,提供的推荐功能包括:视频推荐、好友推荐、圈子推荐等。此项目践行了前后端...
  • 项目说明电影智能推荐系统采用典型的MVC架构。项目使用Java 语言作为后端编程语言,使用MYSQL作为数据库;智能推荐算法采用协同过滤算法,提供的推荐功能包括:视频推荐、好友推荐、圈子推荐等。此项目践行了前后端...
  • 一、介绍商品推荐是针对用户面对海量的商品信息而不知从何下手的一种解决方案,它可以根据用户的喜好,年龄,点击量,购买量以及各种购买行为来为用户推荐合适的商品。在本项目中采用的是基于用户的协同过滤的推荐...
  • redis、java 购物车,推荐系统,有相关jar,有利于初学者学习
  • 下面是一个基本的JVAVA程序, RecommenderIntro.javapackage xyz.pl8.recommenderintro;import org.apache.mahout.cf.taste.impl.model.file.FileDataModel;import org.apache.mahout.cf.taste.impl.neighborhood....
  • 常用推荐算法java实现~涉及多种相似度计算,比如cosine相似度,欧氏距离等~ (recommand algirithm )
  • 2.Taste简介 Taste 是 Apache Mahout 提供的一个协同过滤算法的高效实现,它是一个基于 Java 实现的可扩展的,高效的推荐引擎。Taste 既实现了最基本的基于用户的和基于内容的推荐算法,同时也提供了扩展接口,使...
  • 【实例简介】基于WEB的图书推荐系统,主要是设计思路,不含具体实现的源码,仅供参考20111Jan, 20112011122Sh anxi library JoumalNo 1, 2011( Issue Na 122)/driver-properties>property name=" proxool xn P> ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,159
精华内容 2,863
关键字:

java推荐系统

java 订阅