简书不支持目录。。。将就一下
推荐系统概览
推荐系统三个基本对象
推荐系统需要的三类数据源:物品,用户,事务
物品:关注物品集的属性和特征
用户:关注用户基本属性,年龄,性别等
事务:用户的行为记录,分为显示行为和隐式行为
推荐系统的分类
- 基于内容 (content-based)
- 为用户推荐与过去兴趣相似的物品,物品的相似性是基于被比较物品的特征来计算的
- 协同过滤(CF:collaborative filtering)
- 找到与用户相似的品味的用户,将相似用户过去喜欢的物品推荐给用户
- 基于人口统计(demographic)
- 基于人口统计信息,不同的人群对用不同的推荐
- 基于知识(knowledge-based)
- 根据特定领域的知识进行推荐,所谓知识就是关于确定物品哪些特征能满足用户需要和偏好
- 基于社区
- 根据用户“近邻”的偏好进行推荐,也叫社会化推荐系统,利用用户社会关系和“近邻”的偏好推荐,结果基于用户“近邻”的评分等
- 混合推荐系统
- 不同推荐方法组合,例如协同过滤的冷启动问题可以用基于内容的推荐弥补
推荐系统的评价标准
- 覆盖率
- 冷启动
- 信心度
- 可信度
- 新颖度
- 风险度
- 惊喜度
推荐解释
如何让推荐系统可信任,可解释,有说服力
- 透明度:说明系统如何工作
- 可反馈性:允许用户报错
- 信任:增加用户对系统信心
- 有效性:帮助用户做好的决定
- 说服力:说服用户购买或尝试
- 高效性:帮用户快速抉择
- 满意度:增加用户体验舒适性和趣味
推荐系统与数据挖掘
涉及数据挖掘内容概览
数据挖掘大致分3个步骤:数据预处理,数据分析,结果解释
数据预处理
数据就是一组对象以及对应属性的集合
对象等同于:记录,物品,得分,样本,观测值,实例
属性等同于:变量,字段,特征,特性
1.相似度度量
1.1 欧几里得距离
n是维度,Xk和Yk是第k和特征值
1.2 闵可夫斯基距离
是欧氏距离的推广
r=1:曼哈顿距离,L1范数
r=2:欧几里得距离,L2范数
r=∞:上确界,任意维度对象属性间的最大距离
1.3. 马氏距离
δ是协方差矩阵
1.4. 夹角余弦值
⋅代表点积,∥x∥是向量x的长度
也叫余弦相似度,L2范数
1.5. 皮尔逊相关度
利用x,y的协方差和标准差$\delta$ 进行计算
1.6. 简单匹配系数
只对应二进制属性
1.7. Jaccard系数
一般情况,推荐系统预测精确度不太受相似度度量方法的影响
(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.关联规则挖掘
- 关联规则发现的规则只意味着共同出现,并没有因果关系
- 利用支持度和置信度对规则进行筛选
- 先根据支持度生成物品集(频繁项集生成),再从频繁项集里面产生高置信度规则