[推荐系统00]概览

简书不支持目录。。。将就一下

简书不支持目录。。。

推荐系统概览

推荐系统三个基本对象

推荐系统需要的三类数据源:物品,用户,事务

物品:关注物品集的属性和特征
用户:关注用户基本属性,年龄,性别等
事务:用户的行为记录,分为显示行为和隐式行为


推荐系统的分类

  • 基于内容 (content-based)
    • 为用户推荐与过去兴趣相似的物品,物品的相似性是基于被比较物品的特征来计算的
  • 协同过滤(CF:collaborative filtering)
    • 找到与用户相似的品味的用户,将相似用户过去喜欢的物品推荐给用户
  • 基于人口统计(demographic)
    • 基于人口统计信息,不同的人群对用不同的推荐
  • 基于知识(knowledge-based)
    • 根据特定领域的知识进行推荐,所谓知识就是关于确定物品哪些特征能满足用户需要和偏好
  • 基于社区
    • 根据用户“近邻”的偏好进行推荐,也叫社会化推荐系统,利用用户社会关系和“近邻”的偏好推荐,结果基于用户“近邻”的评分等
  • 混合推荐系统
    • 不同推荐方法组合,例如协同过滤的冷启动问题可以用基于内容的推荐弥补

推荐系统的评价标准

  • 覆盖率
  • 冷启动
  • 信心度
  • 可信度
  • 新颖度
  • 风险度
  • 惊喜度

推荐解释

如何让推荐系统可信任,可解释,有说服力

  1. 透明度:说明系统如何工作
  2. 可反馈性:允许用户报错
  3. 信任:增加用户对系统信心
  4. 有效性:帮助用户做好的决定
  5. 说服力:说服用户购买或尝试
  6. 高效性:帮用户快速抉择
  7. 满意度:增加用户体验舒适性和趣味

推荐系统与数据挖掘


涉及数据挖掘内容概览

数据挖掘大致分3个步骤:数据预处理数据分析结果解释

数据预处理

数据就是一组对象以及对应属性的集合
对象等同于:记录,物品,得分,样本,观测值,实例
属性等同于:变量,字段,特征,特性

1.相似度度量

1.1 欧几里得距离

Paste_Image.png

n是维度,Xk和Yk是第k和特征值

1.2 闵可夫斯基距离

Paste_Image.png

是欧氏距离的推广
r=1:曼哈顿距离,L1范数
r=2:欧几里得距离,L2范数
r=∞:上确界,任意维度对象属性间的最大距离

1.3. 马氏距离

Paste_Image.png

δ是协方差矩阵

1.4. 夹角余弦值

Paste_Image.png

⋅代表点积,∥x∥是向量x的长度
也叫余弦相似度,L2范数

1.5. 皮尔逊相关度

Paste_Image.png

利用x,y的协方差和标准差$\delta$ 进行计算

1.6. 简单匹配系数

Paste_Image.png

只对应二进制属性

1.7. Jaccard系数

Paste_Image.png

一般情况,推荐系统预测精确度不太受相似度度量方法的影响(ACM论文的实验)

2.抽样

  • 从大数据集中选取子集的技术,因为处理全部数据开销太大
  • 也用于创建训练数据和测试数据时候使用
  • 最简单情况使用随机抽样
  • 常用抽样方法是无取代抽样,就是不放回的拿
  • 分离训练集测试集一般8:2

交叉验证

交叉验证(Cross-validation),执行多次测试集训练集分离,训练模型评价模型,求评价精度
10折交叉验证(10-fold cross validation),将数据集分成十份,轮流将其中9份做训练1份做验证,10次的结果的均值作为对算法精度的估计,一般还需要进行多次10折交叉验证求均值


有事抽样基于最近时间,或者按照评分比例抽样,根据具体情况进行一些控制

3.降维

推荐系统的2个大问题:稀疏和维度灾难,解决方法:降维

3.1 主成分分析(PCA)

能根据最小平方误差计算出变化最大的值,得到一组有序的成分列表。第一个成分的变化量比第二个成分的大,最后可以根据忽略对变化贡献小的成分来降低维度

PCA的限制

  • 假设数据集是已线性合并为基础的数据集(有对应非线性的PCA变种算法)
  • 原始数据符合高斯分布

3.2 奇异值分解

目标是发现低维特征空间,这个空间中每个成分都是可以计算的

  • $\lambda$是对角矩阵,元素是奇异值,正定,按照降序排列
  • 可以通过控制$\lambda$矩阵的秩来决定降维的力度

SVD可以发现用户和产品的潜在关系。方法是利用平均分填充用户-物品矩阵,然后进行SVD分解,然后直接计算预测值,根据预测结果来丰富kNN等方法的邻居信息

矩阵分解的方法还有MF,NNMF等,其基本思想都是把评分矩阵分解为2个部分,一部分包含描述用户的特征,另一部分包含描述物品的特征

后面再介绍基于SVD的增量学习等技术

3.3 去噪

噪音数据有缺失数据,异常数据等形式
去噪目的是在最大化信息量的同时去掉不必要的影响

数据分析

1.分类

这里列举一下推荐系统常见的分类算法,不细致讨论算法细节

1.1 最近邻

原理:根据最近的K个点的标签来决定数据的标签
优点是KNN的概念和CF的邻居很相关,而且不需要训练而合维护一个模型,能适应评分矩阵的剧烈变化
缺点显而易见,每次预测都需要计算每个点的距离

1.2 决策树

常见数的树算法:CART,ID3,C4.5,SLIQ,SPRINT
决策树的重点在于决策节点的划分,找到不纯度减少最多的点,衡量不纯度的方法:信息增益,基尼指数,熵,误分类误差等
优点是结果好解释,构建树代价小

1.3 基于规则分类

可以从树模型里面提取规则,再根据规则进行分类

1.4 贝叶斯

利用概率来代表从数据中学习到的关系的不确定性
模型得到的概率是先验概率和似然值的乘积,先验代表了观测数据之前的经验,期望,似然值部分代表了数据的影响
朴素贝叶斯假设特征间概率独立,好处是受孤立噪音点,和不相关特征的影响小,缺点是独立的假设对于相关属性不成立
解决特征依赖的方法是贝叶斯信念网BBN,利用非循环图表达属性的依赖关系

1.5 人工神经网络

神经网络做分类,可以做非线性分类任务

1.6 支持向量机

找到分类平面,这个平面使间隔最大化,结构风险最小化

1.7 分类器集成

Bagging,Boosting

1.8 评估分类器

有量化评分的结果,均方误差MAE,均方根误差RMSE
把推荐看做分类的情况,准确率,召回率,F值,ROC,AUC

2.聚类

聚类可以在计算近邻之前先把类似的划分到一起,从而提高效率,但是提高效率和降低精度要衡量

聚类主要分为2个类别,分层和划分
划分:把数据划分成非重合的聚类,每个数据都确定的属于一个类别
分层:在已知聚类上继续聚合物品,嵌套的层级树

2.1 k-means

缺陷:选k值需要先验知识;聚类对初始点敏感;异常值敏感;会产生空聚类
可以利用k-means作为预处理构造邻居

2.2 DBSCAN

基于密度进行聚类。核心点:给定距离内有一定数量邻居的点;边界点:没有超过一定数量邻居,但是属于核心点邻居的点;噪声点:核心点边界点以外的点
利用消息传递算法,是基于图聚类的方法

3.关联规则挖掘

  • 关联规则发现的规则只意味着共同出现,并没有因果关系
  • 利用支持度和置信度对规则进行筛选
  • 先根据支持度生成物品集(频繁项集生成),再从频繁项集里面产生高置信度规则

推荐阅读更多精彩内容