• 【数据挖掘】推荐系统



    1. What is Recommender System

    推荐系统提出的动机是什么呢?

    • 对于商家:更好的卖产品,更好的宣传
    • 对于个人:有一个比较感兴趣导向,可以以引起多巴胺回路兴奋
    • 对于信息:能够快速从大量信息中找到想要的

    🎉 推荐系统

    • 自动列出一个合适用户兴趣的简短列表

    理念

    • 使用历史数据,如用户过去的喜好(past preferences)或类似用户过去的喜好来预测未来的喜好
    • 通过观察过去用户或群体的喜好,试着预测他们未来的喜好,然后就可以试着给他们一些推荐了

    基本假设

    • 用户的偏好可能会保持稳定,并随着时间的推移而平稳变化
    • 品味相似的用户对某一物品的评价也相似

    通过这个基本假设,我们可以发现,推荐系统是将人们的过去数据(喜好什么的)当作聚类点进行聚类了,相似的簇具有类似的行为,而且这个行为在时间序列上是平稳变化(或者周期性变化)

    从形式上讲,推荐系统采用一组用户 U U U和一组项目 I I I,学习函数 f f f使其满足关系 R R R
    f : U × I → R f:U\times I\to R f:U×IR
    推荐系统与搜索引擎最大的区别在于,搜索引擎并没有考虑用户的喜好,而是考虑内容的相关性。


    2.Recommendation Algorithms

    2.1 Content-based Method

    • 基于内容的方法基于这样一个事实:用户的兴趣应该与ta应该被推荐的项目的描述相匹配。

    • 商品的描述与用户感兴趣的描述越相似,用户就越有可能觉得商品的推荐有趣。

    核心思想

    • 核心理念:找到用户和所有现有物品之间的相似性

    步骤

    • 描述向用户推荐的项目
    • 创建用户画像,描述用户感兴趣的内容
    • 将项目与用户简介进行比较,以决定推荐什么

    评价指标

    • 我们用一组向量表示项目和用户属性:

      • I j = ( i j , 1 , i j , 2 , . . . , i j , k ) I_j=(i_{j,1},i_{j,2},...,i_{j,k}) Ij=(ij,1,ij,2,...,ij,k)

      • U i = ( u i , 1 , u i , 2 , . . . , u j , k ) U_i=(u_{i,1},u_{i,2},...,u_{j,k}) Ui=(ui,1,ui,2,...,uj,k)

    • 他们之间(用户 u u u和项目 i i i)的相似性扩压用余弦距离度量:

    • s i m ( U i , I j ) = c o s ( U i , I j ) = ∑ l = 1 k u i , l i j , l ∑ l = 1 k u i , l 2 ∑ l = 1 k i j , l 2 sim(U_i,I_j)=cos(U_i,I_j)=\frac{\sum_{l=1}^ku_{i,l}i_{j,l}}{\sqrt{\sum_{l=1}^ku_{i,l}^2}\sqrt{\sum_{l=1}^k}i_{j,l}^2} sim(Ui,Ij)=cos(Ui,Ij)=l=1kui,l2 l=1k ij,l2l=1kui,lij,l

    接着就是计算最接近的top(k)项目啦!

    上面的算法只是用用户去评价一个商品,比较适合喜好推荐,并没有基于用户群体给出一个客观的评价。

    我们知道,某些商品虽然描述的很好,但可能并不受到群体喜欢(比如某些盗版),除却考虑推荐内容的相关性,还需要考虑目标群体,那怎么办呢?


    2.2 Collaborative Filtering Algorithm

    协同过滤算法基于用户-项目矩阵:

    举个例子:User-Item Matrix

    Lion KingAladdinMulanAnastasia
    John3033
    Joe5402
    Jill1242
    Jane3?10
    Jorge2201

    在商品评价中,得分可以由用户显示打分给出(explicit)

    也可以从其他用户的行为中推测得到(implicit)

    算法的具体步骤为:

    • 权衡所有用户/项目与当前用户/项目的相似性
    • 选择用户/项(邻居)的一个子集作为推荐器
    • 使用邻居对相同(或类似)物品的评级来预测用户对特定物品的评级
    • 推荐预测排名最高的项目

    评价指标

    • 余弦距离

    • 皮尔逊相关系数

      • s i m ( U i , U j ) = ∑ k ( r i , k − r ˉ i ) ( r j , k − r ˉ j ) ∑ k ( r i , k − r ˉ i ) 2 ∑ k ( r j , k − r ˉ j ) 2 sim(U_i,U_j)=\frac{\sum_k(r_{i,k}-\bar r_i)(r_{j,k}-\bar r_j)}{\sqrt{\sum_k(r_{i,k}-\bar r_i)^2}\sqrt{\sum_k(r_{j,k}-\bar r_j)^2}} sim(Ui,Uj)=k(ri,krˉi)2 k(rj,krˉj)2 k(ri,krˉi)(rj,krˉj)

      • 相较于余弦距离,皮尔逊系数做了中心缩放

    • 更新指数

      • r u , i = r ˉ u + ∑ v ∈ N ( u ) s i m ( u , v ) ( r v , i − r ˉ v ) ∑ v ∈ N ( u ) S i m ( u , v ) r_{u,i}=\bar r_u+\frac{\sum_{v\in N(u)}sim(u,v)(r_{v,i}-\bar r_v)}{\sum_{v\in N(u)}Sim(u,v)} ru,i=rˉu+vN(u)Sim(u,v)vN(u)sim(u,v)(rv,irˉv)

      • 其中, r u , i r_{u,i} ru,i表示用户 u u u对商品 i i i的得分, r ˉ u \bar r_u rˉu表示用户的平均分, v ∈ N ( u ) v\in N(u) vN(u)表示与用户 u u u最相似的邻居组

    举个例子

    Lion KingAladdinMulanAnastasia
    John3033
    Joe5402
    Jill1242
    Jane3?10
    Jorge2201

    我们现在要评价 J a n e Jane Jane A l a d d i n Aladdin Aladdin的评分,需要怎么做呢?

    1️⃣ 计算用户之间的相似度
    KaTeX parse error: Undefined control sequence: \ at position 82: …+0^2}}=0.73 \\ \̲ ̲\\ sim(Jane,Joe…
    2️⃣ 选择最相似的topk,并计算他们的平均分。例如,我们选两个:
    r ˉ j o e = 5 + 4 + 0 + 2 4 = 2.75 \bar r_{joe}=\frac{5+4+0+2}{4}=2.75 rˉjoe=45+4+0+2=2.75
    joe是个老好人
    r ˉ j o r g e = 2 + 2 + 0 + 1 4 = 1.25 \bar r_{jorge}=\frac{2+2+0+1}{4}=1.25 rˉjorge=42+2+0+1=1.25
    jorge给分不咋样

    3️⃣ 基于最近的邻居计算得分
    r J a n e , A l a d d i n = r ˉ J a n e + s i m ( J a n e , J o e ) ( r J o e , A l a d d i n − r ˉ J o e ) s i m ( J a n e , J o e ) + s i m ( J a n e , J o r g e )   + s i m ( J a n e , J o r g e ) ( r J o r g e , A l a d d i n − r ˉ J o r g e ) s i m ( J a n e , J o e ) + s i m ( J a n e , J o r g e )   = 1.33 + 0.88 ∗ ( 4 − 2.75 ) + 0.84 ∗ ( 2 − 1.25 ) 0.88 + 0.84 = 2.33 r_{Jane,Aladdin}=\bar r_{Jane}+\frac{sim(Jane,Joe)(r_{Joe,Aladdin}-\bar r_{Joe})}{sim(Jane,Joe)+sim(Jane,Jorge)} \\ \ \\ +\frac{sim(Jane,Jorge)(r_{Jorge,Aladdin}-\bar r_{Jorge})}{sim(Jane,Joe)+sim(Jane,Jorge)} \\ \ \\=1.33+\frac{0.88*(4-2.75)+0.84*(2-1.25)}{0.88+0.84}=2.33 rJane,Aladdin=rˉJane+sim(Jane,Joe)+sim(Jane,Jorge)sim(Jane,Joe)(rJoe,AladdinrˉJoe) +sim(Jane,Joe)+sim(Jane,Jorge)sim(Jane,Jorge)(rJorge,AladdinrˉJorge) =1.33+0.88+0.840.88(42.75)+0.84(21.25)=2.33


    3.Evaluation of Recommender Systems

    推荐系统偏向于数据导向,不同的算法在不同的数据集上会有不同的表现

    早期的工作中,人们比较关注准确性,后来呢,也逐渐重视用户满意度和性能。所以说,决定在比较评价中应采用何种综合措施是一项挑战。

    1️⃣ 平均绝对误差(MAE)
    M A E = ∑ i j ∣ r ^ i j − r i j ∣ n MAE=\frac{\sum_{ij}|\hat r_{ij}-r_{ij}|}{n} MAE=nijr^ijrij
    2️⃣ 标准平均绝对误差(NMAE)
    N M A E = M A E r m a x − r m i n NMAE=\frac{MAE}{r_{max}-r_{min}} NMAE=rmaxrminMAE
    3️⃣ 均方根误差(RMSE)

    更加强调偏差
    R M S E = 1 n ∑ i , j ( r ^ i j − r i j ) 2 RMSE=\sqrt{\frac{1}{n}\sum_{i,j}(\hat r_{ij}-r_{ij})^2} RMSE=n1i,j(r^ijrij)2
    4️⃣ 精度(Precision)
    P = T P T P + N P P=\frac{TP}{TP+NP} P=TP+NPTP
    用来评价模型本身的性能

    5️⃣ 召回率(Recall)

    完整性(覆盖率)的度量,更像在数据上的性能
    R = T P T P + F N R=\frac{TP}{TP+FN} R=TP+FNTP
    6️⃣ F-Score

    精确率和召回率互相影响,理想状态下肯定追求两个都高,但是实际情况是两者相互“制约”,此时需要综合考虑二者
    F = ( 1 + β 2 ) P ⋅ R β 2 P + R F=(1+\beta^2)\frac{P\cdot R}{\beta^2P+R} F=(1+β2)β2P+RPR
    β \beta β用于控制权重。

    7️⃣ 斯皮尔曼相关系数
    ρ = 1 − 6 ∑ i = 1 n ( x i − y i ) 2 n 3 − n \rho=1-\frac{6\sum_{i=1}^n(x_i-y_i)^2}{n^3-n} ρ=1n3n6i=1n(xiyi)2
    8️⃣ Kendall’s τ \tau τ

    • 按照预测顺序是否与实际顺序相同,计算得到consistentconcordant值,最终的结果为:

    • τ = c − d C 2 n \tau=\frac{c-d}{C_2^n} τ=C2ncd

  • 相关阅读:
    Redis实现并发阻塞锁方案
    Day2力扣打卡
    微信小程序如何进行推广传播
    Android 数据恢复的顶级软件分享
    关于嵌入式Linux做底层还是应用,要掌握什么技能
    Java中wait和notify方法的详解
    【科学文献计量】GC.networkCoInvestigator()和GC.networkCoInvestigator()中的参数解释
    git stash详解
    【目标检测】Flask+Docker在服务器部署YOLOv5应用
    【django2.0之Rest_Framework框架一】rest_framework序列器介绍
  • 原文地址:https://blog.csdn.net/qq_45957458/article/details/127944673