推荐系统入门学习笔记

本文围绕推荐系统和机器学习展开。介绍推荐系统目的、思想、分类及评测指标,涵盖基于人口、内容、协同过滤等推荐算法。还阐述机器学习数学基础,包括矩阵、导数等知识,以及监督学习、无监督学习的多种算法,如KNN、逻辑斯谛回归、k均值等。

推荐系统概述

推荐系统的目的

  • 现状:信息过载
  • 推荐系统
    • 没有明确需求
    • 从大量信息中找到自己感兴趣的
    • 让自己生产的东西被关注

推荐系统的基本思想

  • 物以类聚

    利用用户和物品的特征信息,给用户推荐那些具有用户喜欢的特征的物品

  • 人以群分

    利用用户喜欢过的物品,给用户推荐与他喜欢过的物品相似的物品

  • 知你所想

    利用和用户相似的其他用户,给用户推荐那些和他们兴趣爱好相似的其他用户喜欢的物品

    image-20231104155747810

数据分析

  1. 用户的基本信息

    • 个人信息
    • 喜好标签
    • 浏览上下文信息
  2. 物品的信息

    • 内容信息
    • 分类标签
    • 关键词
  3. 行为数据

    • 显示的用户反馈:评分,评论
    • 隐式的反馈:购买查看,点击

推荐系统的分类

  • 根据实时性分类

    • 离线
    • 实时
  • 是否个性化

    • 个性化
    • 基于统计的推荐
  • 推荐原则分类

    • 基于相似度的推荐
      根据特征计算相似度

    • 基于知识的推荐

      根据特征定义规则、知识

    • 基于模型的推荐

      设计模型发现规律

  • 数据源分类

    • 基于人口统计学

      用户的数据,用户滑向

    • 基于内容

      商品的数据

    • 基于协同过滤

      基于行为数据

image-20231104161350548

推荐算法的简介

  • 基于人口统计学的推荐

    人以群分


    image-20231104161637399

用户c和用户a年龄相仿,都是女生

所以把用户a喜好的物品A推荐给用户c

  • 基于内容的推荐算法

    物以类聚

image-20231104161942527

电影A和电影C的类型都是爱情,动作

用户a喜好电影A,所以也喜欢电影C

  • 基于协同过滤的推荐算法

    Collaborative Filtering , CF

image-20231106143033051

用户对物品之间评分的一个矩阵

  • 分类

    • 基于近邻的协同过滤
      • 基于用户
      • 基于物品
    • 基于模型的协同过滤(机器学习)
      • 奇异值
      • 潜在语义分析
      • 支撑向量机
  • 基于内容,利用用户评价过的物品的内容特行政

    CF还可以利用其他用户评分过的物品内容

  • CF可以解决一些cb的局限

    • 难以获得物品内容时
    • CF
  • CF 基于近邻和模型

  • 基于用户的CF

    image-20231106143752656

用户a喜好AC,用户c喜好ACD

不是根据物品的特征

  • 基于物品的CF

    image-20231106143936473

物品A和物品C比较相似,都被abc喜欢

  • 混合推荐

    • 加权混合

      用线性公职将几种不同的推荐组合

      在测试数据集上反复实验

      从而达到最好推荐效果的权重值

    • 切换混合

      • 允许不同情况下的
    • 分区推荐

      • 将不同的推荐结果分给不同的显示区域
    • 分层混合

      • 将一个推荐机制的结果作为另一个的输入

推荐系统评测

  • 离线实验

    • 通过体制系统获得用户行为数据,并按照一定格式生成一个标准的数据集
    • 将数据集按照一定的规则分成训练集和测试集
    • 在训练集上训练用户兴趣模型,在测试集上进行预测
    • 通过事先定义的离线指标评测算法在测试集上的预测结果
  • 用户调查

  • 在线测试

    • AB测试

评测指标

    • 预测准确度
    • 用户满意度
    • 覆盖率
    • 多样性
    • 惊喜度
    • 信任度
    • 实时性
    • 健壮性
    • 商业目标
  • 评测

    • 评分预测

      让用户对历史物品打分,从中学习一个兴趣模型,从而预测用户对新物品的评分

image-20231106145208969

  • Top-N推荐

    给用户一个个性化的推荐列表

  • 精确率、准确率和召回率

    image-20231106145657277

准确率accuracy =( TP+TN)/总数

精确率precision = TP/(TP+FP)

召回率recall = TP/(TP+FN)

机器学习数学基础

线代、微积分、概率统计

矩阵

  • 由m ×n 个数aij(i = 1,2,…,m; j = 1,2,…,n) 排成的m 行n 列的数表A 就称为m 行n 列

    矩阵

  • 行数与列数都等于n 的矩阵称为n 阶矩阵,又称做n 阶方阵,可以记作An

  • 只有一行的矩阵A1×n 称为行矩阵,又叫行向量

    只有一行的矩阵A1×n 称为行矩阵,又叫行向量

    多维列向量

  • 对于方阵,从左上角到右下角的直线,叫做主对角线,主对角线上的元素称为主对角

    线元素

  • 矩阵的元素全部为0,称为零矩阵,用O 表示

  • 对于方阵,如果只有对角线元素为1,其余元素都为0,

    那么称为单位矩阵,一般用I 或者E 表示

  • 对于方阵,不在对角线上的元素都为0,

    称为对角矩阵

矩阵运算

  • 矩阵加法

    把矩阵的对应位元素相加

    矩阵的形状必须一致,即必须是同型矩阵

  • 矩阵乘法

    1. 数值与矩阵相乘

      数值与矩阵每一个元素相乘

    2. 矩阵与矩阵相乘

      image-20231106151012641

      ( λμ ) A = λ ( μA )

      ( λ + μ ) A = λA + μA

      λ ( A + B) = λA + λB

      ( AB ) C = A ( BC )

      λ ( AB ) = ( λA ) B = A ( λB )

      A ( B + C ) = AB + AC

      ( B + C ) A = BA + CA

image-20231106151055276

  • 矩阵的转置

    把矩阵A 的行换成相同序数的列,得到一个新矩阵,叫做A 的转置矩阵,记作AT

    ( AT)T = A

    ( A + B )T = AT +BT

    ( λA )T= λAT

    ( AB )T = BT AT

  • 矩阵的逆

    对于n阶方阵A,如果由一个n阶方正B,是的

    ​ AB=BA=E

    就称矩阵A是可逆的,并成为B是A的逆矩阵

方向导数

  • 函数抹一点在某一趋近方向上的导数值

  • 方向导数就是函数在除坐标轴正方向外,其他特定方向的变化率

  • image-20231106152407673

梯度

  • 梯度是一个向量,它的防线与取得最大方向导数的方向一致,它的模为方向导数的最大值

  • image-20231106152814240

凸函数和凹函数

常用统计变量

  • 样本均值
  • 样本方差
  • 样本标准差

常用概率分布

  • 均匀分布

    image-20231106153218904

  • 正态分布

    image-20231106153230303

    image-20231106153238877

  • 指数分布

    image-20231106153249996

重要概率公式

  • 条件概率

    image-20231106153328299

  • 全概率公式

    image-20231106153342502

  • 贝叶斯公式

    image-20231106153423627

机器学习

  • 无监督学习
  • 有监督学习
  • 强化学习

监督学习

image-20231107203807320

image-20231107202955018

  • 监督学习算法Supervised Learning

    构建了包含输入和所需输出的一组数据的数学模型

  • 监督学习三要素

    • 模型:总结数据的内在规律,用数学函数描述的系统
    • 策略:选取最优模型的评价准则:什么样的模型最好?
    • 算法:选取最优模型的具体算法:求解最优模型
  • 监督学习实现步骤

  1. 得到一个有限的训练数据集
  2. 确定学习策略
  3. 实现学习算法
  4. 通过学习算法选择最优模型
  5. 预测分析

image-20231107204557435

模型评估

  • 训练集和测试集

    用来训练模型的数据称为训练集,用来测试模型好坏的集合称为测试集

损失函数

衡量模型预测误差的大小

自变量:模型中的系数

定义:预测值f(x)与真实值Y的偏差程度

  • 0-1损失函数

    非黑即白

  • 平分损失函数

    image-20231107205325514

  • 绝对损失函数

    image-20231107205422509

  • 对数损失函数

    image-20231107205441940

  • 经验风险

    f(x)关于训练数据集的平均损失,RempR_empRemp

    image-20231107205744494

  • 经验风险最小化ERM

    经验风险最小的模型就是最优的模型

    缺陷:样本过小时

训练误差

关于训练集的平均损失

但是训练误差可以用来判断是否容易学习

本质上不重要

测试误差

关于测试集的平均损失

image-20231107210055894

测试误差真正反映了模型对未知数据的预测能力,

称为泛化能力

欠拟合
  • 模型没有很好地捕捉到数据特征,特征集过小
  • 本质:对数据地特征“学习”得不够“
过拟合
  • 噪声数据的特征影响,特征集过大

    模型泛化能力太差

  • 实例:曲线拟合

    image-20231107210643032

模型的选择

  • 当模型复杂度增大,训练误差会减小趋向0 ,达到最小值就会增大

image-20231107210824237

正则化
  • 结构风险最小化SRM

    在ERM基础上,防止过拟合提出的策略

    在经验风险上加上表示模型复杂度的正则化项,惩罚项

    单调递增函数,越复杂,正则化值越大

  • 机构高风险最小化的典型实现是正则化

    • 形式

      image-20231107211321625

      第二项是正则化项

      可以去不同的形式

      L1范数:绝对值求和

      L2范数

  • 奥卡姆剃刀

    原理:如无必要,勿增实体

    尽量选择能够很好解释已知数据且简单的模型

    而不应该一味追求更小的训练误差,将模型复杂化

交叉验证
  • 数据集划分

    数据充足的情况下:训练集、验证机、测试集

    训练模型

    选择模型

    学习评估

  • 数据不充足,重复利用数据——交叉验证

    • 简单交叉验证:73分
    • S折交叉验证:
    • 留一交叉验证:留下一个测试

模型求解算法

梯度下降算法

损失函数L(f(x),Y)L(f(x),Y)L(f(x),Y)是模型中系数的函数,如果系数沿着损失函数的负梯度方向变化,损失函数减少速度最快,能以最快的速度解出损失函数的极小值,即合适的模型中的系数

  • 沿着负梯度方向迭代

    这里的偏导即下降的斜率

image-20231107215827153

  • 阿尔法在梯度下降算法中被称为学习率或者步长

    不能太大也不能太小

    image-20231112023959918

  • 明显,梯度下降可能只是一个局部最优解,即陷入山谷

    但当山谷只有一个时,即凸函数,则是全局最优解

牛顿法和拟牛顿法
  • 迭代公式:image-20231107221154631

    • Hk−H^-_kHkf(x)f(x)f(x)的海塞矩阵在xkx^kxk的值

      二阶偏导

    • gkg_kgkf(x)f(x)f(x)的梯度向量在x的值

    • 考虑了二阶偏导,所以收敛速度更快

  • 拟牛顿法

分类回归

当输出被限制为有限的一组值(离散数值)

具有范围内的任何数值(连续数值)回归算法

  • 举例

    预测房价或者房屋出售

    回归 分类

    • 如果将是否出售问题改为预测房屋出售概率问题,则这就变成了一个回归问题
分类问题
  • 在监督学习中,当输出变量Y取有限个离散值是,预测问题就成了分类

  • 监督学习从数据中学习了一个分类模型或分类模型函数,称为分类器

  • 分类问题可以用很多方法3解决:

    K近邻、决策树、感知机、逻辑斯谛回归、朴素贝叶斯、神经网络

  • 精确率和召回率

    • 评价分类器性能的指标一般是分类准确率

      正确分类样本数/总样本数

    • 二类分类问题:精确率和召回率

      		​						   `precision   recall`
      
    • TP :正——>正(关心的问题被关心了)
      TN :负——>负
      FP :负——>正
      FN :正——>负

    • 精确率

      推测出来的人中推测正确的比例

      image-20231107213514003

    • 召回率

      应该被推测出来的人被推出的比例

      image-20231107213527194

KNN算法
  • KNN算法(k个近邻)

    通过测量不同特征值之间的距离进行分类

    距离:

    • 欧几里得距离

      image-20231113083029709

    • 曼哈顿距离

    image-20231113083044211

    • 余弦相似度
  • KNN算法很大程度上取决于K的选择

image-20231113082747119

K=3,红色占比2/3

K=5, 蓝色占比3/5

  • 算法步骤
    1. 计算测试数据与各个训练数据之间的距离
    2. 排序
    3. 选取距离最近的k个点
    4. 确定类别频率
    5. 返回预测
逻辑斯谛回归算法
  • Sigmoid函数(压缩函数)

    g(z)=11+e−zg(z)=\frac{1}{1+e^{-z}}g(z)=1+ez1
    连续平滑地将整个实数域映映射为一个二值变量

    image-20231113150654536

    反应在二维上我们可以得到一条直线

    w1∗x1+w2∗x2+b=0w_1*x_1+w_2*x_2+b = 0w1x1+w2x2+b=0

    决策边界,这也就是所谓的线性分类

image-20231113153402719

image-20231113153506729

x12+x22+b=0x_1^2 + x_2^2+b = 0x12+x22+b=0

  • 损失函数

    1. 由于压缩函数的光滑,没有做到真正的阶跃,如果还是用平方函数,例如0.51比0.5大,分类为1即使正确,但是误差还是有0.49,无法准确地展现分类正确的奖励

    2. 压缩函数加上平方后非凸函数,会梯度下降会陷入极小值
      image-20231113154627050

综上我们采用对数函数,抵消高次方

image-20231114090402566

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

从图中可以看出,这是一个分段函数

hθ(x)h_{\theta}(x)hθ(x)接近理论值y时,红色段即误差急剧缩小,反之误差很大

图好像有误

说明该误差函数能很好地给出分离正确的奖励

将该分段函数合并,便于求导

−y(i)logh(x(i))+(1−y(i))log(1−h(x(i)))-y^{(i)}logh(x^{(i)})+(1-y^{(i)})log(1-h(x^{(i)}))y(i)logh(x(i))+(1y(i))log(1h(x(i)))

为了防止过拟合,加入正则化项

j(θ)=−1m∑i=1m[y(i)loghθ(xi)+(1−y(i))log(1−hθ(x(i)))]+λ2m∑j=1nθj2j(\theta)=-\frac{1}{m}\sum_{i=1}^{m}[y^(i)logh_\theta(x^{i})+(1-y^{(i)})log(1-h_{\theta}(x^{(i)}))]+\frac{\lambda}{2m}\sum_{j=1}{n}\theta^2_jj(θ)=m1i=1m[y(i)loghθ(xi)+(1y(i))log(1hθ(x(i)))]+2mλj=1nθj2

这样我们获得了一个凸函数

然后求偏导用梯度下降

决策树

简单高效具有强解释型模型

本质是一颗由上而下的有多个判断节点组成的树

涉及概念:

  • 特征选择:决定用哪个特征来划分特征空间

  • 随机变量:从样本空间的子集到实数的映射,将事件转换为一个数值

  • 用来衡量随机变量的不确定性

    设X是一个区有限个值的离散随机变量,其概率分布:

    P(X=xi)=pi,i=1,2,3…,nP(X=x_i)=p_i,i=1,2,3…,nP(X=xi)=pi,i=1,2,3,n

    则该随机变量X的熵定义为:

    H(X)=−∑i=1npilogpiH(X)=-\sum_{i=1}^{n}p_ilogp_iH(X)=i=1npilogpi

    通常上式,对数的底数以2或e为底,这是熵的单位为比特或者纳特

  • 条件熵

    H(Y∣X)=∑i=1npiH(Y∣X=xi)H(Y|X)=\sum_{i=1}^{n}p_iH(Y|X=x_i)H(YX)=i=1npiH(YX=xi)
    已知随机变量X的条件下随机变量Y的不确定性

    这里的pi=P(X=xi)p_i=P(X=x_i)pi=P(X=xi)

  • H(D)H(D)H(D)表示对数据集D进行分类的不确定性

  • 条件熵H(D∣A)H(D|A)H(DA)指在给定特征A的条件下,数据集分类的不确定性

  • 当熵和条件熵的概率由数据估计得到时,所对应的熵和条件熵分别被称为经验熵和条件经验熵

  • 信息增益

    特征A对训练数据集D的信息增益g(D,A)

    定义为有无特征A给定条件下D的熵之差

    也就是经验熵和条件经验熵之差

    image-20231114200829039

    这就表示由于特征A而使得对数据集D的分类的不确定性减少的程度

  • 例:

    image-20231114201503786

    初识状态的熵:

    P(red)=1/3P(red) = 1/3P(red)=1/3

    P(black)=2/3P(black) = 2/3P(black)=2/3

    $ H(三个球) = -1/3log(1/3)-2/3log(2/3)=0.918$

    image-20231114195852713

    1. 第一种分类方式:

      H(红黑∣黑)=H(红黑)+H(黑)H(红黑|黑 ) = H(红黑 )+H(黑 )H(红黑)=H(红黑)+H()

      =−1/2∗log(1/2)−1/2∗log(1)=1=-1/2*log(1/2)-1/2*log(1)=1=1/2log(1/2)1/2log(1)=1

      熵增,不确定性增强

    image-20231114200058793

    1. 第二种分类方式:

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    ​ 不确定性减小

理想的分类是

每一组数据,都能确定性地按照决策树分支找到对应的类别

也就是选择能使数据信息熵下降最快的特征作为分类节点

即选取具有信息增益大的特征作为分类节点

  • 决策树的生成算法

    • ID3

      找到信息增益最大的特征,按照此特征进行分类

      然后再找到各类子集中信息增益最大的特征,按照此特征分类,最终得到符合要求的模型

    • C4.5

      用信息增益比选择特征

      g(D,A)=H(D)−H(D∣A)H(D)g(D,A)=\frac{H(D)-H(D|A)}{H(D)}g(D,A)=H(D)H(D)H(DA)

    • 分类与回归树CART

      特征选择、树的生成和剪枝

回归问题
  • 预测变量输出变量

  • 回归问题的学习等价于函数拟合:

    选择一个合适的函数曲线

  • 回归问题的分类

    • 输入变量的个数:一元回归(不等价线性)、多元回归
    • 模型类型:线性回归(同样存在多元)、非线性回归
  • 回归学习的损失函数——平方损失函数

    求解损失函数最小值,(凸函数)

    可以使用最小二乘法求解

  • 线性回归模型

    • 一元线性模型

    y=wx+by=wx+by=wx+b

    平面上的一条直线

    • 多元

    给定有d个属性(特征)秒胡的示例x=(x1,x2,……,xd),其中xi是在第i个属性上的举止,线性模型试图学得一个通过属性的线性组合来预测的函数,(比如一个好的瓜不仅要有好的色泽,根底,敲击的声音)即

    f(x)=w1x1+w2x2+……+wdxd+bf(x)=w_1x_1+w_2x_2+……+w_dx_d+bf(x)=w1x1+w2x2+……+wdxd+b

    向量形式:

    f(x)=WTx+bf(x)=W^Tx+bf(x)=WTx+b

    w就是特征矩阵

    w、b学得后,模型就确定

    b是偏置项,影响最后模型的输出结果,避免特征变量为0 时,输出为0的结果

线性回归最小二乘拟合

基于均方误差最小化来进行模型求解

使理论值和观测值之差的平方和最小

image-20231109000605054

以一元线性模型为例,求解w和b,使得

image-20231109001405775

最小化

分别对w,b求偏导

image-20231109001441861

令他们的偏导为0则可求得极小值

image-20231109001518437

线性回归梯度下降

image-20231112024539395

image-20231112024605401

例子:

image-20231113000811308

  • 相同点:求导算出一个模型,使得损失函数最小

  • 不同点:

    • 损失函数:梯度下降可以是其他损失函数,最小二乘一定是平方损失函数
    • 实现方法:最小二乘是直接求出,梯度法是一种迭代
    • 效果:最小二乘一定是全局最优解,但计算繁琐未必有解;梯度下降计算简单,但一般是局部最小,对初识点和学习率的选择极为敏感

无监督学习

聚类
k均值
  • 核心思想:由用户指定k个初始质心initial centroids

    以作为聚类的类别cluster

    重复迭代直至算法收敛

  • 算法流程:

    1. 选取k个初始质心

    2. repeat:

      对每个样本点,计算得到距其最近的执行,将其标记;

      重复计算k个cluser对应的质心

    3. until质心不再发生变化,或迭代达到上限

  • 实例:迭代过程,质心逐步确定,不再改变

    image-20231114203247543

基于密度的聚类
最大期望聚类
降维
潜语义分析LSA
主成分分析PCA
奇异值分解SVD

推荐系统算法

常用推荐算法分类

基于人口推荐学的推荐算法

  • 根据系统用户的基本信息

    发现用户相关程度

    将相似用户喜爱的其他物品推荐给当前用户

  • 通过聚类等手段

    给用户打上分类标签

  • 对于特定标签,可以根据预设的模型推荐对应的物品

  • 用户画像

    用户信息标签化的过程

基于内容的推荐算法

  • 发现物品的相关性

  • 通过抽取物品内在或外在的特征值

    实现相似度计算

  • 相似度计算

    • 欧氏距离

      d(x,y)=∑i(xi−yi)2d(x,y)=\sqrt{\sum_{i}(x_i-y_i)^2}d(x,y)=i(xiyi)2

    • 余弦相似度

      cosθ=∑ixiyi∑ixi2∗∑iyi2cos\theta=\frac{\sum_{i}x_iy_i}{\sqrt{\sum_{i}x_i^2}*\sqrt{\sum_{i}y_i^2}}cosθ=ixi2iyi2ixiyi

  • 对于物品特征提取——打标签

    • 专家标签PGC
    • 用户自定义标签UGC
    • 降维分析数据,提取隐语义标签LFM
  • 对于文本信息的特征提取——关键词

    • 分词、语义处理和情感分析NLP
    • 潜在语义分析LSA
基于内容推荐系统的层次结构

image-20231115123711266

特征工程

image-20231115123849444

  • 特征:数据中抽取出来的 对结果预测有用的信息

  • 特征的个数就是数据的观测维度

  • 特征工程包括

    特征清洗:采样,清洗异常样本

    特征选择:数据是否发散,跟目标值的关联性

    特征处理:标准化

  • 不同数据类型有不同的数据处理方法

    • 数值型的处理

      归一化/幅度调整

      特征与特征之间应该是平等的,区别应该体现在特征内部

      两个平等但数值量级不同的特征输入到相同的模型中

      由于本身幅度不同导致产生的效果不同,这是不合理的

      所以需要进行归一化调整:

      Featurenew=FeatureoldFeaturemax−FeatureminFeature_{new}=\frac{Feature_{old}}{Feature_{max}-Feature_{min}}Featurenew=FeaturemaxFeatureminFeatureold

      离散化

      将原始连续值切断,转化为离散值

      应用场景:让座问题

      我们需要训练一个模型给年龄很大和很小的人让座

      但是,年龄与是否应该让座不是严格的正相关或负相关

      对此,应使将年龄分段,将一个age特征分成多个特征,

      将连续值离散化

      连续值离散化

      离散化的两种方式

      • 等步长

      • 等频率

      ​ min->25%->50%->max

    • 类别型的处理

      避免预设的大小关系

      One-Hot编码/哑变量

      将类别平行地展开

      image-20231115190625116

    • 时间型地处理

      既可以连续:持续时间、间隔时间

      也可以离散:周几,上午下午、工作日/周末

    • 统计型的处理

      次序性

      比例类

      加减平均

  • 推荐系统常见反馈数据

image-20231115191042251

基于UGC的推荐
  • 用户用标签来描述对物品的看法,可以看成行为信息

    也可以认为是物品的信息

  • 一个用户标签行为的数据集一般由一个三元组的集合表示

    **(u,i,b)**表示用户u给物品i打上了标签b

  • 算法步骤

    • 统计每个用户最常用标签

    • 统计被打过某种标签次数最多的物品

    • 把具有某个标签的最热门的物品推荐给关注该类标签的用户

    • 用户u对物品i的兴趣公式

      p(u,i)=∑bnu,bnb,ip(u,i)=\sum_{b}n_{u,b}n_{b,i}p(u,i)=bnu,bnb,i

      n_u,b使用户打b标签的次数,n_b,i是物品i被打过b标签的次数

    缺点:这种方法倾向于给热门标签、热门物品更大的权重

    ​ “霸榜"现象,个性化和新颖度会降低

    类似的问题,出现在新闻内容的关键词提取中,干扰词

TF-IDF对UGC的改进
  • 用以评估一个子词对于一个文件集或一个语料库中的其中一份文件的重要程度

  • 主要思想:如果某个词在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为该词具有很好的类别区分能力,适合用来分类

  • 词频TF

    指的是一个给定的词语在该文件中的频率

    TFi,j=ni,jn∗,jTF_{i,j}=\frac{n_{i,j}}{n_{*,j}}TFi,j=n,jni,j

  • 逆向文件频率

    一个词语普遍重要性的度量,N文档总数,NiN_iNi包含i的数量

    image-20231115193250757

  • 改进:

    对“热门“的惩罚

    p(u,i)=∑bnu,blog(1+nb(u))nb,ilog(1+ni(i)p(u,i)=\sum_{b}\frac{n_{u,b}}{log(1+n_b^{(u)})}\frac{n_{b,i}}{log(1+n_i^{(i)}}p(u,i)=blog(1+nb(u))nu,blog(1+ni(i)nb,i

    nb(u)n_b^{(u)}nb(u)记录了标签b被多少个不同的用户使用过

    ni(i)n_i^{(i)}ni(i)记录了物品i被多少个不同的用户打过标签

基于协同过滤的推荐

基于近邻
User-CF
  • 基本原理:根据所有用户对物品的偏好,发现与昂前用户口味和偏好相似的邻居用户群,推荐近邻偏好的物品
  • 采用k近邻算法,基于k个邻居的历史偏好信息
  • 与基于人口统计学的推荐机制
    • 都是计算用户相似度
    • 不同的计算方式:usercf是在用户的历史偏好的数据上计算的用户的相似度;基于人口统计学机制只考虑用户本身的特征
item-CF
  • 发现物品之间的相似度

  • Item-CF和CB的推荐

    相似度计算方法不同:前者是从用户历史的偏好推断,后者是基于物品本身的属性特征

User-CF和Item-CF的比较

  1. 用户数量大于物品,物品相似度相对稳定:电影音乐

    使用Item-CF

  2. 物品数量大于用户:新闻网站

    User-CF

协同过滤的推荐优缺点

  • 问题:基于历史数据,冷启动困难
基于模型
  • 基本思想

    • 用户具有一定特
    • 物品具有一定特征
    • 是否匹配
  • 模型的建立相当于从行为数据中提取特征

  • 特征非显性时,需要发掘隐藏的特征,用到隐语义模型LFM

基于近邻与基于模型区别

  • 基于近邻是直接使用已有的用户偏好数据预测对新物品的偏好

    ,类似分类

  • 基于模型,是使用数据训练模型,找到内在规律,在用模型做预测,类似回归

隐语义模型LFM
  • 用隐语义模型来进行协同过滤的目标、

  • 通过矩阵进行降维分析

    • 偏好数据往往是稀疏的,所以需要降维处理
    • 同时分解后的矩阵,就代表了用户和物品的隐藏特征
  • 隐语义模型实例

    • 基于概率的隐语义分析pLSA
    • 隐式迪利克雷分布模型LDA
    • 矩阵因子分解模型SVD
  • LFM降维方法——矩阵因子分解SVD

    假设用户对物品的评分矩阵为R

    现在由m个用户,n个物品

    将R矩阵分解为两个低维矩阵P和Q

image-20231115205633297

​ 其中就有k个隐类,f1,f2……

  • 用户评分矩阵大部分项都是空的,是一个稀疏矩阵

    根据已有的电影打分推测给用户给没有看过的电影的分数

    推荐给用户他可能打高分的电影

    这就得到一个预测评分矩阵

    image-20231115210336837

  • 模型的求解——损失函数

    选择平方损失函数

    预测评分矩阵 原评分矩阵

    image-20231115210528914

    其中加入了正则化项,防止过拟合

    前面的系数通过交叉验证得到

  • 交替最小二乘法ALS

    ​ P、Q都未知,且相乘耦合在一起,无法分别求偏导利用最小二乘法求解

    ​ 只能采取交替最小二乘法依次求偏导

    ​ 类似迭代法求解非线性方程

    过程:

    1. 设置初值Q0Q_0Q0
    2. 固定Q0Q_0Q0,求解P0P_0P0
    3. 固定P0P_0P0,求解Q1Q_1Q1
    4. 重复直至损失函数C收敛

    求解过程:

    • 固定Q,求解P

    • 每个用户直接是相互独立的

      当Q固定时,用户特征向量PuP_uPu可以单独求解

    • minP,QCmin_{P,Q}CminP,QC转化为

      image-20231115213459944

    • PuP_uPu使得Lu(Pu)L_u(P_u)Lu(Pu)最小

    • LuL_uLuPuP_uPu求偏导,令其为0,解得
      image-20231115213803520

  • 梯度下降算法

    image-20231115213905031

    image-20231115213910889

  • 基于近邻是直接使用已有的用户偏好数据预测对新物品的偏好

    ,类似分类

  • 基于模型,是使用数据训练模型,找到内在规律,在用模型做预测,类似回归

隐语义模型LFM
  • 用隐语义模型来进行协同过滤的目标、

  • 通过矩阵进行降维分析

    • 偏好数据往往是稀疏的,所以需要降维处理
    • 同时分解后的矩阵,就代表了用户和物品的隐藏特征
  • 隐语义模型实例

    • 基于概率的隐语义分析pLSA
    • 隐式迪利克雷分布模型LDA
    • 矩阵因子分解模型SVD
  • LFM降维方法——矩阵因子分解SVD

    假设用户对物品的评分矩阵为R

    现在由m个用户,n个物品

    将R矩阵分解为两个低维矩阵P和Q

[外链图片转存中…(img-OsF0E8m5-1700668387041)]

​ 其中就有k个隐类,f1,f2……

  • 用户评分矩阵大部分项都是空的,是一个稀疏矩阵

    根据已有的电影打分推测给用户给没有看过的电影的分数

    推荐给用户他可能打高分的电影

    这就得到一个预测评分矩阵

    [外链图片转存中…(img-vP3GXkH1-1700668387041)]

  • 模型的求解——损失函数

    选择平方损失函数

    预测评分矩阵 原评分矩阵

    [外链图片转存中…(img-9YLlEzjA-1700668387042)]

    其中加入了正则化项,防止过拟合

    前面的系数通过交叉验证得到

  • 交替最小二乘法ALS

    ​ P、Q都未知,且相乘耦合在一起,无法分别求偏导利用最小二乘法求解

    ​ 只能采取交替最小二乘法依次求偏导

    ​ 类似迭代法求解非线性方程

    过程:

    1. 设置初值Q0Q_0Q0
    2. 固定Q0Q_0Q0,求解P0P_0P0
    3. 固定P0P_0P0,求解Q1Q_1Q1
    4. 重复直至损失函数C收敛

    求解过程:

    • 固定Q,求解P

    • 每个用户直接是相互独立的

      当Q固定时,用户特征向量PuP_uPu可以单独求解

    • minP,QCmin_{P,Q}CminP,QC转化为

      [外链图片转存中…(img-Jtp5GwEB-1700668387042)]

    • PuP_uPu使得Lu(Pu)L_u(P_u)Lu(Pu)最小

    • LuL_uLuPuP_uPu求偏导,令其为0,解得
      [外链图片转存中…(img-7MeZhcqu-1700668387042)]

  • 梯度下降算法

    [外链图片转存中…(img-DRpx5itL-1700668387043)]

    [外链图片转存中…(img-3PvxKVUh-1700668387043)]

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

社恐不参团

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值