推荐系统常用术语 [ACM暑校]

2023-12-02 11:18

本文主要是介绍推荐系统常用术语 [ACM暑校],希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 推荐系统

推荐系统相当于信息的“过滤器”,它旨在解决信息过载的问题,帮助人们更好地作出决策。它的主要原理是根据用户过去的行为(比如购买、评分、点击等)来建立用户兴趣模型,之后利用一定的推荐算法,把用户最可能感兴趣的内容推荐给用户,如下图:

  • 召回(recall)

从海量(数千万)item中粗选出几百或者上千的候选集的过程,可以理解为向用户粗选一批待推荐的商品。

  • 排序(sort)

从召回的上千候选集中,预测出用户的点击概率,以此排序,给出最终向用户推荐的结果集。

2. 数据基础

  • 用户数据(user)

用来建立用户模型的数据,因不同推荐算法而不同,典型的数据包括用户兴趣点、用户profile、用户的社交好友关系等。

  • 内容数据(item)

  用来描述被推荐内容主要属性的数据,这些属性都是跟具体的内容相关的,如一部电影的导演、演员、类型和风格等。

  • 用户-内容数据(user-item)

 用户-内容交互是指反映用户与内容内在联系的数据,分为隐式和显式两种;显式主要是指评价、打分、购买等能明显反映用户对内容兴趣的交互数据,隐式指的是用户的点击、搜索记录等间接反映用户对内容兴趣的交互数据

3. 相关算法

  • 基于内容的推荐(Content-based)

根据用户过去喜欢的内容而推荐相似的内容。

  • 基于协同过滤的推荐(Collaborative Filtering,CF)

根据与当前用户相似的用户的兴趣点,给当前用户推荐相似的内容。

  • 基于人口统计学的推荐(Demographic-based)

 根据用户共同的年龄、地域等人口统计学信息进行共同的推荐。

  • 基于知识的推荐(Knowledge-based)

 根据对用户和内容的特定领域知识,给特定的用户推荐特定的内容。

  • 基于团体的推荐(Community-based)

 根据用户的社交好友关系,给用户推荐其好友感兴趣的内容。

  • 混合推荐(Hybrid Recommender System)

4. 数据预处理相关

推荐系统相关的数据预处理技术除了通常的归一化、变量替换等以外,最主要的是相似度计算、抽样和维度约减。

4.1 相似度计算

相似度通常有两种衡量方式,一是直接计算相似度,二是计算距离,距离是本质上是相异程度的度量,距离越小,相似度越高。

  • 相似度计算

余弦相似度(其几何意义就是两个向量的空间夹角的余弦值,取值范围在-1到1之间。取值为-1表示完全相反,取值为1表示完全相同,其余值表示介于二者之间)、皮尔逊相关系数(意义是两个随机变量x和y之间的线性相关性,取值范围在-1和1之间。-1表示负线性相关,1表示正线性相关,其余值表示介于二者之间)、Jaccard相关系数(用于集合相似度的一种方式)。

  • 距离度量

欧几里得距离(Euclidean Distance)、曼哈顿距离(Manhattan Distance)、切比雪夫距离(Chebyshev Distance)、闵可夫斯基距离(Minkowski Distance)、标准化欧氏距离(Standardized Euclidean Distance)、马哈拉诺比斯距离(Mahalanobis Distance)

4.2 抽样

 抽样技术在数据挖掘中主要用在两个地方:一是在数据预处理和后处理阶段,为了避免计算规模过大,进行抽样计算;二是在数据挖掘阶段,通常会对训练出来的模型进行交叉验证,需要抽样将所有样本划分为训练集和测试集

通常所说的抽样都是随机抽样(random sampling),主要用于所有样本点都可以认为没有区分时适用。还有一种分层抽样(striated sampling),在样本需要显著的分为不同的子集时,针对每个子集分别进行抽样。

4.3 降维(Dimensionality Reduction)

 在统计学习理论中,当样本的维度增加的时候,待学习的模型的复杂性是随着维度呈指数增长的,这种现象通常称为“维数灾难(curse of dimensionality)”。这也就意味着,如果我们想在高维空间中学到和在低维空间中精度一样高的模型,所需要的样本数是呈指数增长的

  降维通常是用来处理维灾难问题的。通常降维有两种思路,一是从高维数据中选出最能表达数据的一些维度,并用这些维度来代表数据,称为特征选择(feature selection);另一种是将高维数据通过某种trick变换映射到低维空间,称为特征构造(feature extraction)。

主成分分析(Principal Component Analysis, PCA)是最主要的一种特征选择方式。它通过特征分解能够得到每一个维度对于整个数据的最小均方差的贡献程度,从而定量判断每一维对于数据所包含信息的贡献度。然后保留最主要的一些维度,抛弃一些不显著的维度,对数据进行降维。

异值分解(Singular Value Decomposition, SVD)是主要的特征构造方式。它通过矩阵分解的方式,将数据从高维空间映射到低维空间,对数据进行降维。

5. 数据挖掘-分类

 分类是数据挖掘的主要内容,方法众多,各自都有不同数据假设和理论支持。这里简单列举最有代表性的一些算法。

  • KNN(K-nearest Neighbor)

KNN是最容易理解的分类器,它不训练任何模型。当有一个未知样本需要预测时,它从已知样本中找到与这个未知样本距离最近的K个点,根据这K个点的类别来预测未知样本的类别。它最主要的不足在于它需要的样本量非常大,同时因为它没有任何训练的模型,每一次预测都要计算k次距离,计算量非常大

  • 决策树(Decision Tree)

决策树将分类过程抽象为一颗树,它通过最大化信息增益的方式对树的分支进行划分,最终通过设置不纯度的阈值来停止树的划分,形成最终的决策树。它的主要优点在于模型的训练和预测都非常快,不足在于模型的精度有时会低于其它分类器。不过,通过集群学习(ensemble learning)的方式能够极大的克服这一点,如采用bagging思想的random forest和采用boosting思想的GBDT,都是决策树的延伸,它们综合多棵决策树的分类结果来组合出更精确的分类器。

  • 基于规则的分类器(Rule-based Classifier)

 基于规则的分类器通常都是利用“如果…则…”一类的规则来进行分类。其适用性有限,且要获得靠谱的规则比较困难,一般用的较少。

  • 贝叶斯分类器(Bayes classifier)

  贝叶斯分类器其实是一类分类器,主要是利用贝叶斯公式,通过估计先验概率和似然概率,并利用一部分先验信息,来计算给定样本的各维度数据值的情况下,样本属于某个类别的概率。

  • 人工神经网络(Artificial Neural Network,ANN )

不必多言,当下最火效果最好的分类器。

  • 支持向量机(Support Vector Machine, SVM)

支持向量机是线性分类器的代表。与贝叶斯分类器先估计概率密度然后计算判别函数不同,线性分类器都是直接估计线性判别式,并最小化某个目标函数,利用某种凸优化方法求解得到最终的线性判别式。这是最流行的分类器之一,通常认为它训练、预测速度快,而且精度靠谱,所以在各种领域广泛使用。

  • 集成学习(Ensemble Learning)

集合若干个弱分类器来组合成一个强分类器,通常有bagging和boosting两种思路。

6. 分类器性能评估

  • Precision-recall:准确率-召回率,根据混淆矩阵计算
  • F1:结合准确率-召回率的一个综合指标
  • ROC:直观的曲线比较分类器性能
  • AUC:ROC的定量化表达
  • MAE:平均绝对误差
  • RMSE:平均根方误差

这篇关于推荐系统常用术语 [ACM暑校]的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/445130

相关文章

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

SpringBoot 获取请求参数的常用注解及用法

《SpringBoot获取请求参数的常用注解及用法》SpringBoot通过@RequestParam、@PathVariable等注解支持从HTTP请求中获取参数,涵盖查询、路径、请求体、头、C... 目录SpringBoot 提供了多种注解来方便地从 HTTP 请求中获取参数以下是主要的注解及其用法:1

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom

基于Python实现自动化邮件发送系统的完整指南

《基于Python实现自动化邮件发送系统的完整指南》在现代软件开发和自动化流程中,邮件通知是一个常见且实用的功能,无论是用于发送报告、告警信息还是用户提醒,通过Python实现自动化的邮件发送功能都能... 目录一、前言:二、项目概述三、配置文件 `.env` 解析四、代码结构解析1. 导入模块2. 加载环

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

Linux查询服务器系统版本号的多种方法

《Linux查询服务器系统版本号的多种方法》在Linux系统管理和维护工作中,了解当前操作系统的版本信息是最基础也是最重要的操作之一,系统版本不仅关系到软件兼容性、安全更新策略,还直接影响到故障排查和... 目录一、引言:系统版本查询的重要性二、基础命令解析:cat /etc/Centos-release详

Java Stream流以及常用方法操作实例

《JavaStream流以及常用方法操作实例》Stream是对Java中集合的一种增强方式,使用它可以将集合的处理过程变得更加简洁、高效和易读,:本文主要介绍JavaStream流以及常用方法... 目录一、Stream流是什么?二、stream的操作2.1、stream流创建2.2、stream的使用2.

更改linux系统的默认Python版本方式

《更改linux系统的默认Python版本方式》通过删除原Python软链接并创建指向python3.6的新链接,可切换系统默认Python版本,需注意版本冲突、环境混乱及维护问题,建议使用pyenv... 目录更改系统的默认python版本软链接软链接的特点创建软链接的命令使用场景注意事项总结更改系统的默

在Linux系统上连接GitHub的方法步骤(适用2025年)

《在Linux系统上连接GitHub的方法步骤(适用2025年)》在2025年,使用Linux系统连接GitHub的推荐方式是通过SSH(SecureShell)协议进行身份验证,这种方式不仅安全,还... 目录步骤一:检查并安装 Git步骤二:生成 SSH 密钥步骤三:将 SSH 公钥添加到 github

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1