推荐系统常用术语 [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

相关文章

Spring Boot中WebSocket常用使用方法详解

《SpringBoot中WebSocket常用使用方法详解》本文从WebSocket的基础概念出发,详细介绍了SpringBoot集成WebSocket的步骤,并重点讲解了常用的使用方法,包括简单消... 目录一、WebSocket基础概念1.1 什么是WebSocket1.2 WebSocket与HTTP

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

golang中reflect包的常用方法

《golang中reflect包的常用方法》Go反射reflect包提供类型和值方法,用于获取类型信息、访问字段、调用方法等,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值... 目录reflect包方法总结类型 (Type) 方法值 (Value) 方法reflect包方法总结

C# 比较两个list 之间元素差异的常用方法

《C#比较两个list之间元素差异的常用方法》:本文主要介绍C#比较两个list之间元素差异,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 使用Except方法2. 使用Except的逆操作3. 使用LINQ的Join,GroupJoin

Qt QCustomPlot库简介(最新推荐)

《QtQCustomPlot库简介(最新推荐)》QCustomPlot是一款基于Qt的高性能C++绘图库,专为二维数据可视化设计,它具有轻量级、实时处理百万级数据和多图层支持等特点,适用于科学计算、... 目录核心特性概览核心组件解析1.绘图核心 (QCustomPlot类)2.数据容器 (QCPDataC

Java内存分配与JVM参数详解(推荐)

《Java内存分配与JVM参数详解(推荐)》本文详解JVM内存结构与参数调整,涵盖堆分代、元空间、GC选择及优化策略,帮助开发者提升性能、避免内存泄漏,本文给大家介绍Java内存分配与JVM参数详解,... 目录引言JVM内存结构JVM参数概述堆内存分配年轻代与老年代调整堆内存大小调整年轻代与老年代比例元空

深度解析Java DTO(最新推荐)

《深度解析JavaDTO(最新推荐)》DTO(DataTransferObject)是一种用于在不同层(如Controller层、Service层)之间传输数据的对象设计模式,其核心目的是封装数据,... 目录一、什么是DTO?DTO的核心特点:二、为什么需要DTO?(对比Entity)三、实际应用场景解析

Go语言中nil判断的注意事项(最新推荐)

《Go语言中nil判断的注意事项(最新推荐)》本文给大家介绍Go语言中nil判断的注意事项,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.接口变量的特殊行为2.nil的合法类型3.nil值的实用行为4.自定义类型与nil5.反射判断nil6.函数返回的

python常用的正则表达式及作用

《python常用的正则表达式及作用》正则表达式是处理字符串的强大工具,Python通过re模块提供正则表达式支持,本文给大家介绍python常用的正则表达式及作用详解,感兴趣的朋友跟随小编一起看看吧... 目录python常用正则表达式及作用基本匹配模式常用正则表达式示例常用量词边界匹配分组和捕获常用re

python 常见数学公式函数使用详解(最新推荐)

《python常见数学公式函数使用详解(最新推荐)》文章介绍了Python的数学计算工具,涵盖内置函数、math/cmath标准库及numpy/scipy/sympy第三方库,支持从基础算术到复杂数... 目录python 数学公式与函数大全1. 基本数学运算1.1 算术运算1.2 分数与小数2. 数学函数