补简历出现过的知识

尽量两天弄完

线性代数

内积就是两个向量的模×余弦

A ∗ B = ∣ A ∣ ∗ ∣ B ∣ ∗ cos ⁡ ( α ) A * B=|A| *|B| * \cos (\alpha) AB=ABcos(α)

推荐系统评价

覆盖率是指模型能够在测试集上推荐的项目占训练数据的百分比。

metric 买
matrix 美

GitHub - recmetrics

Evaluation Metrics for Recommender Systems

第四范式天枢 - 案例|推荐系统的评估指标

机器学习评价指标大汇总

覆盖面广,有思维导图,但没有公式,讲的不详细:

知乎 - 浅谈推荐系统的评估指标

系统离线评估指标

在这里插入图片描述

Precision Recall

P和R的分子都是true-positive,P的分母是y_pred的正类数目,R的分母是y_true的正类数目

  • P precision 精确率 查准率
  • R recall 召回率 查全率

P = T P T P + F P P=\frac{T P}{T P+F P} P=TP+FPTP

R = T P T P + F N R=\frac{T P}{T P+F N} R=TP+FNTP

在这里插入图片描述
在这里插入图片描述

  • TP和FP 表示预测为正类
  • TP和FN 表示标签为正类

应用场景

  • 推荐系统中比较倾向于高P低R,为了尽可能的不影响用户体验实现更精准推荐。

  • 而抓捕逃犯的系统中更需要高的R,误抓也不能漏抓。

MAP MAR

Mean Average Precision (MAP) For Recommender Systems

知乎 - 推荐系统之MAP与NDCG

在这里插入图片描述

其中m表示用户数目,先计算每个用户的AP,然后再求平均值。

MAP = (0.33+0.16+0.11+0.55+0.38) / 5 = 0.306

覆盖率

覆盖率是指模型能够在测试集上推荐的项目占训练数据的百分比。

个性化

个性化是评估模型是否向不同用户推荐相同项目的方法。用户的推荐列表之间存在差异( 1 − c o n s i n e S i m i l a r i t y 1-consineSimilarity 1consineSimilarity,余弦距离)。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

最后,计算余弦矩阵的上三角的平均值。个性化是1-平均余弦相似度。

列表内相似性

推荐列表中所有项目的平均余弦相似度。

在这里插入图片描述

NDCG

知乎 - 推荐系统之MAP与NDCG

UserCF, ItemFM

推荐系统学习笔记

五种常见的相似度算法:余弦相似度(cosine_similarity)、jaccard(杰卡德)相似度、编辑距离(Levenshtein)、MinHash、SimHash + 海明距离

要实现协同过滤,需要以下3个步骤:

  1. 收集用户偏好
  2. 找到相似的用户或物品
  3. 计算推荐

协同过滤遇到的问题:

  • 稀疏性问题——因用户做出评价过少,导致算出的相关系数不准确
  • 冷启动问题——因物品获得评价过少,导致无“权”进入推荐列表中

新用户新物品的冷启动策略:

  • 新用户推荐更多平均得分超高的电影;
  • 新电影推荐给喜欢类似电影(如具有相同导演或演员)的人。

后面这种做法需要维护一个物品分类表,这个表既可以是基于物品元信息划分的,也可是通过聚类得到的。

在这里插入图片描述

相似度可通过计算欧式距离皮尔逊相关系数Cosine相似度Tanimoto相关系数来衡量:

皮尔逊相关系数(Pearson Correlation Coefficient)

相当于归一化的余弦相似度

p ( x , y ) = ∑ x i y i − n x ˉ y ˉ ( n − 1 ) S x S y = n ∑ x i y i − ∑ x i ∑ y i n ∑ x i 2 − ( ∑ x i ) 2 n ∑ y i 2 − ( ∑ y i ) 2 p(x, y)=\frac{\sum x_{i} y_{i}-n \bar{x} \bar{y}}{(n-1) S_{x} S_{y}}=\frac{n \sum x_{i} y_{i}-\sum x_{i} \sum y_{i}}{\sqrt{n \sum x_{i}^{2}-\left(\sum x_{i}\right)^{2}} \sqrt{n \sum y_{i}^{2}-\left(\sum y_{i}\right)^{2}}} p(x,y)=(n1)SxSyxiyinxˉyˉ=nxi2(xi)2 nyi2(yi)2 nxiyixiyi

Cosine相似度(Cosine Similarity)

T ( x , y ) = x ⋅ y ∥ x ∥ 2 × ∥ y ∥ 2 = ∑ x i y i ∑ x i 2 ∑ y i 2 T(x, y)=\frac{x \cdot y}{\|x\|^{2} \times\|y\|^{2}}=\frac{\sum x_{i} y_{i}}{\sqrt{\sum x_{i}^{2}} \sqrt{\sum y_{i}^{2}}} T(x,y)=x2×y2xy=xi2 yi2 xiyi

Tanimoto系数(Tanimoto Coefficient)

Tanimoto系数由Jaccard系数扩展而来。

Tanimoto相似度与Bregman距离

T ( x , y ) = x ⋅ y ∥ x ∥ 2 + ∥ y ∥ 2 − x ⋅ y = ∑ x i y i ∑ x i 2 + ∑ y i 2 − ∑ x i y i T(x, y)=\frac{x \cdot y}{\|x\|^{2}+\|y\|^{2}-x \cdot y}=\frac{\sum x_{i} y_{i}}{\sqrt{\sum x_{i}^{2}}+\sqrt{\sum y_{i}^{2}}-\sum x_{i} y_{i}} T(x,y)=x2+y2xyxy=xi2 +yi2 xiyixiyi

区别

在这里插入图片描述

区别 UserCF ItemCF
场景 新闻类,短视频类,快消素材网站,社交网站 购物网站,技术博客网站
关注点 所在小组中的热门商品,注重社会化 注重用户有过行为的历史物品,注重个性化
多样性 系统多样性(覆盖率)高,注重推荐热门物品 单用户多样性高,容易推荐长尾物品

基于物品(Item-Based,IB) = 基于近邻 = ItemCF

基于内容(Content-Based)与基于近邻:

  • 相同点
    • 都是在item的基础上做相似度计算
  • 不同点
    • CB用的是物品本身的特征
    • ItemCF用用户对Item的行为来构造Item特征

计算方式

鱼儿的博客

UserCF

  1. 建立物品到用户的倒排表T
  2. 根据倒排表计算用户相似度矩阵W

对于物品对应的用户 i j ij ij W [ i ] [ j ] + = 1 W[i][j]+=1 W[i][j]+=1

惩罚热门物品:

W [ i ] [ j ] + = 1 1 + ∣ N ( i ) ∣ W[i][j]+=\frac{1}{1+|N(i)|} W[i][j]+=1+N(i)1

ItemCF

  1. 建立用户到物品倒排表T
  2. 构建物品相似度矩阵。 w i j w_{ij} wij若不为0,表示有共同的用户对这个物品进行了评分。

LFM

推荐系统SVD

netflix prize place 3

基本公式推导:

rating的预测值

r ^ u i = μ + b u + b i + q j T p u \hat{r}_{u i}=\mu+b_{u}+b_{i}+q_{j}^{T} p_{u} r^ui=μ+bu+bi+qjTpu

带正则化的损失函数

∑ r u i ∈ R train  ( r u i − r ^ u i ) 2 + λ ( b i 2 + b u 2 + ∥ q i ∥ 2 + ∥ p u ∥ 2 ) \sum_{r_{u i} \in R_{\text {train }}}\left(r_{u i}-\hat{r}_{u i}\right)^{2}+\lambda\left(b_{i}^{2}+b_{u}^{2}+\left\|q_{i}\right\|^{2}+\left\|p_{u}\right\|^{2}\right) ruiRtrain (ruir^ui)2+λ(bi2+bu2+qi2+pu2)

梯度下降

梯度下降的公式很好想明白,因为减去了 r ^ \hat{r} r^,再加上函数求导规则,MSE损失 e 2 e^2 e2的导数就是 2 e ⋅ d e d w 2e\cdot \frac{de}{dw} 2edwde − b i -b_{i} bi求导就剩下一个负号了,留下来的就是 − 2 e -2e 2e p u ⋅ q i p_u\cdot q_i puqi求导还能留一个(对方)。

e u i = r u i − r ^ u i e_{u i}=r_{u i}-\hat{r}_{u i} eui=ruir^ui
b u ← b u + γ ( e u i − λ b u ) b i ← b i + γ ( e u i − λ b i ) p u ← p u + γ ( e u i ⋅ q i − λ p u ) q i ← q i + γ ( e u i ⋅ p u − λ q i ) \begin{aligned} b_{u} & \leftarrow b_{u}+\gamma\left(e_{u i}-\lambda b_{u}\right) \\ b_{i} & \leftarrow b_{i}+\gamma\left(e_{u i}-\lambda b_{i}\right) \\ p_{u} & \leftarrow p_{u}+\gamma\left(e_{u i} \cdot q_{i}-\lambda p_{u}\right) \\ q_{i} & \leftarrow q_{i}+\gamma\left(e_{u i} \cdot p_{u}-\lambda q_{i}\right) \end{aligned} bubipuqibu+γ(euiλbu)bi+γ(euiλbi)pu+γ(euiqiλpu)qi+γ(euipuλqi)

  • SVD++

文档

I ( u ) I(u) I(u)为该用户所评价过的所有电影的集合, y j y_j yj为隐藏的“评价了电影 j j j”反映出的个人喜好偏置。

收缩因子取集合大小的根号是一个经验公式,并没有理论依据。

r ^ u i = μ + b u + b i + q i T ( p u + ∣ I u ∣ − 1 2 ∑ j ∈ I u y j ) \hat{r}_{u i}=\mu+b_{u}+b_{i}+q_{i}^{T}\left(p_{u}+\left|I_{u}\right|^{-\frac{1}{2}} \sum_{j \in I_{u}} y_{j}\right) r^ui=μ+bu+bi+qiT(pu+Iu21jIuyj)

SVD

  • 应用
    • 数据压缩
    • 去除噪声
  • A = U Σ V T A=U\Sigma V^T A=UΣVT
    • U U T = I U U^{\mathrm{T}}=I UUT=I
    • V V T = I V V^{\mathrm{T}}=I VVT=I
    • Σ = diag ⁡ ( σ 1 , σ 2 , ⋯   , σ p ) \Sigma=\operatorname{diag}\left(\sigma_{1}, \sigma_{2}, \cdots, \sigma_{p}\right) Σ=diag(σ1,σ2,,σp)
    • σ 1 ⩾ σ 2 ⩾ ⋯ ⩾ σ p ⩾ 0 \sigma_{1} \geqslant \sigma_{2} \geqslant \cdots \geqslant \sigma_{p} \geqslant 0 σ1σ2σp0
    • p = min ⁡ ( m , n ) p=\min (m, n) p=min(m,n)
  • 求解步骤
    • 确定 V V V Σ \Sigma Σ
      • V T ( A T A ) V = Λ V^{\mathrm{T}}\left(A^{\mathrm{T}} A\right) V=\Lambda VT(ATA)V=Λ
      • 计算 Λ \Lambda Λ特征值的平方根
        • σ j = λ j , j = 1 , 2 , ⋯   , n \sigma_{j}=\sqrt{\lambda_{j}}, \quad j=1,2, \cdots, n σj=λj ,j=1,2,,n
        • Σ ₁ = d i a g ( σ ₁ , σ ₂ , ⋯   , σ r ) \Sigma₁=diag(\sigma₁, \sigma₂, \cdots,\sigma_r) Σ=diag(σ,σ,,σr)
        • Σ = [ Σ 1 0 0 0 ] \Sigma=\left[\begin{array}{ll}\Sigma_{1} & 0 \\ 0 & 0\end{array}\right] Σ=[Σ1000]
      • V = [ V ₁ V ₂ ] V=[V₁ V₂] V=[VV], 其中 V ₁ V₁ V r r r
    • 确定 U U U
      • u j = 1 σ j A v j , j = 1 , 2 , ⋯   , r u_{j}=\frac{1}{\sigma_{j}} A v_{j}, \quad j=1,2, \cdots, r uj=σj1Avj,j=1,2,,r
      • U 1 = [ u 1 u 2 ⋯ u r ] U_{1}=\left[\begin{array}{llll}u_{1} & u_{2} & \cdots & u_{r}\end{array}\right] U1=[u1u2ur]
      • A V 1 = U 1 Σ 1 A V_{1}=U_{1} \Sigma_{1} AV1=U1Σ1
  • 紧凑奇异值分解
    • 无损压缩
  • 截断奇异值分解
    • 有损压缩

PCA

没时间看统计学习方法了,看了这个野博客:

机器学习数学基础:从奇异值分解 SVD 看 PCA 的主成分

X X X减去每列均值做零中心化,得到协方差矩阵(对称矩阵,半正定矩阵(所有特征值>=0)),然后做特征分解,得到特征向量矩阵 Q Q Q

C = X ⊤ X m − 1 = Q Λ Q − 1 \begin{aligned} \mathbf{C} &=\frac{\mathbf{X}^{\top} \mathbf{X}}{m-1} \\ &=\mathbf{Q} \mathbf{\Lambda} \mathbf{Q}^{-1} \end{aligned} C=m1XX=QΛQ1

式中 m m m 表示 m m m 个样本,上面除以 m − 1 m-1 m1 是为了无偏估计。

Q Q Q的前K个向量就是我们要找的主成分PC。将数据投影到PC上去,即 Y = X Q Y=XQ Y=XQ,投影后的数据的协方差:

C Y = Y ⊤ Y m − 1 = Q ⊤ X ⊤ X Q m − 1 = Q ⊤ Q Λ Q − 1 Q = Λ \begin{aligned} \mathbf{C}_{\mathbf{Y}} &=\frac{\mathbf{Y}^{\top} \mathbf{Y}}{m-1} \\ &=\frac{\mathbf{Q}^{\top} \mathbf{X}^{\top} \mathbf{X} \mathbf{Q}}{m-1} \\ &=\mathbf{Q}^{\top} \mathbf{Q} \mathbf{\Lambda} \mathbf{Q}^{-1} \mathbf{Q} \\ &=\mathbf{\Lambda} \end{aligned} CY=m1YY=m1QXXQ=QQΛQ1Q=Λ

以上做法就是常见的对协方差矩阵做特征分解的操作。工业上(详见sklearn代码)的操作是更一般的对数据矩阵做SVD。

众所周知,SVD张这样:

X = U Σ V T X=U\Sigma V^T X=UΣVT

C = X ⊤ X m − 1 = ( V Σ U ⊤ ) ( U Σ V ⊤ ) m − 1 = V Σ 2 V ⊤ m − 1 = V Σ 2 V − 1 m − 1 \begin{aligned} \mathbf{C} &=\frac{\mathbf{X}^{\top} \mathbf{X}}{m-1} \\ &=\frac{\left(\mathbf{V} \mathbf{\Sigma} \mathbf{U}^{\top}\right)\left(\mathbf{U} \mathbf{\Sigma} \mathbf{V}^{\top}\right)}{m-1} \\ &=\frac{\mathbf{V} \mathbf{\Sigma}^{2} \mathbf{V}^{\top}}{m-1} \\ &=\frac{\mathbf{V} \mathbf{\Sigma}^{2} \mathbf{V}^{-1}}{m-1} \end{aligned} C=m1XX=m1(VΣU)(UΣV)=m1VΣ2V=m1VΣ2V1

然后和比一下:

C = X ⊤ X m − 1 = Q Λ Q − 1 \begin{aligned} \mathbf{C} &=\frac{\mathbf{X}^{\top} \mathbf{X}}{m-1} \\ &=\mathbf{Q} \mathbf{\Lambda} \mathbf{Q}^{-1} \end{aligned} C=m1XX=QΛQ1

就会发现,我们想要的主成分就是

Q = V m − 1 Q=\frac{V}{\sqrt{m-1}} Q=m1 V

同理:

Λ = Σ 2 m − 1 \mathbf{\Lambda}=\frac{\boldsymbol{\Sigma}^{2}}{m-1} Λ=m1Σ2


笔记:

  • 协方差矩阵求解公式
    • Σ = cov ⁡ ( x , x ) = E [ ( x − μ ) ( x − μ ) T ] \Sigma=\operatorname{cov}(\boldsymbol{x}, \boldsymbol{x})=E\left[(\boldsymbol{x}-\boldsymbol{\mu})(\boldsymbol{x}-\boldsymbol{\mu})^{\mathrm{T}}\right] Σ=cov(x,x)=E[(xμ)(xμ)T]
  • 总体PCA
    • m m m维向量 x x x m m m维向量 y y y的线性变换
      • y i = α i T x = α 1 i x 1 + α 2 i x 2 + ⋯ + α m i x m y_{i}=\alpha_{i}^{\mathrm{T}} \boldsymbol{x}=\alpha_{1 i} x_{1}+\alpha_{2 i} x_{2}+\cdots+\alpha_{m i} x_{m} yi=αiTx=α1ix1+α2ix2++αmixm
      • 满足
        • A A A是标准正交基
        • c o v ( y i , y j ) = 0 ( i ≠ j ) cov(y_i,y_j)=0(i\neq j) cov(yi,yj)=0(i=j)
        • y ₁ y₁ y方差最大,为第一主成分,以此类推
    • 求解
      • 第一主成分最大 var ⁡ ( α 1 T x ) = α 1 T Σ α 1 \operatorname{var}\left(\alpha_{1}^{\mathrm{T}} \boldsymbol{x}\right)=\alpha_{1}^{\mathrm{T}} \Sigma \alpha_{1} var(α1Tx)=α1TΣα1
      • 问题定义
        • max ⁡ α 1 α 1 T Σ α 1  s.t.  α 1 T α 1 = 1 \begin{array}{ll}\max _{\alpha_{1}} & \alpha_{1}^{\mathrm{T}} \Sigma \alpha_{1} \\ \text { s.t. } & \alpha_{1}^{\mathrm{T}} \alpha_{1}=1\end{array} maxα1 s.t. α1TΣα1α1Tα1=1
      • 定义拉格函数
        • α 1 T Σ α 1 − λ ( α 1 T α 1 − 1 ) \alpha_{1}^{\mathrm{T}} \Sigma \alpha_{1}-\lambda\left(\alpha_{1}^{\mathrm{T}} \alpha_{1}-1\right) α1TΣα1λ(α1Tα11)
      • a ₁ a₁ a求导令其为0, 得到
        • Σ α 1 − λ α 1 = 0 \Sigma \alpha_{1}-\lambda \alpha_{1}=0 Σα1λα1=0
      • 其实就是特征值和特征向量
    • 结论
      • x x x的第 k k k主成分是协方差矩阵 Σ \Sigma Σ k k k特征值
  • 样本PCA
    • 对样本数据规范化
      • x i j ∗ = x i j − x ˉ i s i i , i = 1 , 2 , ⋯   , m ; j = 1 , 2 , ⋯   , n x_{i j}^{*}=\frac{x_{i j}-\bar{x}_{i}}{\sqrt{s_{i i}}}, \quad i=1,2, \cdots, m ; \quad j=1,2, \cdots, n xij=sii xijxˉi,i=1,2,,m;j=1,2,,n
      • x ˉ i = 1 n ∑ j = 1 n x i j , i = 1 , 2 , ⋯   , m \bar{x}_{i}=\frac{1}{n} \sum_{j=1}^{n} x_{i j}, \quad i=1,2, \cdots, m xˉi=n1j=1nxij,i=1,2,,m
      • s i i = 1 n − 1 ∑ j = 1 n ( x i j − x ˉ i ) 2 , i = 1 , 2 , ⋯   , m s_{i i}=\frac{1}{n-1} \sum_{j=1}^{n}\left(x_{i j}-\bar{x}_{i}\right)^{2}, \quad i=1,2, \cdots, m sii=n11j=1n(xijxˉi)2,i=1,2,,m
    • 样本协方差矩阵 S S S就是样本相关矩阵 R R R
      • R = 1 n − 1 X X T R=\frac{1}{n-1} X X^{\mathrm{T}} R=n11XXT
    • 传统方法: 对协方差矩阵特征值分解
      • 求解 R R R k k k个特征值
      • ∣ R − λ I ∣ = 0 |R-\lambda I|=0 RλI=0
      • 第k主成分的方差贡献率
        • η k = λ k ∑ i = 1 m λ i \eta_{k}=\frac{\lambda_{k}}{\sum_{i=1}^{m} \lambda_{i}} ηk=i=1mλiλk
      • 求方差贡献率达到预订值的主成分个数 k k k
      • 求前 k k k个特征值对应的单位特征向量
        • a i = ( a 1 i , a 2 i , ⋯   , a m i ) T , i = 1 , 2 , ⋯   , k a_{i}=\left(a_{1 i}, a_{2 i}, \cdots, a_{m i}\right)^{\mathrm{T}}, \quad i=1,2, \cdots, k ai=(a1i,a2i,,ami)T,i=1,2,,k
      • k k k个样本主成分
        • y i = a i T x , i = 1 , 2 , ⋯   , k y_{i}=a_{i}^{\mathrm{T}} \boldsymbol{x}, \quad i=1,2, \cdots, k yi=aiTx,i=1,2,,k
    • 常用方法: 数据矩阵奇异值分解
      • 野博客
        • https://mp.weixin.qq.com/s/kUlulnusW8zXfq-cXdGMWg
      • 奇异值分解的本质是求协方差矩阵 S S S的特征值和特征向量
      • X ′ = 1 n − 1 X T X^{\prime}=\frac{1}{\sqrt{n-1}} X^{\mathrm{T}} X=n1 1XT
      • X ′ T X ′ = ( 1 n − 1 X T ) T ( 1 n − 1 X T ) = 1 n − 1 X X T \begin{aligned} X^{\prime \mathrm{T}} X^{\prime} &=\left(\frac{1}{\sqrt{n-1}} X^{\mathrm{T}}\right)^{\mathrm{T}}\left(\frac{1}{\sqrt{n-1}} X^{\mathrm{T}}\right) \\ &=\frac{1}{n-1} X X^{\mathrm{T}} \end{aligned} XTX=(n1 1XT)T(n1 1XT)=n11XXT
      • S X = X ′ T X ′ S_{X}=X^{\prime \mathrm{T}} X^{\prime} SX=XTX
      • X ′ X^\prime X做奇异值分解, V V V的列向量就是 X ′ T X ′ X^{\prime \mathrm{T}} X^{\prime} XTX( S S S)的单位特征向量
  • PCA的先导知识是[[SVD]]

白化

常用来进行白化的操作有两种方式,一种是PCA whiten,另外一种是ZCA whiten。

More importantly, understanding PCA will enable us to later implement whitening, which is an important pre-processing step for many algorithms.

There is a closely related preprocessing step called whitening (or, in some other literatures, sphering) which is needed for some algorithms.

  • (i) the features are less correlated with each other, and
  • (ii) the features all have the same variance.

其实就是让协方差矩阵变成单位矩阵

有PCA Whitening和ZCA Whitening

有空看下这个,没时间看了

PCA Whitening

Wide&Deep, DeepFM

GBDT

RF

LR

FM

Word2Vec

Transformer

LSTM/GRU

Node2Vec

LightGBM

PyTorch

深度学习知识

特征筛选

样本不平衡处理

猜你喜欢

转载自blog.csdn.net/TQCAI666/article/details/113828917