# NewsRecommendSystem **Repository Path**: jinzhongguo/NewsRecommendSystem ## Basic Information - **Project Name**: NewsRecommendSystem - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-03-22 - **Last Updated**: 2024-03-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # NewsRecommendSystem ![image](https://user-images.githubusercontent.com/65523997/230300643-b837e9b9-5562-425b-8d60-ad21cb05a573.png) ![image](https://user-images.githubusercontent.com/65523997/230300367-6d22f08e-f2e7-40a7-8a6e-e5da667e51d6.png) ![image](https://user-images.githubusercontent.com/65523997/230298837-d8b0d82f-85d5-48b5-acf3-2d6d9f9e8c8a.png) ![image](https://user-images.githubusercontent.com/65523997/230299202-ee9d70b8-ee9d-4014-bc13-ed99f9166ca4.png) ![image](https://user-images.githubusercontent.com/65523997/230299658-cfa8cc18-30c7-426b-8abf-25fe030c8ac2.png) - 推荐系统学习笔记 - 推荐系统的目的 - 更精准的进行推荐 - 推荐系统的应用 - 淘宝商品,广告推荐,信息流推荐,抖音推荐,电影推荐 - 推荐系统的基本思想 - 建立在海量数据挖掘的基础上的一种高级商务智能平台,以及帮助电子商务网站为其顾客提供个性化推荐的决策支持和信息服务 - 推荐系统的分类 - 离线训练 - 最常见的推荐系统架构,这里的离线训练指的是使用历史一段时间的数据进行训练,模型迭代周期较长(一般一小时为单位)模型拟合的是用户的中长期兴趣 - 在线训练 - 对于业务来说,我们希望用户对于上个广告的反馈,很快的用于下一次推荐行为中.这就要求我们用另外一种方法解决问题,那就是在线训练 - 基于在在线训练的推荐系统架构适合于广告和电商等高纬度大数据量且对实时性要求很高的场景,相比较基于离线的推荐系统,基于在线训练的推荐系统不区分训练和测试阶段,每个回合都在学习,通过实时的反馈来调整策略. - 所有训练数据不需要存储,所以不需要巨大的离线存储开销,使得系统具有更高的伸缩性,可以支持超大的数据量和模型 - 推荐算法 - 基于人口统计学的推荐(基于相似度) - 根据人口方面的大数据,分析某一类特征的人具有何规律 - 基于内容的推荐(基于知识) - 根据内容覆盖的用户维度进行推荐 - 基于协同过滤的推荐-Collaborative Fitering - 基于近邻的协同过滤 - 基于用户 User-CF - 基于物品 Item-CF - 基于模型的协同过滤 - 奇异值分解SVD - 潜在语义分析LSA - 支撑向量机SVM - 混合推荐 - 根据以上各种不同机制混合,串并联进行推荐 - 推荐系统试验方法 - 在线试验 - AB测试 - 也就是大数据实践中的随机试验,AB卷随机给不同用户不同的算法(方法),通过避免作弊(减少样本误差)的方式验证方法优劣 - 离线试验 - 通过事实数据结构化,生成标准数据集 - 将数据集按照一定规则分为训练集和测试集 - 在训练集上训练用户兴趣模型,在测试集上进行预测 - 通过事先定义好的离线指标评测算法在测试集上预测结果 - 用户调查 - 通过调查真是用户,让他们在推荐系统上完成一些任务,记录他们的行为,让他们回答一些问题,最后分析 - 只有小比例的用户才可能参与,例如调查问卷,那么误差可能很大 - 推荐系统评测指标 - 主要维度 - 预测准确率 - 均方根误差RMSE - Root Mean Square Error - 预测值与真实值偏差的平方和与观测次数比值的平方根 - 用来衡量预测值与真值之间的偏差,偏差越小说明预测越准 - 平均绝对误差MAE - Mean Absolute Error - 是绝对误差的平均值 - 更好的反应预测值误差的实际情况 - 标准差SD - Standard Deviation - 是方差的算数平方根,每个数对平均数的平均值开根 - 用来衡量数据自身的离散程度 - RMSE和MAE的差异 - 两个公式如果比喻成一副眼镜,那么当你戴上RMSE审视一个人的缺点的时候,会拥有更主观的判断,可能因为某一件小事就添油加醋的审视.而MAE则是一副客观的眼镜,戴上它你就是没有感情的机器,实事求是不带感情的审视这个人的缺点 - 存在差异的原因是因为RMSE存在平方,任何一个小的误差都会被放大 - 那么什么时候使用,当你对误差容忍度很高时,MAE,当你乔布斯附体时,追求极致的完美,任何一点错误的出现都绝不妥协姑息就用RMSE - TOP-N推荐 - 当网站提供推荐服务的时候,一般是给一个个性化推荐列表,这就是TOP-N推荐 - 推荐的预测准确率一般用精确率和召回率来度量 - 关键指标概念 - 通过矩阵划分数据标签 - 相关性 - 推荐的数据中正确的数据叫做正相关 - 推荐数据中与所需没关系,错误的叫做负相关 - 检索性 - 被推荐的 - 没有被推荐的 - 精确率 - 在被检测到的数据维度中,所有被正相关推荐的数据/所有被检测到的数据 - 准确率 - 所有正相关的数据和/总数 - 召回率 - 所有检测到正相关的数据/所有应该被检测到的正相关数据 - 其他维度 - 用户满意度 - 覆盖率 - 多样性 - 惊喜度 - 信任度 - 实时性 - 健壮性 - 商业目标 - 本系统架构为springboot+mysql+webmagic+selenium+redis+部署spark环境的linux(推荐centos系统)的服务器 - 主要分为两部分 - 第一部分:scala部分用于模型训练以及数据预处理,包依赖管理使用sbt,冲突管理代码全部在内 - 第二部分:springboot使用maven包依赖管理,需要自己配置端口,数据库redis和邮箱验证秘钥等 - 对于非关系型数据没有使用mongdb直接使用字符串拼接存储在mysql中,本项目并未使用sparkstreaming,kafuka,hbase,flink等技术,毕竟需要分布式环境和hadoop基础才能运行,对大部分人并不合适 - 训练集部分使用的是movie-100数据,如果需要训练集可以评论,gitlib限制项目不能超过100m,传不上去 scala部分已经上传训练好的model,需要可以直接部署,但是相似度矩阵计算用i7-97000尝试了三天,一天12个小时,每次都遇到各种各样的问题,最后遇到gc丢失最先gdbc对象,就不想再等了,毕竟spark为集群准备的, 单机性能再高也无济于事 视频教程在b站: https://www.bilibili.com/video/BV1eq4y1776f?from=search&seid=13616556324097728779 文字资料在csdn:https://blog.csdn.net/weixin_49139876/article/details/116724661 数据库:mysql 链接:https://pan.baidu.com/s/1jLzfYbpsfHEjS4S17IyQnQ 提取码:1234 原创不易,一键三联哦